Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411491 Posts in 69371 Topics- by 58428 Members - Latest Member: shelton786

April 25, 2024, 03:17:26 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Your engine/framework of choice for making 2D games and why?
Pages: [1]
Print
Author Topic: Your engine/framework of choice for making 2D games and why?  (Read 697 times)
test84
Level 0
***


View Profile WWW
« on: January 05, 2017, 06:57:53 AM »

Hi,

I have experience with couple engines and frameworks but I see the pattern that most successful indie devs are turned into their own engines, Terry Cavanaugh, Matt Thorson, Tomm Reffins, Phil Fish, etc. And I find very few that use existing engines like Tom Francis, Adam Saltsman, etc. and I was thinking of writing my own engine on top of one of existing ones like MonoGame as I don't any of them still use Game Maker (Matt Thorson was a game maker user that is now using his own engine, Monocole) and this tells me maybe I should do that as well. Not a great programmer but if I should do it, I'll do it.

I've dabbled with Unity for past 4 years and released a couple games with it but it's not meant for 2D. As a Unity castoff I wandered towards Game Maker Studio because I've taught it for a lot of years and also version 2.0 is coming out and hopefully improvements there.

But it's really not easy to work with it. IDE has strange bugs, level editor as well. GML is a made up language that can act awkward at times and it's pricey at the moment (hopefully their licensing policy changes with 2.0 to be able to compete with free versions of Unity, Unreal and other open source solutions.).

So I was wondering what you guys use and/or would suggest and why. Hopefully we'll see different suggestions here as people have different needs and ideas, so everyone is entitled to their own opinion. Also some solutions feels better with some people due to their background, for example people with a background in Flash feel most at home with Haxe[Flixel], etc.

What I want from an engine/framework is:
  • Be free (if possible)
  • Does utilize a language I already know like C/C++/C#/Python/Ruby/Lua, etc
  • My current aim is PC again but multiplatform is a must.
  • Meant for 2D (Not an afterthought like Unity which added 2D after 8 years)
  • Fast development and deployment cycle as I'm a one man band and don't have much time.
  • Having an IDE and a Level Editor is hugely welcomed but I can get my head around customizing existing tile editors as I did with DAME before, I think!
  • Big community and documentation. I never forget the days that how I felt after discovering XNA was orphaned by MS and same happened with flixel (before getting picked up by HaxeFlixel people)

Thanks
« Last Edit: January 05, 2017, 07:06:05 AM by test84 » Logged

qMopey
Level 6
*


View Profile WWW
« Reply #1 on: January 05, 2017, 10:11:10 AM »

You may not be looking for answer like this, but here goes anyway! My choice is to use custom tech in order to do these things:

  • Less than 1 second compile time
  • Run-time hot-reloading of code; push a button in game and recompile + see changes while playing
  • High quality tools. If I am to spend 3 weeks learning how to use a level editor, parse its tile format, etc. I would rather just spend 3 weeks making a tool that solves exactly the problems I have. Odds are this custom tool is better, especially if it's a header-only library. These tools are often niche, esoteric, and one-off. But they bring high dev-efficiency and cut dev time down.
  • Full control over everything. This is the most important one. Ability to create absolutely anything. This allows a truly special and unique game to emerge by opening up all tech possibilities.
  • Fun. Personally I can't stand learning to use someone else's tool when something better can be made in equal time. My game will never be finished if I don't have fun while I make it.

To do this, personally I make single-file header libraries. I have found that finishing a library to the point where another professional can use it means the library is more or less "finished". Finishing the library all at once in one go turns out super helpful! A problem arose when swapping between tasks, sometimes revisiting tasks one, two, or 6 months old. Getting a brain back into an old thoughtspace takes a lot of time and energy. The old problem context needs to be rebuilt. Too much time was sunk into regaining old knowledge. So finishing a lib all at once keeps all the details in the brain, and making sure another can use it forces the quality bar very high. High quality bar means chances of revisiting are very low. For example my sound header tinysound will never need to be touched again, even if my game is not released within 10 years. It's finished and feature complete, without bugs. Just knowing this code is locked down puts my mind at ease, and helps to focus on other unfinished tasks.

If the library is public and has a permissive license, if someone else finds it useful they may just make a contribution. Then it's like someone else donates something valuable to your own game engine. For example tinysound (in link above) used to not do any pitch shifting. Them someone guy (from tigsource!) came along and added in some real-time pitch shifting, and it does not even adjust the sound's play length. Amazing.

If a header is written in plain-ish C it becomes trivial to port to other languages, or create call bindings into other languages. Some of my open source physics stuff has been ported to languages like Java, C#, C, and some other uncommon languages I don't recall. This is another benefit that could potentially help your game engine; having some extra ports or bindings laying around Smiley

And now my personal engine is nearly complete thanks to some single-file header libraries. Things like loading/saving pngs, atlas creation, loading/playing/looping sounds, sending data over a network with UDP, or reliable messages over UDP, SIMD/math etc. The one thing that I found a little difficult to make into a header was OpenGL, and windowing stuff. Creating windows, managing OpenGL, these seem difficult to generalize. Everyone wants to do something different. I will applaud anyone who can come up with a good single-header lib for either of these tasks. I think tigr came pretty close, but it's inactive for around a year now.

I was considering writing a blog post about "making a game engine in 2017" talking about the use of single-header libs to try and get more people to make more headers. Also hopefully this post inspires someone here to make one Smiley

After finishing up my netcode header I was thinking of making a tile collision header, then my engine will be complete.

Here are two resources for making single file headers: https://github.com/nothings/stb/blob/master/docs/stb_howto.txt, http://www.randygaul.net/2015/10/19/single-file-libraries-bundle-pl-incbin-pl/

HEADER HYPE Who, Me? Toast Right
« Last Edit: January 05, 2017, 10:24:18 AM by qMopey » Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic