Building Storm! Engine - and the Games I Want to Make With It
I always wanted to be a software engineer.
Then I joined the Army, and for a while I did not touch a computer much at all.
Before that, I grew up during the NES, Sega Genesis, Sony PlayStation, and Sega Dreamcast eras. Video games were always part of my life. I loved playing them, but I also kept wondering how they worked and whether I could make something of my own. Almost 30 years ago, I built a terrible tic-tac-toe game called Catz 'n Dogz on the Sega Dreamcast. It was not good. It did not need to be good. It was the first time I had made a game on a console, and it showed me that making games was something I wanted to keep doing. That path eventually led to me becoming a software engineer; my day job is TypeScipt, Python, and cloud native software. But ultimately, I was able to bring 20 years of experience in software engineering to the creation of Storm! Engine v2.

What Storm! Engine Is & Why I Built It

C++ made me want to make my life easier. I kept solving the same problems: rendering, input, collisions, asset loading, state management, cross-platform builds. So I collected the solutions in one place. That collection became Storm! Engine v2.
Storm! Engine is a lightweight 2D engine (C++/SDL2) for game jams, personal projects, and experiments. It gives you:
- Sprite rendering, cameras, layering, flipping
- Tilemaps + built-in tile editor
- Box/circle colliders, contact detection, collision callbacks
- Textures, fonts, sounds via an asset store
- Text drawing helpers
- Game-state machine
- Keyboard, controller, touch, virtual gamepad input
- UDP networking (reliable + unreliable)
It uses an ECS architecture (entities = handles, components = data, systems = logic) but does not own your main loop. You control input processing, state transitions, system order. Building blocks, not a framework.
I didn't build it because the world needs another engine. I built it because I wanted a foundation shaped around the games I want to make. Unity and Godot felt like overkill. It also became a learning vehicle for how to do what I already knew but target it for C++ game development: tests, build systems, platform quirks, file formats, debugging. The engine taught me a lot.
The engine is also very open to AI-assisted workflows (vibecode.game), which has seem to be growing the past few months. Large Language Models don't replace understanding but accelerate exploration. AI-generated testing tools have sharpened my own BDD process, and I'm really in the camp that we are better off for it existing. I just don't like the way American tech companies are going about things but that's a discussion for another day.
So, if Storm! Engine helps someone learn, ship a jam game, or prototype an idea, it's done its job. No matter how you do it. The source code is yours to own.
The game behind the engine
The biggest reason Storm! Engine kept growing is Center Ice Hockey.

I have been hacking at CIH in one form or another for about eight years. I still remember writing the original design document like it was yesterday. Told myself "this will take about 7 years to complete, I'm ok with that". Well, it took another year. A lot of the game has changed since I started, but the idea has stayed alive long enough to become a living world itself instead of a simple prototype.
It's now almost autumn of 2026. The origin of my love of hockey and this time of year is simple: I was 15 when I rented NHLPA '93, got hooked, and started watching CBC and Hockey Night in Canada on our old satelite system every Saturday night from my dad's house in South Carolina. That combination of arcade hockey, sports presentation, and long-term attachment never really left me.
Center Ice Hockey is inspired by the early-1990s Genesis and Mega Drive hockey games, especially the feel of that era, while reaching toward the deeper customization and management systems found in later PC sports games. The simulation is the part I am most proud of. I can get addicted to playing my own game. My friends can too. That is probably one of the best tests I can ask for. The goal is not just to make something that played exhibition games. I am building a world: teams, rosters, leagues, seasons, franchise decisions, and the feeling that your choices carry forward.

Still, there is a lot of work to do before it is ready but I am almost ready to release a beta version. I want to get it into the hands of people who want to play it and give me feedback. That is the only way I will know whether I am on the right track and what to improve on. Online play inspired by modes that Electronic Arts dropped. Not in beta until it's solid. It's not ready.
What's Next for Storm! Engine
Hard part is out of the way: I needed CIH on a solid foundation even though the game predated the engine so they mature together early on. So I spent the last three months getting the engine into a state where I can build more games on top of it.
Version 2.0.0 fixed problems that had been waiting for the right moment. Old entity handles gained generation information. The component limit increased from 32 to 64. Several types became non-copyable because copying them could corrupt ownership. The engine began reporting common mistakes that had previously failed silently.Carrying old problems was starting to cost me time so getting the engine to version 2 was definitely needed.
Roadmap: better diagnostics, clearer docs, stronger tests, more real games. Smaller showcase games to stress-test the engine.

After CIH: Total Futbol
Next up is another sports simulation, Total Futbol. Built on everything CIH teaches: rules, rosters, schedules, customization, persistence, presentation, the systems under the match.
Other sports simulations may follow too. I have ideas, but I do not want to announce a list of games before Center Ice Hockey is where it needs to be. I will always work on CIH and I will always give these updates away freely. Still, I think there is room for sports games that focus on customization, simulation, and building your own world. That is the direction I want to explore. Open sourcing these ideas is definitely on the table because I want to collaborate with other people to make something beautiful. The "beautiful game" is perfect for that.
Try It
Download it. Read the source. Break it. Make a small game. Make something strange. Use it for a prototype, a game jam, or a project that only makes sense to you.
Feedback wanted. PRs welcome.
This started as a way to make my own life easier. It became a labor of love because of Center Ice Hockey. Now I want it to be useful to other people too.
There will be more games, more mistakes, more thngs to fixes, and more things I did not plan to build. Hopefully, there will also be more people learning from it and making something of their own.
That is enough of a future for me
- Storm! Engine v2: samswebs.github.io/storm-engine-v2
- Center Ice Hockey: samswebs.github.io/center-ice-hockey
