Advertisement

My decade long search for a game engine

Started by June 24, 2019 02:18 PM
8 comments, last by mattkw80 5 years, 5 months ago

Hey everybody,

Was looking for some advice... I've found myself trying to find
a game engine I like, and 10 years later, still have not found it.

My goals in this:

1. To build a Terraria style 2d crafting game - only because I want to. (Not looking to go commercial).
2. To finally learn OOP properly.
3. To do all of this within notepad or a light weight IDE.

I've been programming for 20 some years, (business apps) -  have a ton of working business/forms software out in the world - 
but I've always avoided OOP - and have never been able to wrap my head around it - specifically - 
the part I don't get / don't like - is I seem to have to create every single instance of an object there will
ever be - in a main loop - and then bend over backwards getting all the other instances to interact with all the 
other instances.  But I'd like to finally 'get this'.  Pygame helped me come close. If anyone has a book or resource
they can recommend - that gave them an 'Ah-ha!' moment, please suggest it and I will read it.


I can program in C,  C# (though my OOP skills suck),  Python, VB, and LUA.

Here's a small sample of the engines I have tried:

Pygame:
I've had the most success with this - but eventually hit a performance wall. I like that you can use notepad
or something light weight, and get alot done in a short time - but as far as I know - 'Super Potatoe Bruh' seems to 
be as high as you can fly with this engine.

Python Arcade:
Also had alot of luck with this - but then my Linux version broke - and with it being a one man show,
it doesn't seem to be the direction to head long term.

Unity:
I don't like that it's controlled by a company via login - looking for something I know will be around for a long
time for certain, where I can't be locked out someday.

GoDot:  Seriously considering this - but worried I will be missing out on concepts that they hide from the user... pretty sure
this is not an engine for someone wanting to finally learn OOP done properly.  Don't super like that it's in an IDE, would prefer
to be working in flat files.

Lua Love:
Also had alot of good times here - but eventually hit a wall. I don't particularily like the language and would prefer to 
be working in something closer to what I see at work...  ie:  C#, Python, etc.

Monogame / C#:  
Got pretty far here too.  Then hit a wall trying to create a button, lol. Yes a button. Seemed to me at the time - hard things
we're easy and really easy things we're undocumented, and hard.  Though terraria was made in this as far as I know - so 
I know then engine's more than I really need.

Python Panda3d:
Was able to get pretty far in this too - but the limited content pipeline made it tough, and I'm more interested in 2D.

Python Pyglet:
Found the support to be lacking, harder to find examples and community help at the time.


Anyway - TLDR:

Can anyone suggest an engine something else I may not have tried?

I am willing to learn C++ or Java if need be.

Amateur want to be - Game Developer.

Just skimmed through the post quickly, what comes to my mind is that in 10 years, you could have already built a game engine and a terraria clone along with it (since you say that 10 years ago you already had 10 years of programming experience which is a lot). And why put so much emphasis on OOP? These days it is getting less and less popular, look into data oriented design instead. Anyhow, what matters more than anything is that you stick to one thing and finish making the game instead of coming up with excuses. (Sorry I didn't want to sound rude)

Advertisement

No all good.  I have jumped around alot.  But I think I've been playing with Toy languages.  Pygame and Python Arcade for example - won't have any AAA games out anytime soon - not that that is my goal...  but they don't even come close.

I have been reading / watching video on NOT using OOP as well...  I've got this far without it - but it seemed to be something you need to do - to write games.  I will look into Data Oriented Design,  see if I can figure out how to tie a game together that way.

I'm fine with instances, classes, encapsulation, inheritance,  etc. - done many books on it - but I get stumped when trying to make the whole thing come together.  Seems like the long way around to get the scopes to 'see' each other when needed in game.

I'll look into Data Oriented Design and maybe skip the OOP.

Thanks

Amateur want to be - Game Developer.

2 hours ago, mattkw80 said:

I'm fine with instances, classes, encapsulation, inheritance,  etc. - done many books on it - but I get stumped when trying to make the whole thing come together.  Seems like the long way around to get the scopes to 'see' each other when needed in game.

This video was very helpful for me in that regard. That static pointer to a current object is gold.

 

🙂🙂🙂🙂🙂<←The tone posse, ready for action.

5 hours ago, mattkw80 said:

Don't super like that it's in an IDE, would prefer
to be working in flat files.

I also have the impression you want to make your own engine.

Once i tried to show my son a bit of game programming, and i gave SFML a try. Turned out a nice library giving quick access to graphics, sound and network without being a full game engine that one might like or not. I was able to make a full game in some hours (it would take me longer do the same in Unity). For a 2D game i recommend it. Even if at some point problems would come up, you could easily do the low level stuff yourself, so you do not really depend on the library. (There are similar libraries, SFML is just the only one i know)

For the coding i use C++ with Visual Studio CE which is free and also guarantees no dependencies on anything (don't worry about the necessary registration.) C++ won't die, and using it makes sure your code remains portable and is not tied to any IDE, framework, engine or whatever.

5 hours ago, mattkw80 said:

I am willing to learn C++ or Java if need be.

Oracle seems to commercialize Jave more and more (it's not free anymore for commercial use, but i don't know details or wow this affects games). C# is a widely used alternative, but it's Microsoft so who knows what happens here.

But most importantly those are interpreted languages with garbage collection. If you worry about performance that's not acceptable - at least not for an engine IMHO.

C++ is fast and future proof.

 

25 minutes ago, fleabay said:

This video was very helpful for me in that regard. That static pointer to a current object is gold.

 

 

Thank you - maybe this will turn the light on for me, finally.  I'm missing a concept somewhere.

 

23 minutes ago, JoeJ said:

I also have the impression you want to make your own engine.

Once i tried to show my son a bit of game programming, and i gave SFML a try. Turned out a nice library giving quick access to graphics, sound and network without being a full game engine that one might like or not. I was able to make a full game in some hours (it would take me longer do the same in Unity). For a 2D game i recommend it. Even if at some point problems would come up, you could easily do the low level stuff yourself, so you do not really depend on the library. (There are similar libraries, SFML is just the only one i know)

For the coding i use C++ with Visual Studio CE which is free and also guarantees no dependencies on anything (don't worry about the necessary registration.) C++ won't die, and using it makes sure your code remains portable and is not tied to any IDE, framework, engine or whatever.

Oracle seems to commercialize Jave more and more (it's not free anymore for commercial use, but i don't know details or wow this affects games). C# is a widely used alternative, but it's Microsoft so who knows what happens here.

But most importantly those are interpreted languages with garbage collection. If you worry about performance that's not acceptable - at least not for an engine IMHO.

C++ is fast and future proof.

 

JoeJ  -  I think that might be just what I need.

I wouldn't say I want to make an entire engine....   that's way beyond my ability and amount of time I can spend.  But SFML could be the library I've been looking for  - and that's where I'm headed next.  I'll dust off some C++ books and try some SFML.

Amateur want to be - Game Developer.

Advertisement
15 minutes ago, mattkw80 said:

I wouldn't say I want to make an entire engine....   that's way beyond my ability and amount of time I can spend.  But SFML could be the library I've been looking for  - and that's where I'm headed next.  I'll dust off some C++ books and try some SFML.

Yeah, i guess this is very close to pygame then although i don't know that.

6 hours ago, mattkw80 said:

Pygame:
I've had the most success with this - but eventually hit a performance wall. I like that you can use notepad
or something light weight, and get alot done in a short time - but as far as I know - 'Super Potatoe Bruh' seems to 
be as high as you can fly with this engine.

I'm pretty sure it's harder to get going with C++ initially. Not because of the language, but because hurdles like setting up include directories, libraries, debug and releasy builds etc. This sucks, but after you have a Hello World window you're done with that for a while. (Likely SFML has such a hello world project you can use to start from there.)

About performance, likely the main issue is dynamic memory allocation. For business software (but also offline tools for game dev) you use that without any worries, but for the game runtime this can quickly kill perfomance. Things like dynamic sized vectors or list containers, maps, queues etc. are usually implemented using dynamic allocation, also in the C++ STL. So as a game developer you often try to avoid using this, implement yourself using preallocated fixed sized memory, or use with caution (e.g. yes for gamplay code but no for engine code, similar to like big engines offer slow but easy scripting on top engine implemented in fast C++).

The second thing is caching: You want to process stuff so it accesses memory in linear order and does not jump around.

Maybe that's the main difference between games and other software where you just care about algorithm time complexity.

 

7 hours ago, fleabay said:

This video was very helpful for me in that regard. That static pointer to a current object is gold.

 

Just watched this - and it's great thank you.  This IS the exact type of problems I am having.

6 hours ago, JoeJ said:

Yeah, i guess this is very close to pygame then although i don't know that.

I'm pretty sure it's harder to get going with C++ initially. Not because of the language, but because hurdles like setting up include directories, libraries, debug and releasy builds etc. This sucks, but after you have a Hello World window you're done with that for a while. (Likely SFML has such a hello world project you can use to start from there.)

About performance, likely the main issue is dynamic memory allocation. For business software (but also offline tools for game dev) you use that without any worries, but for the game runtime this can quickly kill perfomance. Things like dynamic sized vectors or list containers, maps, queues etc. are usually implemented using dynamic allocation, also in the C++ STL. So as a game developer you often try to avoid using this, implement yourself using preallocated fixed sized memory, or use with caution (e.g. yes for gamplay code but no for engine code, similar to like big engines offer slow but easy scripting on top engine implemented in fast C++).

The second thing is caching: You want to process stuff so it accesses memory in linear order and does not jump around.

Maybe that's the main difference between games and other software where you just care about algorithm time complexity.

 

You are correct Joe - Ive never in the past had to consider such things.  The closest I've ever had to come would be to make sure servers or databases aren't 'hit' too many times too often, but other wise yeah, a form just sits there and waits for users to click it - no real performance issues like a game has.

I am going to head down the SFML road, see where I get with it.  If I can't make something I like in C++  ...  it will only be my fault, won't be able to say the tools hit a wall at that point, lol.

 

Amateur want to be - Game Developer.


I chickened out.  SDL and SFML are a bit too hard core for the tinkering I want to do at this time.

Though not  OOP  in nature-   I'm going back to Lua Love2D, now that I'm getting my head around scoping.
I've already done everything I can do in PyGame - much easier - and the performance is far superior.

 

Amateur want to be - Game Developer.

This topic is closed to new replies.

Advertisement