AuthorTopic: 2d Development Frameworks/suits/engines  (Read 3372 times)

Offline wzl

  • 0010
  • *
  • Posts: 266
  • Karma: +1/-0
    • View Profile

2d Development Frameworks/suits/engines

on: December 30, 2015, 04:46:47 pm
Recently i've been looking around for something that would suit my needs for development.
Normally i'm the type of person who just writes the stuff he needs himself, but i thought i'll save myself the trouble and use something someone else built. Turns out at this point i'm considering writing it myself again.
I'm aware that a good bunch of you are developers yourself so i might also ask in here, what are your personal favorites for 2d game development? May it be an engine, a framework or a complete suite.
Keep in mind this is highly subjective and based on my own experience only.
Feel free to add to this list, make counterpoints, or just ramble as i like to do :D

LoVE
Lua based scripting, really bad documentation, lacks some key features (or documentation thereof), lacks debugging

SFML.net
Provided samples are broken, runs on OpenTK, so why not use that?!

Otter2d
Samples broken, runs on SFML, [...]

Haxe
Uses some as3 mutant script language, doesn't seem to have a functional debugging last i checked. Seems fine otherwise.

Unity
3d centric. i dont feel it's suited for 2d/pixel based games all that well. Same with unreal engine (plus its a bit overkill innit)

Pico8
Fantasy console, uses lua, interesting concept, too tight restrictions. not suited to make actual games.

Offline Ambivorous

  • 0010
  • *
  • Posts: 308
  • Karma: +2/-0
  • If you can't do; inspire.
    • ambivorous
    • http://pixeljoint.com/p/47949.htm
    • ambivorous
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #1 on: December 30, 2015, 05:11:35 pm
You basically called me by name, so I had better reply.

SharpDX
Used with C# (which can be a pro or con depending on who you are).
I recall resources being fairly difficult to get hold of (because there's a lot of nonsense inbetween), but a lot of people use it, so nothing stack overflow can't solve.
If you feel like you want to write your own stuff to get down to the nitty gritty, but know that there are a lot of things you don't want to rewrite then having a library is a good idea. This way you get to do cool things like manage your GPU's memory and pretend you're a wizard.
Basically you're using C#, and OpenGL, but it just so happens you can skip a few things.

Allegro 5
If for no other reason this framework is good for beginners because there are tutorials. Like this one.
Nothing magical, but it's very little work and uses C++.
* may contain misinformation

Offline Digivoxel

  • 0001
  • *
  • Posts: 24
  • Karma: +0/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #2 on: December 30, 2015, 05:22:25 pm
One of my guilty pleasure's is BYOND

BYOND
Very introductory to languages, if you learned OOP, you should be able to pick up this game quite easily. Art assets, maps, and etc are handled well in the engine. Plus it's extremely easy to port over to online-multiplayer. I would say that's probably the best part, if you're interested in learning about online development.

Cons
The library is flooded with resources from 2007 that either don't work, or straight up have no comments about variables or procs. Also previous games that you made will eventually break with updates to the system.

Offline AlexHW

  • 0100
  • ***
  • Posts: 1029
  • Karma: +0/-0
    • View Profile
    • AlexHW

Re: 2d Development Frameworks/suits/engines

Reply #3 on: December 30, 2015, 06:25:21 pm
If you're just interested in making games and finishing them, and not trying to do anything super crazy, then I would take a look at:
Construct2
Very easy to make stuff really quickly, and you can expand it with plugins or write your own. Has an active community and lots of examples.

Offline wzl

  • 0010
  • *
  • Posts: 266
  • Karma: +1/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #4 on: December 30, 2015, 06:41:41 pm
Allegro 5
If for no other reason this framework is good for beginners because there are tutorials. Like this one.
Nothing magical, but it's very little work and uses C++.

Easy to use high level library with straight forward 2d rendering, even hardware accelerated?! sold!
Guess i'll get familiar with cpp again.

In all honesty, i'd use gdi+ if it were not so horribly slow ;/

Offline Gil

  • 0100
  • ***
  • Posts: 1539
  • Karma: +1/-0
  • Too square to be hip
    • http://pixeljoint.com/p/475.htm
    • View Profile
    • My Portfolio

Re: 2d Development Frameworks/suits/engines

Reply #5 on: December 30, 2015, 08:20:12 pm
Personally I think that any game that's not on the web today is slightly behind the curve before development even starts. On the other hand, Steam greenlight being an open door these days levels the playing field quite a bit. Personally, I haven't found a game engine I really like yet, that hands me the control I really want. AlexHW can probably tell you more about that :)

Offline API-Beast

  • 0010
  • *
  • Posts: 255
  • Karma: +0/-0
    • API_Beast
    • http://pixeljoint.com/p/35725.htm
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #6 on: December 30, 2015, 09:29:39 pm
Well, in the last 5 years of C++ I haven't found any really good engine for 2D games. That said, SFML is the most robust solution. To make 2D games all you need is display graphics, play sounds and get input, which SFML all provides in a way that works on all platforms.

I work on a small library I called Springbok to improve the situation a little, but it takes time. I have a high performance renderer for sprites, but it still doesn't work on AMD GPUs and I wanted to rewrite it anyway, so it will remain unusable until Vulkan is released. (Unless someone here is a kick-ass OpenGL coder that uses a AMD GPU and wants to help me.)

Regarding Web, you can compile C++ to Javascript via emscripten, but I don't know if it works with SFML right now.
« Last Edit: December 30, 2015, 09:33:06 pm by Mr. Beast »

Offline Gil

  • 0100
  • ***
  • Posts: 1539
  • Karma: +1/-0
  • Too square to be hip
    • http://pixeljoint.com/p/475.htm
    • View Profile
    • My Portfolio

Re: 2d Development Frameworks/suits/engines

Reply #7 on: December 30, 2015, 09:33:10 pm
You can compile C++ to Javascript via emscripten, so yes, you can run it in the browser.
I highly prefer Javascript as a language over C++, but that's neither here nor there. As far as I can tell, emscripten does work fine, but you need to constantly check if performance is okay and if it wants to compile, I wouldn't just create a whole game to find out it's problematic with emscripten.

Offline API-Beast

  • 0010
  • *
  • Posts: 255
  • Karma: +0/-0
    • API_Beast
    • http://pixeljoint.com/p/35725.htm
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #8 on: December 30, 2015, 09:43:40 pm
You can compile C++ to Javascript via emscripten, so yes, you can run it in the browser.
I highly prefer Javascript as a language over C++, but that's neither here nor there. As far as I can tell, emscripten does work fine, but you need to constantly check if performance is okay and if it wants to compile, I wouldn't just create a whole game to find out it's problematic with emscripten.

That's not really a issue for 2D games. For one human Javascript is much slower than the one Emscripten creates, so even though Javascript is slower than native C++, it will still be a lot faster than if you had written the game in Javascript in the first case. The other is that our PCs are "overpowered" for 2D games, so if you run into performance problems you are doing either very expensive stuff like fluid simulation or doing something very wrong, not a issue you normally run into.
« Last Edit: December 30, 2015, 09:47:21 pm by Mr. Beast »

Offline Gil

  • 0100
  • ***
  • Posts: 1539
  • Karma: +1/-0
  • Too square to be hip
    • http://pixeljoint.com/p/475.htm
    • View Profile
    • My Portfolio

Re: 2d Development Frameworks/suits/engines

Reply #9 on: December 30, 2015, 09:56:25 pm
For one human Javascript is much slower than the one Emscripten creates, so even though Javascript is slower than native C++, it will still be a lot faster than if you had written the game in Javascript in the first case.
This is just simply not true. I don't see how Emscripten would create more efficient javascript than I would. I mean, it probably will shave off a few cycles, but I can probably shave those off with a Javascript optimizer too. And it will never be "a lot faster", unless I really screw up. That is, unless I compile to ASM.js, which is already a dead idea, as Chrome (a browser everyone uses basically) doesn't intend to ever support it, unless I missed some major news.

Offline API-Beast

  • 0010
  • *
  • Posts: 255
  • Karma: +0/-0
    • API_Beast
    • http://pixeljoint.com/p/35725.htm
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #10 on: December 30, 2015, 10:20:44 pm
@Gil:
The main difference is that it is using typed arrays exclusively, whose usage the Javascript interpreter can optimize heavily. A human would use plain old dynamic Javascript variables pretty much anywhere.

Also C++ is static typed and as such can be optimized ahead of time, since Emscripten is using Clang these optimizations are fairly advanced and can eliminate a lot more code than any Javascript preprocessor could.

And yes, it did use ASM.js at some point, but not sure if that is still the case.
« Last Edit: December 30, 2015, 10:22:20 pm by Mr. Beast »

Offline Atnas

  • Moderator
  • 0100
  • *
  • Posts: 1041
  • Karma: +2/-0
  • very daijōbs
    • paintbread
    • clement.wolfram
    • paintbread
    • View Profile
    • lolipopsicle

Re: 2d Development Frameworks/suits/engines

Reply #11 on: December 31, 2015, 12:32:00 am
Gosu: C++/Ruby development library. Super easy, super fun. Used it quite extensively and made my own engine/map editor as well as other tools and prototypes with the ruby library a few years ago. Still use it now and then. https://www.libgosu.org/

Godot: Open source 3D/2D node based game engine. Think if Unity actually had a proper 2d engine and a python-esque scripting language. Only lacking documentation. Been using it for various things, I really like it. Uses either C++ or GDscript, which is easy to learn. http://www.godotengine.org/projects/godot-engine

Offline wzl

  • 0010
  • *
  • Posts: 266
  • Karma: +1/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #12 on: December 31, 2015, 12:36:04 am
Personally i don't care one bit about web capabilities for games. I don't want to play games in browsers.
That said, i have to agree that it's nice sometimes for smaller games. The flash-game era was glorious and spawned quite a number of great things.

I did some experiments with allegro tonight. After some struggles with setting up for vs2010 and finally migrating to vs2015 (which was super ezpz with nuget) i must say i'm quite satisfied with it so far.
Granted, you have to write your own systems with it (input management, sprite handling/animation), but i don't mind that. The rendering capabilities are straight forward and apparently really fast. API reminds a little of gdi+ actually in its simple-ness. Input handling works well, although i didn't check for gamepad support yet.
You have primitive rendering available out of the box which is super nice to have for prototyping, font rendering with ttf support. The only thing that i haven't stumbled upon is music playback. I read about midi support, but nothing besides that. Would love some xm/it playback if not ogg streaming.
So far it supplies me with everything i need. I'll continue to work with it, even if my cpp skills are hella rusty.

Thanks for mentioning it ambi!  ^-^

Offline Atnas

  • Moderator
  • 0100
  • *
  • Posts: 1041
  • Karma: +2/-0
  • very daijōbs
    • paintbread
    • clement.wolfram
    • paintbread
    • View Profile
    • lolipopsicle

Re: 2d Development Frameworks/suits/engines

Reply #13 on: December 31, 2015, 12:44:38 am
Re: HTML5

I think if you don't intend to sell your game, and are instead looking for exposure, HTML5 is extremely helpful in that regard, as it removes the download barrier.

Also most browsers, consoles, phones etc can play HTML5 games, so it has become a single click deploy option.

@wzl, what if the game was in a wrapper that you played from your desktop, does that change if you care for the game? :lol:

Offline wzl

  • 0010
  • *
  • Posts: 266
  • Karma: +1/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #14 on: December 31, 2015, 12:58:52 am
Thats true, web based games are excellent for game jams as well, simply because of the lack of barriers.
The multi-platform aspect is a good point as well.

@atnas
mind you, i didn't say i don't care about the games. I don't want to play web-based, in browsers. I want an offline available standalone desktop application.  ::)


turns out theres a dumb mod library for allegro   :yay:


Oh yeah:

Flashpunk
Library for developing in flash. As3 has its own quirks and things you have to get accustomed to. It doesn't hold up to an actual programming language and you're bound to the proprietary platform that is flash, if you dont mind that. Other than that it was quite fun to work with. Nice capabilities and visual runtime debugging tools (visualization of hitboxes etc). In the end the fact that it's flash made me stop using it.
As an aside, there is also HaxePunk, which is basically the same, but for Haxe.
« Last Edit: December 31, 2015, 02:34:04 am by wzl »

Offline Gil

  • 0100
  • ***
  • Posts: 1539
  • Karma: +1/-0
  • Too square to be hip
    • http://pixeljoint.com/p/475.htm
    • View Profile
    • My Portfolio

Re: 2d Development Frameworks/suits/engines

Reply #15 on: December 31, 2015, 12:30:10 pm
The main difference is that it is using typed arrays exclusively, whose usage the Javascript interpreter can optimize heavily. A human would use plain old dynamic Javascript variables pretty much anywhere.
Ah yes, I could see how typed arrays make everything a lot faster. I'll make a mental note to make myself a small library for those if I ever do something that needs to be faster.

Offline Atnas

  • Moderator
  • 0100
  • *
  • Posts: 1041
  • Karma: +2/-0
  • very daijōbs
    • paintbread
    • clement.wolfram
    • paintbread
    • View Profile
    • lolipopsicle

Re: 2d Development Frameworks/suits/engines

Reply #16 on: December 31, 2015, 05:14:30 pm
@atnas
mind you, i didn't say i don't care about the games. I don't want to play web-based, in browsers. I want an offline available standalone desktop application.  ::)

Apologies for misreading what you typed.

It's interesting, I notice I feel this way myself for certain games as well. I think it has something to do with method of consumption. A browser represents a window for information. Traditionally we consumed games as physical media, giving them a physicality that establishes them as an object in our minds. Our feelings for games are easier assigned when we have an object. Like a pet or possession, it belongs to you, you can touch it, etc. That game is silicon, its plastic, its in your hand, you traveled to purchase it, you must put it away when you're done or you'll misplace it. Value.

Downloads definitely have a bit of that physicality to them, getting that weighty zip and uncompressing it, or installing it, feeling like you own the game, now you can touch and enjoy it. Well, you can't. But definitely more than you can if you just click a link and the game is right there. As disconnected as a lets play, you are just looking at the game, you do not feel as though you possess it.

Offline Digivoxel

  • 0001
  • *
  • Posts: 24
  • Karma: +0/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #17 on: December 31, 2015, 11:15:51 pm
@atnas
mind you, i didn't say i don't care about the games. I don't want to play web-based, in browsers. I want an offline available standalone desktop application.  ::)
Stuff about Browsers or something

To add on to what @Atnas said, @Wzl a lot of browser games can be played offline ;) Of course you would need to have that browser.

A good example of this is google chrome. If you have google, turn off your internet. Then on the browser attempt to go to google.com. You should see a dinosaur. Press Space I think twice and you'll be playing a browser game offline ;)

Offline Kasumi

  • 0010
  • *
  • Posts: 269
  • Karma: +1/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #18 on: January 03, 2016, 01:19:39 am
SDL: Pretty similar to Allegro which was already posted earlier in this thread. It provides cross-platform ways to do things like draw stuff, resize windows, whatever. For use with C(++). I forgot why I chose it over Allegro, but I've used it to make level editors and tiny client prototypes.

Some of the input stuff's a little weird at first (reading keyboard keys), but I've never found myself frustrated with what it provides. Here's a basic tutorial set.
I program NES games. Thus, I'm the unofficial forum dealer of too much information about the NES.

Offline ErekT

  • 0010
  • *
  • Posts: 329
  • Karma: +0/-0
  • fistful of pixels
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #19 on: January 03, 2016, 10:49:33 pm
Construct2 is really nice. I've tried a few high-level languages and game creation thingies and none of them come close for getting stuff done fast.

Monkey-X is also pretty great. High-level language along the lines of Love.

Offline Seefour

  • 0001
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #20 on: January 04, 2016, 01:31:19 am
I am currently using Unity2D with c#, and tiled (can assemble tilesets into maps, and then import into Unity with Collision)

I have tried Love, Python, C++, and I am currently settling on C#.

Scripting in Unity is very straight forward, and the engine seems solid, and supports every platform...

I am not sure why some of you are saying unity is not good for 2d, please elighten??





Offline lachrymose

  • 0010
  • *
  • Posts: 336
  • Karma: +0/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #21 on: January 04, 2016, 02:51:23 am
Unity still has a lot of small issues handling 2D graphics with pixel perfect precision. They, for the most part can be fixed. But it is annoying to have to work around them so strictly to avoid gaps, fragmenting, flickering...etc.

Offline Seefour

  • 0001
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #22 on: January 04, 2016, 03:09:02 am
will keep that in mind moving forward, thanks for the information :)

Offline Kurz

  • 0001
  • *
  • Posts: 11
  • Karma: +0/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #23 on: January 04, 2016, 07:29:10 am
Oh, nice theme!

In my opinion the JavaScript is a best language for casual game-development. Of course it is not so fast as C++ BUT - I repeat myself - it is good for casual games. Also there are lot of game engines written on pure JS.
Plus I would recommended to look at Phaser game engine which is use WebGL (extremely fast thing).

Offline Gil

  • 0100
  • ***
  • Posts: 1539
  • Karma: +1/-0
  • Too square to be hip
    • http://pixeljoint.com/p/475.htm
    • View Profile
    • My Portfolio

Re: 2d Development Frameworks/suits/engines

Reply #24 on: January 04, 2016, 12:23:01 pm
Of course it is not so fast as C++
Eh, give it a couple of years and Javascript is just as fast (compare to Java or C# being "slow" and now being just as fast as the compiled languages). In fact, there's reasons to believe Javascript could actually run faster than C++, if we were to put the Javascript engine in Ring 0 (no need for protecting a safe language). Javascript is about 80% as efficient as C++, Ring 0 would make it 20% faster (which, if you do the math, makes Javascript about 5% faster than C++). This is all very napkin-calculated, but it should be about right.

After all, we live in a world where for every 10 lines of code written, like 8 of those are Javascript, while less than 1 is an unsafe language like C or C++, there's a lot of incentive for companies to get it right.

Offline Kurz

  • 0001
  • *
  • Posts: 11
  • Karma: +0/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #25 on: January 04, 2016, 02:17:10 pm
Gil, I think that interpreted language can't be faster than compiler one. And before started learn one you have to ask yourself - what for all of this? If you want to make games with open-world and high quality graphics - your way is C++. But if your target is just a small indy game (3D or 2D) - the javascript is right a decision.

It is only my mind and of course there are lot of tricks & little things which will affect the choice.

Offline API-Beast

  • 0010
  • *
  • Posts: 255
  • Karma: +0/-0
    • API_Beast
    • http://pixeljoint.com/p/35725.htm
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #26 on: January 04, 2016, 02:20:59 pm
@Gil: C++ has literally zero performance and memory overhead, going below zero is impossible, so you can't go faster than multi-threaded and heavily optimized C++ code. In the best case you have a JIT compiler that compiles the loop into the exact same machine code as the C++ compiler does, but the JIT compiler itself has execution time, e.g. is overhead.

That said, what really matters is the code itself, not the language it is written in. If you execute something 1.000.000 times the overhead of the JIT compiler becomes trivial. Use the language you can write good code in.

According to this test for counting prime numbers in a range is C about 4 times as fast as Javascript (in Node). Which is really really good already, Ruby and PHP are both 6 times slower than Javascript.
« Last Edit: January 04, 2016, 02:25:07 pm by Mr. Beast »

Offline ErekT

  • 0010
  • *
  • Posts: 329
  • Karma: +0/-0
  • fistful of pixels
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #27 on: January 04, 2016, 03:35:02 pm
Gil, I think that interpreted language can't be faster than compiler one. And before started learn one you have to ask yourself - what for all of this? If you want to make games with open-world and high quality graphics - your way is C++. But if your target is just a small indy game (3D or 2D) - the javascript is right a decision.

It is only my mind and of course there are lot of tricks & little things which will affect the choice.
The only real bottleneck these days is on the gpu-side (unless you're writing an emulator). I have a desktop computer from 2006 with a new gfx card and it runs any modern game I tried at killer framerates.

Offline Gil

  • 0100
  • ***
  • Posts: 1539
  • Karma: +1/-0
  • Too square to be hip
    • http://pixeljoint.com/p/475.htm
    • View Profile
    • My Portfolio

Re: 2d Development Frameworks/suits/engines

Reply #28 on: January 04, 2016, 03:45:22 pm
Guys, notice what I'm talking about. The performance hit of Ring 3 protection is about 20%, C++ can never ever run without Ring 3 protection, so no, C++ does NOT have 0 overhead. Javascript could, as it's safe. There's a lot of scientific research going on, because people expect that placing a VM in Ring 0 might mean that VM languages would get a 20% boost in speed, potentially making them even faster than compiled languages. This is not a claim I make, this is scientific and we'll see the results really soon, though a consumer product might be years away.

Offline Waxtor1

  • 0001
  • *
  • Posts: 5
  • Karma: +0/-0
    • View Profile

Re: 2d Development Frameworks/suits/engines

Reply #29 on: October 02, 2016, 10:55:58 pm
Try monogame havent tried it yet but apparently its great for 2d games it's similar to the old xna the creator of stardew valley recommended it to me.He said that he is most likely going to use it for his next game.