Thread: Scorpion Engine
View Single Post
Old 21 May 2019, 09:15   #1
earok
Registered User
 
Join Date: Dec 2013
Location: Auckland
Posts: 3,542
Scorpion Engine

EDIT: Samples, along with a preview binary of the compiler, are on the Git repo. Feel free to download and have a tinker.

https://github.com/earok/scorpion-engine-demos

----


This is going to be bit of a ramble. I've been unwell lately, hopefully discussing what I've been working on will get me in better spirits.


I've been working on an engine (derived from my previous Kiwi's Tale/AlarCity work, which in turn will form the basis of the final AlarCity engine), and it's becoming another "easy" game maker tool for Amiga. There's three things about it in particular that (hopefully) set it apart.

1. It's designed first and foremost to allow the creation of games that run at 50HZ on A500. Granted, it's not perfectly optimised, but if you're not pushing things too much it'll be a playable game on a lower end Amiga. (And there are options for running your game at 25HZ, and there's no shame in that either - SWIV did of course).

2. The project compiler runs on Windows, and uses modern tools (Tiled for level editing, PNGs for graphics) for some things, classic Amiga formats (mod, 8svx, anim5s) for others. PNGs are converted through a user-defined palette into bobs and raw bitplanes - using the alpha channel to generate a mask.

3. It uses a simple to understand bytecode "virtual machine" (a small part of the functionality of Ink) manage things such as dialogue, branching logic and the game sequence. I'll go into that a bit more further down the post.

I've got a couple of projects I've been using as a test bed for the engine, one is a minor remake of a very very small part of the Zelda fan game "Return of the Hylian".

(Note, I'm not intending to do much more on the port. Maybe someone else can when the engine is finished, but I'm merely using it as an example and eventually tutorial for the engine)

[ Show youtube player ]

The actual download for the very small and inconsequential part of the game (no enemies yet) is at http://earok.net/games/ScorpionTest001.lha

I haven't released the actual compiler yet - asides from the current lack of support for proper enemies, I keep changing how the compiler works which in turn breaks backwards compatibility. Once it's a bit more stable and feature rich, I'll put it out there, I don't know when that'll be exactly.


Here's some code examples from the intro story near the start of the video.

Code:
=== PART1 ===
~music = mod_intro
~level = map_intro
~wait = 50
The Kingdom of Hyrule has been in peace since Link,<br>the last knight of Hyrule, had defeated the malicious<br>Ganon and reclaimed the precious triforce from him.
Fairly straight forward. The tilde ~ indicates we want to set a variable. So we're setting the music, the level, and making the game wait for 50 frames before moving on.

After that, we're simply indicating we want to show text. The <br> indicates where we want to insert line breaks.

Immediately after display the text, we want to pan the camera across to the next screen.

Quote:
=== INTROLOOP1 ===
{ camerax < 256 :
~camerax = camerax + 2
~wait = 1
-> INTROLOOP1
}
Here we just say - if the camera x position is less than 256 pixels across, we bump it by two pixels, wait for one frame, and then loop back to the start.

Within the game itself, we can trigger events that call back into the Ink script. Example, with the chest

Quote:
=== OPEN_SHIELDCHEST1 ===
~chest1opened=true
~sound=snd_happy
~player1_animation=link_pickupshield
You found a shield!!!<br><br>Your defence rises by one point.
~player1=link_shield
-> GAME
Here, we're saying we want to flag the chest1opened variable as true, play the happy sound, play the pick up shield animation, display some text, change the player's object to being link+shield, and then return control back over to the game engine.

That's it for now. I'll post some more random updates over the next few days.

Last edited by earok; 30 July 2019 at 02:47.
earok is offline  
 
Page generated in 0.05468 seconds with 11 queries