Jump to content

  • Log In with Google      Sign In   
  • Create Account


Advice regarding language choice - 2D Top Down Strategy


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
18 replies to this topic

#1 Toshi   Members   -  Reputation: 126

Like
1Likes
Like

Posted 03 January 2013 - 03:50 AM

Hey guys, looking for some advice here regarding picking up a programming language to run with and start my *amazing* dev career... *cough cough*.

 

Seriously though, ive been looking at Python and Java, and a couple of other smaller programming languages, but cannot decide what to dedicate studying time to learning enough to begin seriously writing code.

 

A brief overview of the plan, and my current skills:

 

2D Top Down Singleplayer (For the beginning) Strategy game, player controls a single character. Long term campaign over a large, single map. RPG elements ie levelling up, equipment upgrades etc.

 

My skills: Basic knowledge of C++, Good Sprite artistry, Quick Learner.

 

Games that I am attempting to emulate the style/feel of:

 

Starfarer - http://fractalsoftworks.com/

Gratuitous Tank Battles - http://www.gratuitoustankbattles.com/

 

Essentially, once ive decided which language to go with, I will study up and learn it as quick as possible through web guides and e-books, and figure out how to create the world and the player calling up Sprites that I have been building.

 

Any help / advice would be much appreciated!!

 

Thanks,

Toshi



Sponsor:

#2 __SKYe   Members   -  Reputation: 952

Like
1Likes
Like

Posted 03 January 2013 - 04:28 AM

Well, i can't tell you which is the best language, but if you're serious about learning one, and make a serious project, then i'd advise C++.

It's probably the most used language in game development, although i suppose not the easiest to learn.

 

You could then learn OpenGL or Direct3D, or even use SDL or Allegro (i think these two can be/are used in conjunction with OpenGL).

Also, if you don't know (and don't mind your game being WIndows only), there's DirectX (which Direct3D is part of) which is a complete game development SDK.

 

Not that this isn't something you can't do with other languages (i don't really know if there's DirectX support in Java or Python), but i think you will get the most support (in terms of code samples, etc) if you use C++.

Of course if you want your game to be cross-platform, then perhaps Java would be another option, not that you can't do it with C++, but it is easier with Java.

 

There is also C#, altough i can't tell you anything about it as i've never use it (the same goes for Python).

 

In the end, in my opinion, on the long road of development, you'd benefit more by choosing C++, but again, it is probably not as easy to learn (and by learning i mean really learning, including advanced things like pointers, OOP, inheritance, etc), and obviously does not natively include sprite drawing routines, sound playback, etc like some other languages do (for example Java and ActionScript).



#3 JinixVomitorium   Members   -  Reputation: 151

Like
-2Likes
Like

Posted 03 January 2013 - 04:46 AM

I suggest java!  It is absolutly amazing!


add me on skype, i need some new associates for coding.

skype: daniel.lamonds

c++, Visual basic, fortran, html/5, css, php,java script, sql, others......


#4 Stormravens74727   Members   -  Reputation: 132

Like
1Likes
Like

Posted 03 January 2013 - 06:45 AM

I suggest java!  It is absolutly amazing!

 

That there is the worst way to give someone advice. Where is the reasoning and why is it so amazing.

 

I my self would suggest C++ I am not an acumpilshed programmer but I am working my work through a Game Developer course by Train to Game and it is focused on C++ and their reasoning behind that is that it is one of if not the most widely used language in games development.



#5 Inuyashakagome16   Members   -  Reputation: 835

Like
1Likes
Like

Posted 03 January 2013 - 08:30 AM

C++ wouldn't be a bad language to start with. As long as you understand that, you won't understand most of the different functions and sides of C++ overnight. It takes a while to fully understand what C++ has to offer. (Same with any other language) You could try to learn some C++ and see how it feels and if you understand what you're doing. If so, then continue on learning different sections of C++, and slowly move into a graphics library of some kind. (/game engine)

 

As many have said before, "Don't expect to make the greatest game ever at first. Start small with games like pong, matching games, and other small games."

I'll add to that with "and make sure you comment your code and UNDERSTAND what each keyword means / does." 

 

I'm sure the community here will be of great help in the future to you if you ever need it. :)

 

 

Also, this thread will just turn into a "this language is better than this language" very soon I feel.



#6 BeerNutts   Crossbones+   -  Reputation: 2576

Like
1Likes
Like

Posted 03 January 2013 - 09:42 AM

FYI, I've created a simple top-down game and included the steps I took to make it in my Old Blog (linked in my Signature).  You can check it out to get an idea of what using C++ with a 2d physics library would contain.

 

Good luck.


My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

#7 bubbaray97   Members   -  Reputation: 213

Like
2Likes
Like

Posted 03 January 2013 - 10:10 AM

I'm not a professional game programmer, so take that into consideration.    But I've been a hobbiest for years.    I tend to agree with the folks who say C++ given its widespread use if your goal is really to use this exercise as a jump into the professional world.   Given you claim some basic knowledge of C++ might be the best place to start anyway.

 

Now for me, I spent a ton of time reading/learning/coding in all the various versions of DirectX over the years (again I'm just a hobbiest and only cared about playing on "my" machine).    Recently though I switched to Allegro since it has the option of being multi-platform and what not.    I'm not sure any "real" commerical game uses it, but it suits my purposes just fine.   I bring this up because __SKYe mentioned Allegro above.     Its easy to use, wraps around both DirectX and OpenGL.    Just one thing to take off the list if you will while you are learning game programming itself and getting better with C++.

 

If you do want to go the C++ with Allegro route....I recommend http://fixbyproximity.com/2d-game-development-course/ as a great kick-off.     These videos take you through how to use Allegro for a 2D game pretty well (and there is a follow up course that makes it more OO).

 

Anyway thats my 2 cents



#8 Serapth   Crossbones+   -  Reputation: 5183

Like
1Likes
Like

Posted 03 January 2013 - 10:16 AM

If it was me doing a top down 2D game today as a beginner, it would be Lua in a heartbeat.  Hell, im thinking about doing such a game as someone with tons of experience and Lua + MOAI is almost certainly what I would use.  You get full C++ source if you need to drop into it, but generally you wont have to.  The biggest flaw is the lack of documentation, although I've done a tutorial series that will get you exactly where you need to be to get started.  If MOAI isn't your thing, there is always Gideros, LOVE and Corona to start with.



#9 Toshi   Members   -  Reputation: 126

Like
0Likes
Like

Posted 03 January 2013 - 01:16 PM

Thanks for the excellent replies guys, im at work at the moment and stuck using IE so for some reason I cant "rep" your posts, but I really appreciate the feedback.

 

Im going to check out the links that you have provided, and I will definitely return to post my feedback and further thoughts.

 

Again, HUGELY appreciate the help!!



#10 bassy   Members   -  Reputation: 117

Like
3Likes
Like

Posted 03 January 2013 - 01:51 PM

I was gonna write something here about learning languages:

 

However you're not interested in learning a language.

 

Don't think language, think end product.

 

The problem is that you can't decide on a language to write for something as banal and commonplace as a game without having an idea what sort of coder you are.

 

So my advice to you I guess is to stop writing your terrible game, and just go learn how to program something simple like an rpg. Pick a couple languages, see which you like better, what annoys you and what sticks. Programming can be something of an art and style, a way of thinking. When I first started the so called "easy" languages annoyed the hell out of me. Bad programs, written by lazy people, with terrible documentation, and even poorer rules making me just want to puch whatever idiot thought that having no strict type system was a good thing. Clean, structured languages are actually great for a beginner, because it allows you (or at least me) to 'connect the dots' between parts more easily. I think a lot of 'artsy' people get annoyed by structure though, and then sing the praises of languages that are more freeform because they think better that way.

 

After you've programmed for a while, the language design choices basically don't matter anymore, you just learn to program in your own way and force whatever stupidity the local language is trying to shove down your throat to go away.


Edited by bassy, 03 January 2013 - 01:52 PM.


#11 Zed2100   Members   -  Reputation: 138

Like
1Likes
Like

Posted 03 January 2013 - 02:00 PM

I agree with the guys above on learning C++ and making your game with it. C++ has evolved a lot these last years and there has been some nice updates to the language.

 

C++ is the language most pros are using, but these are very skilled people, so it would be a better idea if you took some time to master it first before thinking of making a game with it.

 

Personally, I learned C++ and made some simple games with it, then I switched to Java, then finally to javascript because it were easier for me and I wanted to make games that are directly playable in the browser without requiring a plugin. Now with the advances of HTML5, you can do a lot of cool stuff like drawing 2D shapes or sprites in canvas, saving data locally (in case you wish to save player progress, score, ...), playing sounds, ... etc and you can also do 3D if you wish.

 

I appreciate working with javascript because all it takes to see the changes you made to your code is hitting F5 to refresh the web page. I like to focus more on game design so working with a scripted language saves me a lot of precious time.

 

I think the most important thing for a beginner is to go through a basic, but complete, development cycle, one that includes a basic initial idea of a game, a simple game design, modeling the features of the game (here your job is to "translate" the game design to technical details, algorithms, UML diagrams, software architecture, ...etc), programming and testing. So I agree with bassy that the language in itself is not very important.


Zouhair Serrar

#12 Toshi   Members   -  Reputation: 126

Like
0Likes
Like

Posted 03 January 2013 - 02:38 PM

Thanks for the feedback again, as I mentioned earlier I have used C++ in the past, what I was most concerned about was being left behind in an "older" programming language, when all the cool kids are using Python/Java.

 

Ive brushed up on my C++ with some online tutes, and im looking into using Allegro now.

 

I understand what you mean by going through a development cycle, essentially (although I am not interested in detailing spoilers, game design ideas etc etc) ive gotten to the point of modelling / programming in that I need to translate details and designs into code.

 

I also have picked up that the language is not as important as the design and determination, its just that stepping back into this world after a couple of years of not doing any programming (apart from BASIC with a robot I was building) you can be suprised at the advances and streamlining that has happened while you were away.

 

Game Dev is a slow process, with lots of blood sweat and tears, so Im going into it knowing im not going to produce "Call Of Duty: Guild Wars 2 Edition". :)

 

Anyway, I was really hoping that I would get some straight answers regarding wether C++ was still relevant, and wether or not I need to learn a new method to make an effective modern game. I havent used Allegro before, but from the looks of it I could definitely streamline my process.

 

Cheers all!



#13 BeerNutts   Crossbones+   -  Reputation: 2576

Like
1Likes
Like

Posted 04 January 2013 - 10:11 AM

Anyway, I was really hoping that I would get some straight answers regarding wether C++ was still relevant, and wether or not I need to learn a new method to make an effective modern game. I havent used Allegro before, but from the looks of it I could definitely streamline my process.

 

Yes, C++ is still very much relevant.  I don't know a lot about Allegro, but, before jumping in, take a moment to check out SFML.  It's a wonderful Multimedia API layer, it has a great interface, supports Gfx, Sfx, Input, Windowing, Networking, and Generic System-related API's, and runs on top of OpenGL for GFX (thus, is HW Accelerated)


My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

#14 Darego   Members   -  Reputation: 156

Like
0Likes
Like

Posted 04 January 2013 - 05:03 PM

Well, i can't tell you which is the best language, but if you're serious about learning one, and make a serious project, then i'd advise C++.
It's probably the most used language in game development, although i suppose not the easiest to learn.

You could then learn OpenGL or Direct3D, or even use SDL or Allegro (i think these two can be/are used in conjunction with OpenGL).
Also, if you don't know (and don't mind your game being WIndows only), there's DirectX (which Direct3D is part of) which is a complete game development SDK.

Not that this isn't something you can't do with other languages (i don't really know if there's DirectX support in Java or Python), but i think you will get the most support (in terms of code samples, etc) if you use C++.
Of course if you want your game to be cross-platform, then perhaps Java would be another option, not that you can't do it with C++, but it is easier with Java.

There is also C#, altough i can't tell you anything about it as i've never use it (the same goes for Python).

In the end, in my opinion, on the long road of development, you'd benefit more by choosing C++, but again, it is probably not as easy to learn (and by learning i mean really learning, including advanced things like pointers, OOP, inheritance, etc), and obviously does not natively include sprite drawing routines, sound playback, etc like some other languages do (for example Java and ActionScript).
what do you mean by java sprite drawing routines? in a 2d tile based map for example aren't the sprites done in paint.net etc and not coded in programming languages? (totally new at game dev here obviously :) ) but what do programming languages have to do with drawing sprites?

Edited by Darego, 04 January 2013 - 05:05 PM.


#15 ngoaho91   Members   -  Reputation: 236

Like
0Likes
Like

Posted 04 January 2013 - 09:33 PM

go learn c++, and you need some basic knowledge of software engineering



#16 nobodynews   Crossbones+   -  Reputation: 1785

Like
0Likes
Like

Posted 04 January 2013 - 09:38 PM

what do programming languages have to do with drawing sprites?

This means the computer is 'drawing' (displaying) a sprite to the screen. The program decides when and where to display the sprites that were created by an artist.


C++: A Dialog | C++0x Features: Part1 (lambdas, auto, static_assert) , Part 2 (rvalue references) , Part 3 (decltype) | Write Games | Fix Your Timestep!


#17 __SKYe   Members   -  Reputation: 952

Like
0Likes
Like

Posted 05 January 2013 - 05:02 AM

What i meant with java sprite drawing routines is not creating a sprite in java. Sprites are simply regular images created with any graphics program(like Paint, pain.net, photoshop, gimp, etc).

 

However if, for example, you use C++ and Opengl, you must create a texture from the sprite image, and draw some triangles/quad on the screen using that texture, and you effectively have a sprite n the screen.

 

In Java you don't have a Sprite class per se (although you can easily make one, just Google it), but you have an image class built in, that simplifies the process (also keep in mind that this so called sprite on the screen, is nothing more than displaying an image/texture on the screen).

In ActionScript (aka AS2/AS3/Flash) you already have a Sprite class that makes things much easier.

 

As nobodyNews said, the programming language doesn't have anything to do with making the sprite (although you could hard code it in your program), it just may making displaying an image on the screen easier or not.



#18 Khatharr   Crossbones+   -  Reputation: 2871

Like
0Likes
Like

Posted 05 January 2013 - 08:37 PM

Sprites are simply regular images created with any graphics program(like Paint, pain.net, photoshop, gimp, etc).

Technically I think those are 'bitmaps' or 'textures', but it depends on who you talk to. From a development point of view a 'sprite' is usually a render instance for something. For instance, in DirectX you load a texture (image data), then use that texture as fodder for a 'sprite', which specifies where to render it and at what scale/rotation/etc.
void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

#19 __SKYe   Members   -  Reputation: 952

Like
0Likes
Like

Posted 05 January 2013 - 08:50 PM

True,  since your typical Sprite class, is an image/texture with a position & some transformations. It's just the habit of thinking of a sprite as a single frame in an animation (as in the old console games), where each of the frames is a sprite (here having the meaning of an image).






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS