I made my own game engine, inspired by you guys!

Hello everyone! First off, I want to say thank you for making this awesome engine! At first, I was doing research on how to make games the old fashioned way: 100% from scratch. Then I found this wonderful engine, and now I get to make games the not very hard way.

Now then, inspired by JMonkey, I decided to create my own 2D game engine called The Dingo Engine. I used some of the traits from JME to create Dingo, such as the physics object, a base class you extend for the main application, and a small asset loader (that is slightly disorganized at the moment). It’s currently in Alpha 0 right now. Why zero? Because to be honest, I haven’t finished testing it, so there may be some huge bug waiting to come out and bite me. But it’s up on Github and ready to be messed with.

This engine actually was created before I even had the idea of it. A loooooong time ago (last year), I made a game for a friend of mine. Within the 20,000 line glitchy mess of code (no, not all in one file. The biggest file was 13,000 lines) was a game engine that I made completely unintentionally. So I pulled all of that code out, polished it up and improved it, and the Dingo Engine was born. Then my computer crashed, erasing the entire physics engine forcing me to rewrite it. Then I decided to give the entire engine a complete overhaul, using JME as an example. Here is a screenshot of the result from months of hard work:

I used the same collision detection method as from the game Dingo originated from, which isn’t the best method (surrounding the solid objects with small rectangular hitboxes). It works, until you start applying forces larger than about 10 units. But then you can get rather funny results if you apply an absurdly large force such as 10000 units. I am researching better collision detection methods, and have come up with a few myself. But that can wait until I have a engine that works in it’s entirety.

The engine also has some other cool features, such as two types of AI: a person that just wanders aimlessly, and an enemy that actually follows a target. Both of these AI originated from the original game, and I gotta say, they’re pretty impressive considering my skill level at the time I made them. The engine also has support for animations, directional sound (still being worked on), triggers, spawners, and (drumrooooooooollllllllllllllllllllllllllll)… Doors and keys! Yeah!

In my original game, most of the code was used to create the levels. They could be as big as 500 lines per map! The engine now has a loader that reads a text file and creates a map object for you, saving tons of code in the game. Right now the map file is strange, and I may redo it. I am currently working on a map editor to speed up the creation of map files, but until I get that working, the files will have to be hand coded.

For assets, the only custom type is the map file. Sprites and everything else use standard image formats, and to create a properly skinned, animated person, you need two image files. One containing a set of images the person uses, and another used to separate them into individual skins. Soon I’ll make my own binary format for both the map and skin files, to make things faster and more organized.

And that is the Dingo Engine! It’s still not finished, and will have many more additions to come. I still also need to post tutorials on how to use the darn thing, but that’s easy. But it’s available to download, and is waiting for people to break it. You can grab a copy of the library and source code here: GitHub - FloppidyDingo/Dingo-Engine: 2D Game Engine for JavaFX
There is a tiny bit more info about it on IndieDB: Dingo Engine (I’ve always wanted to use this button!)

5 Likes

Hello everyone! I’ve made a few major updates to the Dingo Engine. (It’s about time!)

First off, I added a new collision detection mode that’s much much more accurate. But the only side effect is that it becomes more CPU intensive with bigger forces. But not by a whole lot. My quad core was only being pushed to 10% at forces of around 1,000 pixels per second.

I’ve also made plans for multimedia capability. With my own audio and video codecs. That’s going to take a while to get working, but it’s next on my to-do list. I’m also going to redo the audio section, because the current one likes to stop working for no reason at all.

I’ve also started a map editor for drag and drop creation of map files. No longer will one have to hand code the maps. I’m also (very slowly) adding tutorials to the Github Wiki thingy. I haven’t covered much yet, but it’s getting there.

For those who want to check it out, the github link is somewhere up there ^^^.

2 Likes

That’s pretty cool. Out of curiosity when you say your own audio/video codecs do you mean you wrote your own compression algorithms?

Wow, respect !
I am very interested in how you implement videos in your engine. It might be useful for jME too, because when I remember correctly there is only a non finished or deprecated version of this feature.

Alright, much continued success!

Nice project. Doing your own thing and all by yourself usually has the great benefit that you know everything inside - no ugly search for knowledge about obscure features from black box software. There are many engine parts (e.g. dyn4j for physics) which you could add from other people’s projects. But I think you aim at learning, understanding and making your own thing. Happy coding, :chimpanzee_smile:

For video, yes. For audio sorta. I was thinking of being able to take all of a game’s sound effects and put them all in one file. And then a separate file will contain a lookup table that lists which part of the file corresponds to each sound. I may use compression on the audio, if I can find a way to do it.

I’d love to share my video codecs with you guys. I just have to create a rendering pipeline for my Engine, and then I can begin writing the codecs. I was somewhat disappointed when I heard there was no complete video support.

That was a major point to this project, to learn. The Dingo Engine was made by trial and error. Everything was of my own design (I think, unless I copied an already existing design by mistake). I did look at examples to see how other people did something, and then I used that knowledge to create my own methods.

All sounds impressive. Good luck with this bit! I heard it’s a bit of a task :stuck_out_tongue:

Hey guys! I have updated the Dingo Engine a lot since last post, and it’s starting to look more like a game engine now. Here is what is different:

  • Completely redone multimedia system. The new implementation uses a port/socket scheme similar to what JSyn uses, so it’s easier to add effects and filters to your media and add support for multiple formats. It’s also synchronised by frame, so sound and visuals will never go out of sync

  • Added support for key presses in the Extension classes

  • uploaded the source code for the Map Editor

And then I have some things in mind for the next update, such as the Video codec i said i would make, changing the Map file format to XML, adding a particle system, and making a port for my 8 bit game console.

Also, when I have the video codec working and i have a good conversion program made, i will share it with you guys. So that way JME has a way to play video!!! YAY!

3 Likes

Can’t wait to test it. :grinning:
Thanks a lot @FloppidyDingo

Good work…

I hope I could see the examples of using your engine…

It is difficult for me to test your engine without any knowlege of it.

Could you post the examples of using it?

Yeah sorry about that, I’m slowly working on that. I just have school and family stuff so lately I haven’t had much time to work on it. But don’t worry, it’s on my todo list.

Oh yeah, and the tutorials I’m working on can be found here: Home · FloppidyDingo/Dingo-Engine Wiki · GitHub

So I need some help. Being that this is my last year of High School, things have been very hectic and so I haven’t been able to work on the Dingo Engine as much. But the map editor I made is extremely broken and messy, so I’m going to scrap it and make a new one. Being that I’m going to be extremely busy, I was wondering if anyone would like to help with the map editor? I can provide the XML format for maps, since the Dingo Engine is switching to XML. If anybody is interested, then let me know and I’ll fill you in on the details.

Also, I updated the tutorials, which can be found here: Home · FloppidyDingo/Dingo-Engine Wiki · GitHub

Woah, how did this even get on the top of the list? Did I miss something? This topic is pretty much obsolete, I’ve moved on from DE and am currently working on DE2…

Someone posted an advertisment in this thread, but it was quickly deleted. This is how it got on the top.

1 Like