What is Scorpion Engine - earok/scorpion-editor-demos GitHub Wiki
Overview
The Scorpion Engine is a game engine and game creation tool that natively supports a variety of popular retro gaming systems that run on the Motorola 68000 processor.
Scorpion Engine is a virtual machine
A “virtual machine” is a kind of fictional computer or video game console. Since a real physical “Scorpion” games console does not exist, all Scorpion Engine platforms are a kind of emulator for that non-existent console.
Scorpion Engine is not unique as a virtual machine used for creating games on vintage systems. LucasArt’s SCUMM engine that powers games like Monkey Island is a virtual machine, as is Sierra’s competing SCI. Not all virtual machines are designed with multiple games in mind - some, such as Eric Chahi’s Another World engine, was used almost exclusively for that one game.
What is perhaps unique about Scorpion Engine is that, opposed to using bytecode (essentially, a fictional machine language for a virtual machine), the fictional Scorpion Engine console has a virtual 68K processor. As such, performance could be considerably quicker than most virtual machine driven games, at the cost of limiting portability to 68K platforms.
Scorpion Engine components
The Scorpion Engine is comprised of two major components, which are:
The editor
The Scorpion Engine editor is a utility written in the Unity engine, and runs on Windows 64 bit. It is designed to provide a simple, common sense and easy to use development environment.
The game engine
The game engine is coded in a mixture of Blitz Basic and 68K ASM, with the Blitz Basic code frequently being rewritten into ASM for improved performance. Additional toolchains have been developed in order for games compiled in Blitz Basic to run on Mega Drive or Neo Geo.
Scorpion Engine principles
There are three key principles underpinning the design of the engine are:
Principle 1: Performance
Scorpion Engine is designed to be highly optimized, and offer a level of performance comparable to games written in high level languages like C, as well as lower level languages like ASM.
The engine itself is coded in Blitz Basic, with a few key functions coded in assembly for speed. In addition, the editor compiles most user logic directly to 68K ASM.
Every time a new major release is published, we attempt a handful of optimizations (such as rewriting Blitz Basic code into pure assembly) and use the bundled “PerformanceTester” demo to quantify improvements.
On Amiga, graphics are configured in a highly performant “interleaved” setup, allowing single blit operations to target every bitplane at once.
This principle also extends to memory consumption, though fluidity is still a higher priority for the project. As such, many Scorpion games are designed to run on the standard 512K/512K memory setup for the Amiga 500.
Principle 2: Flexibility
Scorpion Engine is made to be flexible enough to support a large variety of game types, including: platformers, puzzlers, shoot em ups, racers, visual novels, adventure games and so on.
If a particular feature isn’t supported natively in Scorpion Engine, the intention is for the feature to be something a user can assemble themselves through codeblocks logic. By leaving out certain common game elements - ladders, crouching and so on - the engine is kept cleaner, lighter and easier to maintain, with the flexibility for those features to be added where needed by end users.
Principle 3: Ease of use
Scorpion Engine is designed to be easy enough for anyone to use. The widely popular Tiled level editor is used for creating maps. Standard WAV/MP3/OGG files can be used for sound effects. All graphics are in the universally popular PNG format.
Coding is done without needing to memorize syntax, through the “codeblocks” system that allows users to assemble lines of code through drop down lists.
In summary..
Scorpion Engine is designed to be easy enough for those who can’t program, flexible enough for those who can, and fast enough to be appealing to everyone who wants to bring a game to one of the supported platforms. For a development team containing artists, coders, designers and audio engineers, it’s designed to be used collaboratively by all of those groups together.
It is intended to be a retro orientated counterpart to widely used and popular game engines on modern systems like Construct and Game Maker Studio, bringing new games to those who hold retro systems dear to their hearts.