• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Toshi Brown

Advice regarding language choice - 2D Top Down Strategy

18 posts in this topic

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

1

Share this post


Link to post
Share on other sites

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).

1

Share this post


Link to post
Share on other sites
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.

1

Share this post


Link to post
Share on other sites

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.

1

Share this post


Link to post
Share on other sites

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.

1

Share this post


Link to post
Share on other sites

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

2

Share this post


Link to post
Share on other sites

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.

1

Share this post


Link to post
Share on other sites

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!!

0

Share this post


Link to post
Share on other sites

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.

1

Share this post


Link to post
Share on other sites

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!

0

Share this post


Link to post
Share on other sites

[quote name='Toshi' timestamp='1357245517' post='5017236']
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.
[/quote]

 

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)

1

Share this post


Link to post
Share on other sites
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
0

Share this post


Link to post
Share on other sites

[quote name='Darego' timestamp='1357340602' post='5017547']
what do programming languages have to do with drawing sprites?
[/quote]

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.

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites

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).

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0