views:

329

answers:

5

Going to create a small game with OpenGL as a side project. Going to be a top down shooter with emphasis on large numbers of enemies (the more the merrier)

Thinking about having the resolution max out at 800x600 (for an old school feel)

What language would you recommend, is C# capable of handling the number of entities I want on screen (60-100) or should I try out C or C++ or even some other language.

Do you have any other suggestions when going for a project like this, special documentation you recommend etc.

+3  A: 

C# is easily capable of handling a few hundred objects at once. The real speed issues come from rendering, which will not be in C# space, and possibly any computation you want to be done for each object, such as physics. Ideally you'd be using a library such as Box2D or Chipmunk for that anyway, making C# speed a non-issue there as well.

I'd personally be willing to write a game such as this in even-higher level languages than C#. C# should easily suffice.

Devin Jeanpierre
Although it depends somewhat on the complexity of the individual entities in terms of polygons and textures...
Jeff Kotula
I doubt it. Both of those still take most of their toll in rendering and physics, which C# should not be doing. There is some cost in C# as well, but I can't see it as being significant enough to justify moving to C++ in a 2D top-down shooter.
Devin Jeanpierre
Accepted for the last paragraph and the comment on danieltalsky's answer.
Ólafur Waage
+1  A: 

Have you considered Haskell, D, or ADA?

C# will definitely be able to handle a paltry 60-100 OpenGL-rendered entities on any reasonable hardware.

joeforker
+4  A: 

On the scripting languages tip, consider the excellent Pygame in python:

http://www.pygame.org/news.html

Or the newer LÖVE in Lua

http://love2d.org/

For a top-down shooter both are probably excellent choices.

danieltalsky
Amusingly, Pygame is precisely the thing not to do with a large number of entities on the screen. Due to the way it refreshes the screen, it's rather slow at doing it if large portions must be updated. Pyglet or Cocos2D would be better choices. Pygame can be used, but why bother?
Devin Jeanpierre
LÖVE has SpriteBatching. I've not used it myself by it sounds like a fine way to sprinkle the screen with many sprites.
Tommy
+1  A: 

Generally, for a project of this scope I would recommend using whatever language you want to learn next.

Your project scope isn't huge, but is meaty enough that it would probably stretch your knowledge of the language you choose a bit. So choose one you want to get better in.

fixermark
A: 

I've only ever dabbled with it but LWJGL will facilitate a Java version. All of the in-house games at puppygames.net are done in Java with LWJGL, for instance, and curiously they too are top-down or side-on blaster style games.

banjollity