Beginner Game Development Help

Started by
7 comments, last by Tutorial Doctor 10 years, 1 month ago

Hey all,

Just a quick (hopefully) question: I am a sorta-kinda new programmer, I have some experience in languages such as FreeBasic, VisualBasic, Actionscript 3.0, and Ruby, though I have never become too experienced in any of those. I was just programming some little widgets lately, but I want to get into game programming, so the question is, which language should I use? I want one that is relatively easy to learn and powerful, so if anyone has suggestions, please post 'em!

Many Thanks,

DatHeadcrabTho

Reed S

DatHeadcrabTho

Reed S Lamarr

Dude, You've got an alien on your head.

Advertisement

ApochPiQ answered this with an article:

http://www.gamedev.net/blog/355/entry-2254835-which-x-should-i-use/

And I'll include my standard answer for "where do I begin" as well:

Here is a great article for starting out. I can't recommend it enough:
Set small, reasonable goals for yourself or you'll quickly get overwhelmed. The above guide has a breakdown of which projects you should tackle first and why.
And the beginner FAQ is also an excellent place to start:
- Eck

EckTech Games - Games and Unity Assets I'm working on
Still Flying - My GameDev journal
The Shilwulf Dynasty - Campaign notes for my Rogue Trader RPG

ApochPiQ answered this with an article:

http://www.gamedev.net/blog/355/entry-2254835-which-x-should-i-use/

And I'll include my standard answer for "where do I begin" as well:

Here is a great article for starting out. I can't recommend it enough:
Set small, reasonable goals for yourself or you'll quickly get overwhelmed. The above guide has a breakdown of which projects you should tackle first and why.
And the beginner FAQ is also an excellent place to start:
- Eck

Thanks so much Eck! Exactly what I was looking for :)

DatHeadcrabTho

Reed S Lamarr

Dude, You've got an alien on your head.

Game Development is a very broad process which involves game developers, analysts, testers and above all the publishers.

I definitely suggest you to use Python. There is a library for game development called Pygame, and I use it and love it. First of all, it's necessary to reduce "Game Development" in two broad questions:

1. Which language should I use?
2. Which library and/or engine should I use?

Explaining why I suggested Python:

Python is an extremely powerful programming language efficient in both extremely advanced and simple topics. When I started to learn programming, I just could not understand Java or C. Python is the language that allowed me to understand programming, and then migrate to other languages such as C++ (Which is the most used language in game development, but much more difficult to understand than Python). Python is perfect for learning AND development (Please experts in speed-details, I'm not considering these things here, obviously). C++ is perfect for just development, not learning (Thou shalt suffer if thou decidest to learn the hard way).

Download Python, figure out how to install Pygame and play with it.

The second question:

In order to develop a game, you obviously need to deal with things such as "images" and "sounds". Therefore, LOADING an image, for example, to be your player or enemy is as natural as it can be as far as game development is concerned. What deals with "images and sounds and game-stuff"? A library specific for game development. A library has all the obscure low-level hardcore things made up for you, so that you can load an image as easy as hell. If you choose a language like "C++", SDL, for example, would be a perfect free library for you to use to handle graphics, sounds and events (Keyboard/mouse/joystick inputs to interact with the media stuff).

An engine, on the other hand, makes things "easier" specifically for game development (You could use a library like SDL or Pygame to create a music player for example (It uses the inputs to interact with sound/image media, but it's not a game.)). Even if you actually KNOW how to program, and KNOW how to use a library to load sounds and images, that does not mean that you know how to make a game. Game has principles such as goals and challenges and whatever, and it's up to you to figure out what a game is (I suggest you to read about).

Creator and only composer at Poisone Wein and Übelkraft dark musical projects:

If you have a good grasp of object oriented concepts of the high level languages, all you need to do is learn some 2D graphics concepts and how to set up the graphics context in your program and you are ready to write the logic of your game.

The important thing is to struggle with it and really learn from it. I cannot stress this enough. Any high level language with a graphics library is all you need to start writing the game given the above knowledge mentioned.

TL;DR version: Considering the programming end alone, if you're looking to build a serious operation pumping out sleek 3D games with physics, AI and fancy graphics tricks, C++ is unparalleled. If you're a hobbyist (like me) and just want to dabble into the wonderful world of game programming and design, C++ is fantastic but will take you a while to get a good grasp on, while Python is much friendlier and has a phenomenal 2D library (PyGame) which will get you programming games in no time.

That being said.

Pick one! I'm also an aspiring game developer, and I've picked programming in C++.

Upsides:

--Extremely powerful, extremely quick.

--Everybody on the Internet knows all about it and can help you ever step of the way

--It has several open-source libraries to make things easier. I'm using OGRE for graphics, and writing my own open-source physics engine (Indigo Frost).

--Powerful, free tools for debugging, design, and testing.

Downsides:

--Pain to learn, especially without formal classes and whatnot. Not too much of a problem, you can find free programming classes online easily. Just be warned: you will spend a good many hours learning general C++ before you can even touch game programming.

--While I have complete control over everything and my software runs FAST, I also have to worry about everything my software does, and often spend time on things I shouldn't have to worry about as a programmer.

That being said, I'm going to make a pull for Python here.

Upsides:

--It is a language built for the programmer to be happy. Programming in Python is SO easy and quick.

--Python is also very well documented, because it is seriously the holy grail of programming.

--PyGame is a fantastic 2D game programming library, taking care of the ugly stuff for you.

Downside (right - just one):

--Python runs between 10-400 times slower than c++. For 3D game programming, this means no complex physics, AI, or bells and whistles.

Java also has its qualities, and so does Visual Basic.

I can't speak with much certainty on any language, but from the research I made and the languages I tried, python indeed seemed like a very good option. To me it felt strange, but maybe because I'm used to C and Actionscript, and python is slightly different on some things (i.e. no curly braces or semi-colons). I felt like I was entering a different world, but pygame seemed powerful.

What threw me off was that pygame's text module doesn't deal with text the way I needed. I'm intending to make text adventures or text heavy games, and pygame can only throw out a line of text at a time (which meant that I'd have to learn how to do it myself from scratch in python itself, probably).

However, game programming has its intricacies, from what I've learned so far, that kind of demand that you get acquainted with certain fundamental knowledge, for example, some specific concepts of physics and math for a start (i.e., in a breakout game you probably want vectors to move the ball, in a platformer you want to simulate gravity (to an extent) as the player jumps, in a car game you want... some level of physics...).

From my experience I found that learning those things was a good step closer to my goal. Before that every time I tried to code a game I just stood there staring at a few keywords I've written, scratching my head wondering how the hell was I supposed to move that ball in 360 directions, or how in the world did people place tiles in a map. Collision detection/reaction and that sort of stuff was also a huge mystery for me before reading that book. My suggestion would be to get a book that explains this sort of stuff and those simple math/programming tricks people use, but the only book I know that does it is quite outdated: Macromedia Flash MX Game Design Demystified by Jobe Makar. This book also thought me a funny thing: there's the realistic way of simulating gravity, and there's the good-enough way. He teaches both, but uses the latter. smile.png It's a good book, but Macromedia was still a thing when it came out, it's all AS2. Regardless, the concepts of game making can be translated to elsewhere, but probably there's other books on the subject anyway (or internet articles). I have to look for that myself one of these days.

I created a pointer of type Toilet so I don't have to go to the bathroom as often.

I think Lua would be best. One issue with python is that whitespace matters. So, the function body must be indented in order for the function to work. Python doesn't have a way to close a function other than that.

In lua you would type:


function functionName()
--code
end

The "end" statement closes the function, so whether you indent or not doesn't matter. Actionscript and several other languages use the semicolon.

In python you would type:


def functionName:
    ##code
 

There is nothing to signify the end of the function other than the indentation of the second line.

I have seen LUA used more with C++ than Python. I think Blender 3D uses Python as a scripting language though, and I don't like how that works so much.

They call me the Tutorial Doctor.

This topic is closed to new replies.

Advertisement