🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Recommendations on rolling your own tech

Started by
15 comments, last by Edgar Reynaldo 5 years, 11 months ago

Hi everyone.
I guess this would be another one of 'those' questions.

I'm a .NET programmer and I've been developing games in Unity for 3 years now, and recently finished my 5th game. But in some sense, I feel like I've reached a barrier. I don't want to disregard Unity in any way, neither UE4 (that I used for a month or so), but in the last days, I'm feeling some urge to have more freedom in the development of my projects. That's when the idea of rolling my game from the ground up came back to mind.

Besides wanting to have more control over some low-level details of the game, I want a more close control over the scene system especially to use my own map editor. And obviously, I'm exciting by the learning perspectives.
If I use an engine again, I would go with Godot. And although I know I could expand Godot to my needs, that's unlikely to happen because I'll get easily overwhelmed by the engine and the lack of a good C++ API specific documentation (the engine one is good though).

So I'm here to ask for your personal opinion. I know C/C++ good enough to start, and I've already toyed around with OpenGL. I also love this topic and data-oriented approaches.
Should I use SDL, Allegro? Irrlicht, Urho, Ogre? Maybe build upon Cube or Torque? I'd like to learn while doing it, but how much work would be to write a simple render in pure SDL? And adding shadows or shaders?
Should I follow HandmadeHero maybe?

- I'm planning on Windows support, but with porting in mind. Starting with 2D and hoping on diving in 3D soon.
- I'm not building an engine, but a game.

Thank you all!

Advertisement
19 hours ago, M-Ody said:

So I'm here to ask for your personal opinion. I know C/C++ good enough to start, and I've already toyed around with OpenGL. I also love this topic and data-oriented approaches.

Should I use SDL, Allegro? Irrlicht, Urho, Ogre? Maybe build upon Cube or Torque? I'd like to learn while doing it, but how much work would be to write a simple render in pure SDL? And adding shadows or shaders?
Should I follow HandmadeHero maybe?

- I'm planning on Windows support, but with porting in mind. Starting with 2D and hoping on diving in 3D soon.
- I'm not building an engine, but a game.

Thank you all!

Personally I've used Allegro for over a decade, and it lets me do everything I want to without getting in the way. If you're looking for a lower level API with good documentation and lots of freedom, Allegro 5 is a good choice. I can't speak for other libs I've never used. You can use OpenGL and DX right alongside allegro, and there is support for shaders. https://liballeg.org . You get hardware acceleration, multimedia support, and event driven input, along with filesystem and archive support.

I would warn you though, that SDL, Allegro, etc... are all pretty low level. You're going to be missing a lot of functionality that comes from an engine or a framework. I've been developing my GUI library and extensions to allegro for a while now, and there's still plenty I would add.

https://handmadehero.org/

Episode 1: https://www.youtube.com/watch?v=Ee3EtYb8d1o

Edit: Oops, I should have paid closer attention, you already mentioned Handmade Hero. But yeah, I think it's probably the best resource available for learning to make games from scratch.

11 hours ago, Edgar Reynaldo said:

Personally I've used Allegro for over a decade, and it lets me do everything I want to without getting in the way. If you're looking for a lower level API with good documentation and lots of freedom, Allegro 5 is a good choice. I can't speak for other libs I've never used. You can use OpenGL and DX right alongside allegro, and there is support for shaders. https://liballeg.org . You get hardware acceleration, multimedia support, and event driven input, along with filesystem and archive support.

I would warn you though, that SDL, Allegro, etc... are all pretty low level. You're going to be missing a lot of functionality that comes from an engine or a framework. I've been developing my GUI library and extensions to allegro for a while now, and there's still plenty I would add.

I've heard a lot of Allegro and SDL on the "roll your own topic", and actually messed around with SDL for some time. I guess is worthless asking which of them is best, but I may give Allegro a try too.

 

25 minutes ago, D956 said:

https://handmadehero.org/

Episode 1: https://www.youtube.com/watch?v=Ee3EtYb8d1o

Edit: Oops, I should have paid closer attention, you already mentioned Handmade Hero. But yeah, I think it's probably the best resource available for learning to make games from scratch.

Yes, I'm restarting the series (episode 2 concluded 5 minutes ago). Last time I've started it I had two problems, my programming skills were low and so where my English, so I could barely understand him. 
I guess this is the way to go really, is a long journey if you look how many episodes it already has, but I guess in the end it is worth it.  

On 7/8/2018 at 9:29 PM, M-Ody said:

Yes, I'm restarting the series (episode 2 concluded 5 minutes ago). Last time I've started it I had two problems, my programming skills were low and so where my English, so I could barely understand him. 
I guess this is the way to go really, is a long journey if you look how many episodes it already has, but I guess in the end it is worth it.  

No, it's not.

I'm sorry to all the fans but HMH is an entertainment show with no relevance to reality. On the ground game development is a totally different ballgame, even in the indie world. By all means watch Casey if you want, but don't mistake it for a productive use of time or an educational product. It is not, and Casey's not qualified to teach anybody anything.

On 7/7/2018 at 2:24 PM, M-Ody said:

- I'm not building an engine, but a game.

This is the key point, because it really tends to discourage the "roll your own" path. I have a lot of problems with Unity and we don't (and couldn't) use it for our own work. But you need to be really careful about whether you're misusing a tool, using the wrong tool, or doing something which doesn't have good tools available. For starters, I'd tend to push you back to C#/.NET. It's a powerful and productive environment that you're clearly familiar with, and nothing in your stated needs or desires suggests a change to C++ is called for or helpful.

Assuming that Unity is indeed the wrong tool for what you want, it's worth looking at some of the 2D libraries available for C# already. 

Unfortunately I can't vouch for these selections and there are likely many other choices out there. But I feel like you've decided you don't like Unity and then gone much, much too far in the opposite direction.

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
2 hours ago, Promit said:

No, it's not.

I'm sorry to all the fans but HMH is an entertainment show with no relevance to reality. On the ground game development is a totally different ballgame, even in the indie world. By all means watch Casey if you want, but don't mistake it for a productive use of time or an educational product. It is not, and Casey's not qualified to teach anybody anything.

Out of curiosity, could you explain your point of view?

devstropo.blogspot.com - Random stuff about my gamedev hobby

11 hours ago, Strewya said:

Out of curiosity, could you explain your point of view?

I don't know how much more there is to say without digging into the series and cherry picking all the stuff I hate, and I got bored of that long ago. It's simply not representative of anything beyond a fanciful imagined time where people totally built stuff up from nothing. It's like a game-sized programming test rather than focusing on things that are actually productive. I just think it's a mistake to think that this is what a "real game programmer" does.

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
18 hours ago, Promit said:

No, it's not.

I'm sorry to all the fans but HMH is an entertainment show with no relevance to reality. On the ground game development is a totally different ballgame, even in the indie world. By all means watch Casey if you want, but don't mistake it for a productive use of time or an educational product. It is not, and Casey's not qualified to teach anybody anything.

This is the key point, because it really tends to discourage the "roll your own" path. I have a lot of problems with Unity and we don't (and couldn't) use it for our own work. But you need to be really careful about whether you're misusing a tool, using the wrong tool, or doing something which doesn't have good tools available. For starters, I'd tend to push you back to C#/.NET. It's a powerful and productive environment that you're clearly familiar with, and nothing in your stated needs or desires suggests a change to C++ is called for or helpful.

Assuming that Unity is indeed the wrong tool for what you want, it's worth looking at some of the 2D libraries available for C# already. 

Unfortunately I can't vouch for these selections and there are likely many other choices out there. But I feel like you've decided you don't like Unity and then gone much, much too far in the opposite direction.

Well...
Your comment got a lot of approvement, so I think you have a strong point.
Just to put something out of way, I don't particularly like being a .NET developer, is just something I put myself into and, you know, it pays the bills.
I really like C and I think is an amazing tool. People say it is less productive, and while that's definitely true in the sense of how much you can do in a day, I lose a lot of time on Unity just to make a game that doesn't trigger garbage collection every now and then. But then, I may be just an orthodox programmer.
I will look into your suggestions of course, but you really think that HMH has no point in being watched? Casey states very early that he doesn't think you need to do everything from scratch every time, but he thinks you need to do it once so you know what the frameworks/engines you use do.
I think you may have more disregard from people who think that what Casey does is what a real programmer does than from the things that Casey teaches. 
To summarize what you say, you think I should code on something that gets the job done, focusing in productivity and in shipping the game?
I don't want to invalidate your point, just trying to keep the discussion going.
I was looking into raylib, I may give that I try too.

I've used SDL and I would recommend it. As to your question:

On 7/7/2018 at 11:24 AM, M-Ody said:

I'd like to learn while doing it, but how much work would be to write a simple render in pure SDL? And adding shadows or shaders?

If you intend to use OpenGL and not use any pre-built graphics library (which is what I'm assuming here since you mentioned OpenGL), then you need to know that SDL and other similar low-level libraries simply provide you easy access to OpenGL API on your platform. so writing such a simple renderer would take roughly an equal amount of time no matter which library you choose in the end.

And to your other question:

On 7/7/2018 at 11:24 AM, M-Ody said:

Should I follow HandmadeHero maybe?

What is your priority? Is it shipping the game or learning how a game actually works?

If your priority is to ship a game, don't watch Handmade Hero and look for pre-built tools instead, there are plenty c++ game libraries out there.

If your priority is to learn, watch Handmade Hero, and I can tell you that it's worth it. 

A programmer interested in game technology. 

19 minutes ago, MonterMan said:

What is your priority? Is it shipping the game or learning how a game actually works?

Geez
I know I should be able to answer this question, but I don't. Of course I want to make games and of course I want to know how a game actually works! 
I'm amazed by Casey's style and knowledge, and the real world programmers that I most admire know a lot of under the hood stuff, although they use some libs.
Maybe I should do both, after all.
Speaking of C/C++, do you recommend a lib/engine that's not too big like Unreal but not too bare bones like SDL? Something like raylib maybe?
Thank you!

This topic is closed to new replies.

Advertisement