Playing with Murder
This is a post about a game engine called Murder.
I recently learned that some games that I really respect were made either partly or completely in GameMaker. This includes Öoo by NamaTakahashi and UFO 50.
I am impressed that such accomplished games were made in such a beginner-friendly tool. I've tried working in GameMaker with some success, and recently tried again, but ultimately bounced off of it. I think the main reasons are to do with the programming experience:
- heavy use of global variables, I end up with lots of names like
obj_building; - sprite editor could be better - difficult to import from aseprite;
- built-in APIs don't work as I would expect or are hard to learn e.g. grid APIs;
- lots of reserved keywords like
phy_speed,speedandgravity; - lots of places where I would expect to use vectors that don't;
- no (or at least not very strong) types;
- debugging experience is not great;
- not really suited to procedural generation - expecting map to be designed ahead of time.
I expect it's a beginner behaviour to worry about the tools that I want to use rather than focussing on the game that I want to make but whatever, I'm a beginner.
Introducing Murder Engine
I've been wanting to try out Murder Engine, which looks like the right level of stupid for me.
It provides a lot out of the box:
- built on top of FNA;
- ECS is built in;
- Aseprite assets are imported to game assets;
- dialogue and translation support;
- comes with an extensible editor;
- everything is in C# with its great type system.
It is being actively used to develop the game NEVERWAY and is primarily written by Isadora Sophia and Saint11.
This to me feels like I'm working in someone else's project where they have already written many of the small tools I would have worked on myself. I wrote an Aseprite importer for Monogame once - here I don't have to.
First impressions
I checked out the hello world project. After some work to downgrade my dotnet version to 8.0 I was able to get the editor up and running. It looks great.
The engine itself is imported as a git submodule which means I have access to the whole source code in my text editor immediately. If there is something I need to change I can easily modify it, especially in the game editor which lives as part of my codebase. I expect that if I used this engine it would be straightforward to contribute changes. It appears to have a nice discord community.
It was hard to know what to do next, there isn't much in the way of documentation and the hello world game doesn't do anything yet. I found a short series of video tutorials by Noah Petrides which helped get started wiring up the fundamentals. This series appears to be an expansion on some how-to guides which were also helpful.
I was able to start getting my own assets imported and I'm looking forward to coding up my own logic. The ECS is central to this engine so this is a paradigm I will need to get used to. I expect this will be suited to games with a complex heirarchy of entities or interactions between them.
Thank you for reading.
Please post any comments on this bluesky post.