A few months ago, while learning C to make applications for my Mac SE, I was challenged by my son to make a cool game that would work on those old 68k compact Macs.
I took the challenge but without knowing what sort of game I would make. Therefore, I started by understanding the concept of sprites; how to animate them, how to move them around. Then, I tried to understand collisions, then I realized that the my code would require a lot of optimizations in order to run correctly on a 68000 Mac. Therefore, from solving one problem to another and still having no clue about what my game would be, I ended up building a game engine which I called ClassicSprite and which I am releasing under a GPL v3 free software license.
It is still a work in progress and I still don't know the best way to publish the code, but I wanted to share a quick demo of a dummy game (an intro and 2 levels) I made with it. I worked very hard on speed optimizations. When launching, the engine pre-calculates as much data as it can to help improve performances (especially movement curves). Although the video shows it running on an SE/30 (my SE is not operational at the moment), the speed is the same on the SE.
So far the engine can handle:
- Sprite animations through sprite-sheets (loaded in the rsrc file)
- Sprite movements with built in easing curves (linear, sine, bounce, elastic...)
- Sprite Z position (automatically calculated for RPG levels)
- Forces (currently only gravitation)
- Collisions
- Events with callbacks for movements, animations and collisions
- Tiles to build the background
- Levels
- Visual helpers to help debug show collision areas
- A profiler showing FPS and memory state
In the future I plan to implement:
- Moving tiles
- Background scrolling
- Using the alternate screen when available (to optimize speed for background scrolling)
- Mouse drag and drop
- More forces (magnetic field)
- Audio
I took the challenge but without knowing what sort of game I would make. Therefore, I started by understanding the concept of sprites; how to animate them, how to move them around. Then, I tried to understand collisions, then I realized that the my code would require a lot of optimizations in order to run correctly on a 68000 Mac. Therefore, from solving one problem to another and still having no clue about what my game would be, I ended up building a game engine which I called ClassicSprite and which I am releasing under a GPL v3 free software license.
It is still a work in progress and I still don't know the best way to publish the code, but I wanted to share a quick demo of a dummy game (an intro and 2 levels) I made with it. I worked very hard on speed optimizations. When launching, the engine pre-calculates as much data as it can to help improve performances (especially movement curves). Although the video shows it running on an SE/30 (my SE is not operational at the moment), the speed is the same on the SE.
So far the engine can handle:
- Sprite animations through sprite-sheets (loaded in the rsrc file)
- Sprite movements with built in easing curves (linear, sine, bounce, elastic...)
- Sprite Z position (automatically calculated for RPG levels)
- Forces (currently only gravitation)
- Collisions
- Events with callbacks for movements, animations and collisions
- Tiles to build the background
- Levels
- Visual helpers to help debug show collision areas
- A profiler showing FPS and memory state
In the future I plan to implement:
- Moving tiles
- Background scrolling
- Using the alternate screen when available (to optimize speed for background scrolling)
- Mouse drag and drop
- More forces (magnetic field)
- Audio