March 11, 2020

Thought I would talk a little bit about my workflow and how I came up with it. As computers have advanced since the mid 90’s, so have programming workflows and IDEs. Although the AMOS pro editor lacks things like code completion and lookups, I still think it’s pretty good for the time (better than a plain text editor). In a sense I view AMOS pro as the equivalent of Unity for the Amiga. If you’re making games you won’t find a more comprehensive package that allows you to focus on the actual game development and not be bogged down by technical details. I’m not a big fan of the basic language, but AMOS offers things like procedures which are a simple form of functions. You are also able to include separate files into your main source file similar to the #include preprocessor directive in C programs (although AMOS simply copy-paste’s the included files upon runtime).

Anyway, so I wanted to utilize as modern a workflow as possible. My first step was to modularize the code by dividing it into seperate files. Putting things like utility procedures into one file and game state implementations into another. Now my main file is pretty lean and all the different parts of the game are more encapsulated. I don’t have a 1000+ lines long file to scroll through. But I have more files to juggle and the editor does not make working with multiple files easy. The solution was to have multiple instances of the AMOS pro editor open in separate emulator windows. That way I can now flip between source files similar to how I would flip through tabs in a modern IDE.

The next thing I thought about was how to handle content and content creation for the game. The game requires a lot of data which I have in google spreadsheets. How do I get that into AMOS? Well, I made a little C# program that downloads the sheets as tab-separated text files. Those files are then loaded by a data handling api that i’ve created in AMOS which parses the data and exports it to a memory bank in binary format. These banks can then be saved and later accessed by the game. On top of that I have written a tool that loads IFF images and cuts them into parts which are then packaged for the game.

So these are the key points I’ve found have helped my workflow pretty significantly. Having become used to sleek modern development environments, I can definitely work with this setup.