Dinodeck is a game engine that aspires to let you make video games quickly and easily that run anywhere. (Anywhere being Mac or Windows machines). It's strongly inspired by a number of game engines I've used in the past.
It's not trying to do anything new but instead provides an easy way to iterate on game ideas.
Documentation is now available here for version 1.1.
Let's jump right in and show some code. Here's a simple program that writes "Hello World" to the screen.
LoadLibrary("Renderer") gRenderer = Renderer:Create() gRenderer:AlignText("center", "center") function update() gRenderer:DrawText2d(0, 0, "Hello World") end
Run Dinodeck with the above code set as the main script and you'll see a program like below. "Hello World" is written to the center of the screen.
You can change the program's code, while it's running, to say "Goodbye World". Change the code file, then press F2 on the Dinodeck window and it will hot swap the code. The program instantly changes from rendering "Hello World" to rendering "Goodbye World". This really speeds up game dev iteration. This isn't limited to code, you can add sprites and sounds at runtime and instantly see them in-game.
This download contains a simple Hello World project.
The source code is available here.
It is (to some extent) considered finished. (Though there are still many improvements that could be added and a few bugs to fix.)
It was made to scratch my own itch for a rapid game development environment. I've used it for game jams and also as the engine for the book How to Make an RPG.
Dinodeck can be quite hard to build because it uses a number of external libraries, it's cross-platform and I'm terrible at build scripts.
My advice would be to start with the small step_01 project, that's a simple game loop. If you can build this, you're more likely to be able to build Dinodeck.
Render to a Framebuffer I'd modify step_01 first to get this working. Rendering to a framebuffer means that buffer can then be used to draw the game canvas at different resolutions. This is now in. glScissor Support this would allow better menus. This is now in.
OGG SoundStreams The API is there but not the functionality. This would allow for streaming background music
Shader Support instead of the fixed function pipeline. This would need to be something like CG and also support hot-reload like the other assets. This is a big task!