2d game dev & engines

Miscellaneous Forums/General Discussion/2d game dev & engines

Hi guys(and gals)

I'm trying to gauge how much interest there is in 2d game dev, and engines and libraries specifically for 2d. I know its out there, because I keep running into random pockets of interest on the web, but out of the people who frequent these forums, how many of you plan on developing a 2d game sometime soon?. I plan on releasing my game framework sometime in the near future, and my curiosity is starting to get the best of me.

I started working on it along time ago mainly for some 2d console style games I have in my head, but then I started thinking other people might be interested in it. Which combined with a slight perfectionist streak, has led to many redesigns, refactoring, and in general, delays--- but I think I've got it just right now :) Its fast, flexible, and really easy to work with. I've stripped a lot out in my recent revisions, so in terms of features its a bit light at the moment, but the core stuff thats there, thats all come together really really good. I plan on slowly but surely adding key components over time.

So with that out of the way, do any of you have experience with other 2d games libs? I'm curious to hear thoughts and opinions on products like torque2d, hge/goblin, spritecraft, dxgame, etc. Oh, and of course, blitzmax( the only version of blitz I haven't purchased yet ) Has anyone here done anything significant with any of them( ie, a complete or almost complete game )? And if so, what are your thoughts? Whats good, whats bad? What are nice to have's, and what are the must haves?

And since it seems to be the big dog in all of this, how many of you are using or have experience specifically with torque2d?

When they first released the demos, I noticed the space shooter demo has some big performance issues on my machine. I just redownloaded it today, and it still hiccups, and very often runs at 0 fps. Not an exaggeration at all, I litteraly just sit back and wait for the motion to come back after many many seconds. Is this a result of how the demo was coded, or is it an issue with torque2d itself? I just read a post on the indiegamer forums where someone was mentioning issues with t2d's performance.

For some reason, I can't seem to find the forums on garagegames.com or else I'd do a bit of sneeking around on there ;)

I am in the process of developing the Seten: Myrianon engine for 2D RPGs and have been for some time

The project started as one of those lame RPG games that people start but dont finish, except I never lost interest and have now developed it into something I Really want to do

Alpha 12 will be released to my Alpha Testers sometime in the near future, if you would like a look then please give me an E-Mail address to send it to

I'm also interested in seeing how you are doing things, I've never seen any code for complex 2D games past what I myself have produced and I'm curious to see how the rest of the world does it

I've never used Torque 2D, I do my Sprites in Paint, all my code in Blitz+ and the related web pages in Notepad

I love 2d games.... more the better..

Mordax, keep the 2D games alive brotha!

2d games kick ass... and furthermore 2d TURN BASED games kick ass. :)

I can see my first proper game is going to be popular around here already :D

I have had experiance with Blitz Max, I got the trial

The possibilities of coding for Mac and Linux are awesome but the documentation for it is so lacking in every way, to the point where it is simply (for me) unusable

I'm sure a more experianced programmer, who knows what most of the stuff means beforehand, could create some very spectacular stuff with it, but for those who have only had real experiance with BASIC type languages up till now its far too big a jump

I make 2D games as a hobby with a future aim of selling them. I have made a collect 'em up, a shoot 'em up and a platform game. I am also working on a puzzle game. I made by own libraries and framework for use with blitz plus. These contain reuseable types and functions and globals, stuff like that. Ages ago I used Allegro which is an excellent game library for C++.

I dusted off two really old 2d engines and I am updating them with some new features. One is pure 2d using only GDI and is quite fast. The other uses DX6 and is very fast and includes gamma fading and alpha blending. Currently, I am implementing OGG support for both and although limited, it is working fine (no crackles, distortion, etc).

2d games kick ass... and furthermore 2d TURN BASED games kick ass. :)
2d Turn Based PBEM games kick the most ass ;c)

I am all thumbs-up for 2d games. I don't actually like 3d games all that much. I am working on a 2D game/engine at the moment part of which involves writing my own 2D blit-routines that work in main memory - only part of the overall functionality that I need for the engine. The actual displayable graphics are going to be handled by direct OpenGL rendering, but there's graphics/data that I need to manipulate that isn't on the graphics card, so that's why I am writing my own library of routines. I also wrote another 2d Graphics library - Mildred, for the original BlitzBasic on the Amiga, so I have some experience to draw upon.

I'd say that you need to have all the basics in there, you need to be able to blit stuff and preferably in several different modes which should include Replace, Add, Subtract, Color (mask is drawn as a color), maybe also an Alpha Blend, some kind of Masked blit, etc. The one big difference with 2D these days compared to how it used to be is that you're probably going to work with 32-bit color data rather than 8-bit. Working in true-color makes certain things obsolete and introduces certain other things.

You'll also need some drawing routines - again the basics are rectangles, boxes, lines, plots, and you might branch out into ellipses, polygons, floodfill, splines, etc. I'm probably going to need all of those in my game.

Your 2d stuff also needs to be sufficient to allow you to probably implement a scrolling engine of some kind, be it with tilemaps or superbitmaps or whatever.

I think 2D games are great. They are simple to control and navigate and they don't overstimulate the senses with too much movement. Moving in 3D tends to be overwhelming, I find, and sometimes nauseating.

I think that not only is there plenty of `market` left for 2D games, but also that they will continue to go strong for the indefinite future. Even if a 2D game is now more of a `sub-genre` in gaming, it's still going to stick around. There's also some very interesting things you can do in 2D which you stil cannot do fast enough in 3D and won't be able to for some time.

Some extra functionality you might want to consider these days for 2D is being able to zoom and rotate stuff as well. Max2D handles it pretty good because OpenGL/DX can draw a rotated texture just as easily as an aligned one. But doing your own zoom/rotate routine is a bit more complicated. I guess it depends on what kind of an engine you are going to make as to what functionality you will need but it definitely helps to be able to rotate/zoom in realtime than to have to try to implement that as pre-rendered.

Also particle engines seem to be all the rage these days, something to consider. Plus the coming interest in more advanced physics and simulation of materials.

I think I'm gonna have to upgrade to max v.soon just for the speedier alpha blending, zooming, rotation and particle effects.

Some people in the bmax forums are reporting serious slowdowns when trying to display alot of stuff onscreen. This is probably because bmax is doing 2D in 3D so all the same speed limitations of a 3D environment apply - all displayed images are actually textured quads etc.

You can still throw around a lot of stuff even if its via 3D, even with a medium-power gfx card.

Thanks for the replies guys.

So no one here has used torque2d, or any other 2d libs at all? I'm extremely curious to hear about them.

Its just a hunch, but I assume max2d isn't batched? Is it just using immediate mode stuff(glBegin,etc)? Can anyone enlighten me? I also wonder how the torque2d rendering is handled.

Anyways, regarding the the graphic side of my framework, it is using a 2d in 3d system, so its got all the hardware accelerated goodies like rotation/scaling/alpha. I've really put a lot of effort in to streamlining the interface though. I want( and need it ) to be dead simple to use... I also wanted it to feel as though you are working with a traditional 2d, blit based system like you'd have in blitzplus or purebasic or amos ^_^. Its still a little bit different, but I think overall as an api its come together great. I can't wait to finish it and actually make a game :D

It's written in c#, and is fully object oriented. It requires .Net 2.0, which should be out of beta in this next month or so. If you've worked in .Net for any period of time, you should feel right at home. If you've never used .Net, it will probably take you 5 minutes to feel right at home ;)

Just a quicky list of things off my head.

-Hardware Accelerated and Optimized 2d-in-3d renderer.
-Consistant, easy to use api provides functionality for Video, Audio, and Input( wraps and extends the Tao framework....OpenGl, OpenAl, Sdl )
-Primitive drawing routines such as Plot(), Line(), Polyline(), Polygon(), Rect(), Oval() for now..
-Image drawing routines allow scaling, rotation, alpha, coloring, and distortion.
-Drawing operations can be modified after they've already been drawn.( ie, draw an image, and change its color or shape )
-Cross platform, cross language ( needs a lot of testing tho, so for the time being, consider it windows only)

*Everything* still needs a lot of testing. I've tried old versions on the windows version of mono and it ran fine, but I have yet to get into the linux thing. At the end of the day, it should be crossplatform, and I plan on working with it until its flawless, but until I've actually tested it for myself, that should be looked at as an upcoming feature.

And I've still got a big checklist of todo's. I tore out a lot of features like fonts and tiles and sprites, so those will slowly be re-factored and added over time. And then the stuff like animation, particles, and physics, which are still aways off in the distance.

Oh. And documentation. The bane of all coding projects big and small -_- .

Okay well I'm going into ramble mode now. Thanks again guys. If anyone else has suggestions or feedback about the other 2d game libs out there, please feel free to share!

It's written in c#, and is fully object oriented. It requires .Net 2.0, which should be out of beta in this next month or so.

Won't that mean games produced with your lib will also require .NET?

I must confess I still haven't gotten sufficiently curious about .NET to find out what it actually is, though. :P I do know, however, that I don't have it installed - and I bet a good amount of gamers won't, either.

PLus, I think older OSs like 95/98 can't run .net.

Its just a hunch, but I assume max2d isn't batched? Is it just using immediate mode stuff(glBegin,etc)? Can anyone enlighten me? I also wonder how the torque2d rendering is handled.


Your hunch is correct. It's more botched than batched ;-)

There is no inbuilt batch rendering, and indeed it's coded such that you can't even roll your own batch rendering. Particles and tilemaps, anything where you're drawing a lot of identical images take quite a speed hit.

No idea how Torque does it. I've wanted to try it, but last time I looked there was no sign of a demo. ( Well not one you could program, just sample games. ) It does seem to have some issues with speed and compatability, from what I've read, but there have been one or two big indie releases with it already, so it can't be too bad.

.Net is many things, and unfortunately, imo the microsoft marketing machine really did a good job of clouding it up. It seems to be a, lets-throw-around-buzzwords and label ".Net" on all of our products and services, type of deal.

I'm trying to keep this short, and thus its really hard to sum up all the advantages of .Net. Google is your friend here... Anyways, .Net is microsofts version of whats called the common language runtime. It provides a unified type system and memory model, and is object oriented. One of the big ideas, is that it allows any number of languages to work together seamlessly. So you may write the rendering library in c#, but write the game logic in visualbasic, and the network component in c++.

Another thing is the crossplatform aspect. Binaries are stored as intermediate code and basically usuable from any computer that has an implementation of the runtime on it. So you can compile a program once, and have it run anywhere( in my situation, its a bit more complex, but the principle mostly works ).

A more obvious feature is the framework itself. There is all these classes in the framework that make our lives( us programmer types ) much much easier. All kinds of the stuff we always seem to find ourselves rewriting, or learning someone elses library to make use of. Just to throw out a few examples here, there's stuff to make gui based programs, download webpages, networking, threading, moving files and directories around, specialized collection classes, compression, serial port access, reading or writing xml... there is just a bunch of stuff in there. Too much to name.

They have really put a lot of thought into making the api's feel natural, and usable. Win32 is a pain in the ass, and its a huge rats nest....try comparing win32 programming to winforms. You just can't do it. They are worlds apart in terms of usability.

You combine all of the above with a language like c#, and its just a dream to work with. And this is coming from someone who was a hardcore blitz guy. I tried other languages and really kind of stuck with blitz thru the years. In fact, the original version of this lib was being created in blitz3d and blitzplus. I ran into a lot of walls with blitz, while I pretty much have free reign to code as I please now :)

Won't that mean games produced with your lib will also require .NET?

Well, yes and no. .Net is microsofts version of the clr, but there are other versions like Mono and DotGNU(Portable .Net). I havent explored it too deeply yet, but mono is embeddable, or can be shipped with your game. Going off of a post on the indiegamer forums, it looks as though compressed, mono can come out to be about 3mb. So thats a route I may explore until longhorn, er-- vista becomes the standard os. For linux and mac osx, mono is a must.

Anyhow, I've really thought about this alot, and I still wonder how its going to be received initially. But either way, I'm moving ahead with it. I mean someone has to jump in the water at some point. I truly believe .net is the most productive development path. And before you know it, it will be common place. You can look back to directx, or 3d acceleration, and see that there were transition periods into them. .Net will be the same way.

One things for sure, .Net is the future of windows development, whether you like it or not.

PLus, I think older OSs like 95/98 can't run .net.


I don't think .Net will install on windows 95. It does work on 98 though. At least 1.1 does. I don't know whether 2.0 works on 98 yet.

But, at some point you have to draw the line. I don't want to limit potential customers of my games, but I mean hey. If its 2006 and you're still running win95... what can I do? *shrugs*

Interesting. Like I said, I've not looked into .net at all and know nothing about it - except what you've just told me. :) I do know that I don't want to start learning the win32 API at this late stage - it seems like a nightmare - so anything that wraps that in a user-friendly way sounds good.

However, I still have concerns about end users having to have .net installed. From what I've heard, the .net install is huge, too. Not surprising from microsoft, I guess.

Even end users with XP wont necessarily have .net installed, will they? I mean, it doesn't come as part of an XP install, does it?

I assume it'll be a standard part of future windows versions, though?

.Net 1.1 is an optional update for windows. I think it comes in about 22mb. Mono is smaller, and their licensing terms allow you strip out stuff you dont need.

And yes, much of windows vista is written in .net, and is a central part of the os. Win32 is still around for compatibility, but there is a shift taking place.

>>And yes, much of windows vista is written in .net, and is a central part of the os.

What parts of Vista specifically are written in .net? .Net is for corporate appliation development. It can be used for games but who need the additional overhead.

>>One things for sure, .Net is the future of windows development, whether you like it or not.

Whether you like it or not could be Microsoft's new motto. Are any major game developers working in .net? Can we expect .net no the XBox 360?

Are any major game developers working in .net? Can we expect .net no the XBox 360?


In one of the Game Developer Magazine issues, listed a company working on a commercial game title that was written entirely in C#.NET.

Also, the Reality Engine SDK has full .NET integration which (will) supports the XBox 360 and PS3, although the main core of the engine is written in C++ for speed. But good luck getting a license for it though...

The only 2 engines worth it in the world are popcap framework and blitzmax.

What parts of Vista specifically are written in .net? .Net is for corporate appliation development. It can be used for games but who need the additional overhead.


http://msdn.microsoft.com/windowsvista/about/
http://msdn.microsoft.com/windowsvista/support/faq/default.aspx

If .Net is for corporate development, then why is ms putting out the visualstudio express products? Why are they developing managed direct x? Why are core features of vista built with it?

Are any major game developers working in .net? Can we expect .net no the XBox 360


I don't think what the major game studios program in changes anything. I'm a small time, lone wolf operation...my goal is to make and sell great games. I'm using .Net, and created this game framework, to speed up and streamline that process. I mean, if what the "big dogs" use is an issue for most of us, then why even bother with tools like blitz?

BTW, there already are games written in managed code like ArenaWars and Tin Soldiers : Alexander The Great


Is a version of .Net on the 360? I don't know. I thought there might be a possibility, but meh.... I can dream at least :)

Physt, I hope I'm not coming off as argumentive. If you really don't like .Net thats your perogative, and I totally respect that. But I do think my point about windows development heading in that direction stands. Microsoft has willed it.

ANYWAYS... this thread is getting a bit ot now( and I know I'm very much to blame )..

So any torque2d users in the house?

I have used c# too and think that it is better than C++ because you have all the easy libraries at your disposal (I have used Win32 since 1997 too and hate it) and there are some new syntax changes etc. For example an array object already exists in C# and you can query it's bounds etc which you can't do in C++ unless you make one. The only bummer is the whole having to install .net on clients' machines really.

I have Torque2D but it is still at an early adopter level, I'm waiting for them to stop changing the commands and to get it more stable until I start learning it properly.
Until then, I'll stick with Blitz+ and learning BlitzMax.

Orca

Sorry. Wasn't trying to flame. Just tired of MS. Must resist flaming microsoft...<argh>

Have you checked out the popcap framework for 2d? It's free, easy to work with and can be used for AAA 2d games.