Jump to content

Catman2D - A Java and OpenGL Based Isometric 3D Game Engine

loganryan99

Hey guys! I thought I might add a little short bio thing of myself in-case any of you care. I am a 13 year old programmer, and I've been learning since I was about 8 or 9. I started off writing simple Visual Basic stuff (like a web-browser that's just an IE frame) and then moved on to find a game called Roblox. Roblox wasn't really just a game to me, though. Roblox was a place where I poured in a lot of my time, and eventually got way more than I could ever ask for back. Roblox is a game where you, well, create your own game. It has an implementation of Lua which lets you code in your own custom UI elements, physics events, etc. So, I went on through that, and it was really my first taste of real programming. It was the first time I was forced to write my own methods, write my own UI, well, write my own everything, basically. Long story short, I got bored of the game and moved on - with all my new knowledge of programming. I then went and learned Java, and here we are now :D.

Catman2D is basically a 2D Game Engine that allows you to change every aspect of your game, in the most open, understandable environment possible. Instead of creating my own compressed save format, Catman2D's maps and save files are 100% pure, uncompressed XML. I want people to be able to see what the editor is actually doing. Companies today usually try and push stuff like that under the table. They think that their engine technology is so complicated or whatever, and that no one really needs or wants to understand how everything works behind the scenes, that they just don't bother. Catman2D is a full gaming solution that allows you to see everything that goes on, and understand it, too. The entire source-code will be available under an open-source license (undecided).

On to the technical part, it's an engine that runs atop LWJGL for OpenGL and OpenAL, and the SlickUtil library for loading assets (not Slick2D). The system is set up to be as modular as possible, making it very easy to port to new platforms. Catman2D has a few major "branches" that all come together to create the entire engine. UI/Rendering, Logic, Input, and Javascript are the biggies. All of the branches are 100% independent from one another, and are united by a classed called "Framework". The Framework class does exactly what it sounds like, provides the framework for the branches to interface with each-other, as well as to your game. The Framework's basically the controller of everything.

[ATTACH=CONFIG]n3372[/ATTACH]

Click Image To Enlarge

Catman2D also has a WIP Javascript implementation. In the future, this will be used for mods for published games. It's a much cleaner solution than modifying core files of the game/engine, and is 100% redundant from everything else. So if one mod fails, it won't bring the entire system down with it. (cough fallout cough)

I can't really offer the library as a download yet, because it's very in-complete. (There's a lot of debug/unfinished code) I just re-structured the entire layout and flow of the engine, and converted from the Swing Canvas to LWJGL's OpenGL implementation over the past week. All of the code is basically being re-written (or already has been) because of how major both of these changes are to the entire system.

Later today I will contribute the source to GitHub, and let anyone who's interested go wild (although it will be completely un-documented and very un-finished).

Sorry for the big wall of text, I just wanted to make this thread to reserve a spot to discuss this new engine, and for anyone to ask questions about it now before it's released.

EDIT: GitHub Link is here: https://github.com/catman232/Catman2D

Source Code is uploaded, however it's very messy, and you'll have no idea how to use it until I start writing documentation for it. This is just to prove that I do have the engine!

Link to comment
Share on other sites

Link to post
Share on other sites

First I want to say that I am very impressed by what you did so far. Your code is very well structured, and even though it's in the early stages, It's obvious that you have looked at other game engines before and you have a good understanding on how to break up the code into classes that make sense, making good use of inheritance and abstract classes (IsometricObject -> Organism -> Player).

Also your introductory post is well written and shows a lot of maturity. I've been part of the HL2.net mod community from 2003 to ~2007, and let me tell you the number of threads I've seen that looked like this : "Hi, I am going to make a game. It's going to be like Starcraft but a lot better. I will be the MOD leader, I am looking for coders, graphic designers, level designers, texture artists and audio designer.". So this is very refreshing to see someone actually take the time to properly setup the project and do some work, you seem to have a good sense of where you are going with this.

I've looked at the code, and obviously since it's very early in development there isn't that much that I can say. However, I was looking at the loadMap function, and I saw that you were using the DOM to parse the XML. This is not a bad idea to use it at the moment, because it's quick and easy to use, plus your sample files will probably be very small, but in the long run I would highly suggest you use streaming parsers, because they are a lot more efficient. Using the DOM generally requires saving big chunks into memory and it's also CPU intensive, so if you are making a game and speed is one of the priorities, you may want to avoid that.

Anyway, I wish you luck in your project, keep us updated. :o

Link to comment
Share on other sites

Link to post
Share on other sites

First I want to say that I am very impressed by what you did so far. Your code is very well structured' date=' and even though it's in the early stages, It's obvious that you have looked at other game engines before and you have a good understanding on how to break up the code into classes that make sense, making good use of inheritance and abstract classes (IsometricObject -> Organism -> Player). Also your introductory post is well written and shows a lot of maturity. I've been part of the HL2.net mod community from 2003 to ~2007, and let me tell you the number of threads I've seen that looked like this : "Hi, I am going to make a game. It's going to be like Starcraft but a lot better. I will be the MOD leader, I am looking for coders, graphic designers, level designers, texture artists and audio designer.". So this is very refreshing to see someone actually take the time to properly setup the project and do some work, you seem to have a good sense of where you are going with this. I've looked at the code, and obviously since it's very early in development there isn't that much that I can say. However, I was looking at the loadMap function, and I saw that you were using the DOM to parse the XML. This is not a bad idea to use it at the moment, because it's quick and easy to use, plus your sample files will probably be very small, but in the long run I would highly suggest you use streaming parsers, because they are a lot more efficient. Using the DOM generally requires saving big chunks into memory and it's also CPU intensive, so if you are making a game and speed is one of the priorities, you may want to avoid that. Anyway, I wish you luck in your project, keep us updated. :o [/quote']

Thanks! And eventually I might add the option for a compressed format, and that will also include a new parser. Right now i'm removing the ImageLoader and MapLoader classes and changing it into an "Asset Management System" (if you will) that will cache and load assets properly. (Music, Saves, Maps, etc.) So I might just switch away from DOM now.

And again, thanks for the praise :D

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×