How to start as a game developer
Wednesday, June 10, 2015 - 19:22
I'm new to the game developement world. I've learned python programming and also to use the pygame module. Now I want to design some good stuffs that can be deployed to some app store. What should I do now ?
Depends on many factors.
1. Free/commercial game development.
2. Your programming experience.
3. Amount of time&money you're ready to spend.
Best start is to learn some game engine: pick 'python' here http://en.wikipedia.org/wiki/List_of_game_engines and to do some (very) simple games. After getting the experience - improve the difficulty.
Second, think of your plan - would you like to work alone, or invite/hire collaborators. Think of your strong sides. If it's art, then make art-based game, if it's programming - make a complex and interesting game logic, etc.
Answer a question for yourself: what kind of game do you want to make and why? What is required for it? What are the problems? What are the opportunities? etc.
Ok. Thank You. I've chosen Ren'Py from the list given there. Meanwhile I've found another game engine namely Unity 3D. Do you know about it ? Which one is better - Ren'Py or Unity ?
S.Dhua
Well... I've never tried myself neither of those. But 'as many say' Unity is the best thing around and free for low-income games.
It depend on what game you're going to do. Unity can be consider to make all kind of game while Ren'Py primarily designed for visual novel. Start from what you're able to do and move on when you have more knowledge and experience for another kind of games. But they're a lot more game engine suitable for a specific genre of games but if you knew and have much experience you can make many kind of game from any engine or from scratch. Choose what you want to make to make first and decide on the engine.
For normal desktop applications and for android i use Python Kivy.
While Kivy is still a bit young its quite neat to use and can create a clean interface also i feel the Developers are quite enthusiastic developing it.
Most functions you need from an Gui are there.
However since it is young there is a tendency to get frustrated when you cannot find something in the Documentation.
http://kivy.org/
Otherwise when i remember right Unity is capable to run from Browser directly. I have not yet worked with it but if you want to make something to put to kongregate.com it would be my first approach.
Well RenPy does not look universal usable but rather specialized.
So if you would want to spezialice in Novels way to go but if you want to learn Programming i think i would rather discourage it since it might end up as waste of time when you want to learn a different branch.
Another valid alternative - and how I got my start - is by looking up some free open-source games (thousands available at Ludum Dare, for instance), then tinkering with variables in the code to see what it all does, and how it's all structured. It may take awhile to decide on which lingo best suits your needs as a developer, though; and the choice lies heavily on what kinds of games you plan on making.
I've had my luck, personally, lie in C++, Visual Basic, and XNA/.NET, but there's a lot of good options available for even the rookie designer/developer unless you're doing something really complex. What kind of game are you looking into making at first; or at least, eventually?
Your dream project may take a lot of small step projects to get to, but you also want to make sure your smaller projects are actual steps towards that one, too.
@TonytheTGR Now now, keep in mind that he might not know the difference between Open-Source and Free Software, and that he also might not know about software licensing beyond those two broad categories. A lot of the games on Ludum Dare are not nessicarily legal for him to base a game off of, as they are only Open Source, which contrary to popular belief does not automatically allow you to make derivative games. However, while I don't quite see why you would want to, you are completely free to use any of the source from my poorly made games, so long as you replace all of the character graphics (I really should get around to officially public domaining all that code, shouldn't I?) You can find them (along with the games) here: http://ludumdare.com/compo/author/gravitygames/ and hopefully, if I get around to replacing all the character art with random blocks and such, on something like GitHub as well.
Free Software is that defined by the Free Software Foundation; Open Source is that define by the Open Source Initiative. Whilst there may be some licences not covered by both (and the different organisations may have different views), a large number of licences are both Free and Open Source. So I'm not sure there's a practical difference between the two - rather it depends what the specific licence is?
Which licences are Open Source but don't allow derivative works? (Unless you mean things like "shared source" where the source is available but not necessarily under an Open Source or Free Software licence, but I wouldn't consider that Open Source.)
I clicked on those links you gave us and The Game known as Erebus which is a RPG MMORG free to play online game is still under copyright of the company and also has additional patents protections on top of its protection and strict polcies in its rights of use so they went to a lot of big trouble to try protect this game, so I doubt they would just give up all their rights on the game just like that to let people just do what they the hell want with it, now I don't know about Megalomania's status, but it was an old commercial game on amiga I remember many many years ago. You need to get copyright clearance on these games first before you do anything.
My game Erebus RPG has nothing to do with any MMORPG. The only references I can find for an Erebus MMORPG are Erebus: Travia Reborn - this was apparently cancelled - and Erebus 2, released 2014 (my game was first publicly released in 2012). Anyhow, there's no connection other them both coincidentally using the name. There have been various different games and mods using the name Erebus over the years, none of them particularly notable, as well as various other works. Erebus was one of the Greek gods, as well as the name sometimes given to a region of the Greek underworld, so it's not surprising that there are multiple uses of it.
Gigalomania meanwhile does have a obvious relation to Mega Lo Mania, though rules are not copyrightable; I see it as similar to Free clones like FreeCiv (Civilization), Widelands (Settlers), Lincity (Sim City). Of course I realise that doesn't help in practice if I receive a C&D, though that is a risk individual developers face with anything they release (heaven forbid one releases a game with "Candy" or "Scrolls" in the title...).
Just look at what Final Fantasy goes all out of their way with 238 Patent Applications !!! wahoo. ir seems they are not satisfied with just only putting copyright protection on their games.
1. I wanna design some basic 2D games like , super mario bros .
2. I know the basics of Python & Pygame. I'm attaching the source code of a game that I've recently designed. Please see it and tell me if I can improve it. And then tell me what to do next.
3 . I can spend 10-12 hours a day for this purpose but without spending any money.
4. I want to design programming based games and I'm ready to work with friends as well as alone.
Now give me a better answer . :-D
@eugeneloza
S.Dhua
(change the extension to ZIP)Space Invader.zip_.png 26.6 Kb [21 download(s)]
I think my answer was sufficient and covers your question. Your attachment zip.png? Oo
This kid is off to a bad start already Rainbow. He wants to do super mario games. You can't do that, its commercial software. He has to code something original.
I'm not sure if they meant "I want to write some games such as Super Mario Bros" or "I want to write a game like Super Mario Bros" (many games might be described as "like" another game, if you want to reference a game someone knows rather than describing it in more general terms, e.g., "I want to a write a 2D platform game where you have to collect items").
It makes no difference, those who make these cheap knock-offs off from protected commercial games have to realize that they got zero rights.and their licenses are all invalid because even through Copyright protects the game asset files but it can't protect ideas but patents can protect ideas if the inventor liststhem in the patent.
You should also consider using a framework instead of an engine. The positive side about this is that you learn how to program a game, versus learning how an engine works.
Who knows how long unity will be the most popular engine? When the day comes that an enigne is discontinued one has to learn a whole new engine, which could be cumbersome. When a framework is discontinued one can in most cases switch to another as frameworks are quite similar.
Another thing to consider is that Python is an interpreted language, which means worse performance compared to a compiled language.
My favorite coding language is C#. C# is not the language with the highest performance, but it's sufficient. C++ would probably be better, but because C# uses JIT(look it up) provides some benefits and because C# is a language that is easier to understand than C++(according to me) and according to many sources faster to develop in i prefer C#.
Favorite engine: XNA, which was discontinued and replaced by Monogame.
Just for the record, I am also proficient in Java development as well as in libGDX(framework, that uses Java). I have infact released a game developed in libGDX. And I also know how bad Python performs, an example of this is that I know a guy who coded a simple space shooter in Python and his computer barely ran it(note: his computer was not the best one available), while I have created more complex games and had them run on smartphones just fine. This may of course have been caused by the fact that my code might be more optimized, as I did not really look into his code.
Conclusion: Compiled>Interpreted and Framework>Engine
Bonus Note: The fact that I program against a framework has also helped me develop desktop applications, which I believe is not achievable with an engine.
> "It makes no difference"
But my description of "a 2D platform game where you have to collect items" covers an entire genre which has included countless commercial games. Another example would be the commonly used term "Doom clone" - these days we call the genre FPS, but the term "Doom clone" never implied these were infringing any copyright, just that Doom was the most well known example, and people would know what you meant by saying a game was like Doom.
I don't see anyone suggesting to create a "cheap knock-off" that infringes copyright.
Whilst patents can cover things including rules and mechanics, I'm not aware of a patent that covers the platform game genre. Also note that software patents are only enforcable in some countries.
Does Ibm have a partent on mega lo mania? it still being sold in the stores
@swarupanandadhua: Sound like you are off to a good start actually. Honestly, I would stick with Python and PyGame for now. If you're far enough along with that to do a Space Invaders clone, it won't be much of a leap to do a 2D platformer game. As Olander pointed out, one good benefit of sticking with a lower level approach (as opposed to jumping to a packaged engine like Unity) is that you'll be learning plenty of basic programming skills as you go. I wouldn't worry at all about the difference between using an interpretted vs. a compiled language at this point. Trust me, if you find your Python Super Mario clone doesn't run fast enough, the problem is most likely in your code not in the Python interpretter's speed.
I would second Olander's recommendation of XNA, it's about as slick a game SDK as I've seen and really a shame Microsoft has dropped development on it. That said, I would only worry about making the jump to C#/XNA if you are tiring of Python or just want to try something new out for whatever reason.
Unfortunately, it's been too long since I did anything with Python for me to comment intelligently on your code, but if you have any general game programming or code structure questions, I'd be more than happy to try and help answer them for you, just PM me (you can do that from OGA by clicking on my name next to this comment and then going to the 'Contact' tab).
I think it does not matter in which language you programm bad code which has as example an infinitive loop or whatever overly CPU demanding you will end up with a slow program.
Now Python is a bit slow compared to c++ but to say its not possible to make a shooter for a little old pc is out of the world. Here is some example to compare:
Here
Now you see some examples are as quick as c++ some are 100 times slower.
However if you really try to do something scientific or demanding with python that could be executed 100 times quicker with c++ you still have the option to use a python module (cython) and execute the code in C or C++ and it will be only minimally slower.
For my programs on pc Python + Kivy needs about 4 seconds from start till loadet kivy itsself needs 2-3 seconds.
So also here i would not say its too slow.
In the end i think you can safely say if someone programs proper he will not get a too big difference betwenn Python and C++ in real life execution.
Its about the same on Android, however since Python is not the native language on android it will be quite a bit slower than java need more ram and will not work on older versions.
On the other hand i tried to get into java for exactly that reason and in the end i was just horrified how ugly the language feels compared to Python (which has a similar struckture like c++ but quite some improvements over c++ in terms of languagebeauty)
Also i think its safe to say that most programs in Python needs less code and are codet more streamline.
For that think python is easy to learn and its nice to use and for that reasons its also my favorite language.
To put it all another way, we're lucky to live in a time when memory is hyper abundant and even tiny cell phones have gigahertz processors, alot of hard fought battles were waged to get us here, take advantage and program in whatever language you like best!
I found something more to the topic:
Here an example which demonstrates why after knowing Python and try to learn Java i did quickly make the sane choice to give up on java and trying to go along better with python (the two examples do the same):
Its from here (The example are aged but the Syntax is stille the same create a list 1000 times then append the list 1000 times each then access it) First is Python second is java:
for i in xrange(1000): v=['a','b','c','d','e','f','g']
for j in xrange(1000):
v.append(j)
v[j]
import java.util.Vector;
public class ListTest {
public static void main(String[] args) {
for (int i = 0; i < 1000; i++) {
Vector v = new Vector();
v.addElement("a");
v.addElement("b");
v.addElement("c");
v.addElement("d");
v.addElement("e");
v.addElement("f");
v.addElement("g");
for (int j = 0; j < 1000; j++) {
v.addElement(new Integer(j));
v.elementAt(j);
}
}
}
}
Well, in fairness to Java, every language has it's strength and weaknesses. Simple list instantiation may not be Java's best feature, but I'm sure it has other things going for it.
It's a misleading example, as Java can do one line initialisation:
Vector v = Arrays.asList( new char[]{'a', 'b', 'c', 'd', 'e', 'f', 'g'} );
And Vector is ancient; these days you'd write it as:
List<char[]> v = Arrays.asList( new char[]{'a', 'b', 'c', 'd', 'e', 'f', 'g'} );
It's still not quite as quick as Python, but it isn't the long winded mess as suggested in the example.
Whilst Java also requires extra additional lines for the class and function, "how much boilerplate code you need to get started" isn't that great a method of comparing languages - by this reasoning, BASIC comes out great for hello world :) When you have a large codebase, the extra lines from things like functions aren't significant, and also how well the code can be structured is more important than a pure number of lines count.
It's also about choosing the right tool for the job - languages like Python, Perl, Lua etc are great for producing code quickly with minimal code; they also come with useful types that are built into the language rather than being classes written in that language. So they're especially useful for things like scripting and prototyping. But that doesn't mean they're better for everything.
> "how much boilerplate code you need to get started" isn't that great a method of comparing languages
I'll definitely second that!
> It's also about choosing the right tool for the job
Definitely. But like I say, the good news is that in today's world, the right tool for the job is pretty much whichever language you like the best. Over the course of a large project like a game, you're probably going to bump into the pros and cons of each, so might as well use the one you love.
I'm not sure why people think interpreted languages like Python are slow. I suppose for AAA 3D stuff with lots of triangles and hi res textures on the screen where you need every last clock cycle from the CPU/video card then sure, C++ is where it's at. But for a simple 2D JRPG in the style of the SNES era FF games Python seems to be just fine as far as I can tell.
I've actually got something to near the tech demo stage myself in Python using pygame. (Github link if anyone is interested.) You can walk around the map, leave to the world map, go to some other area from the world map, get in random battles, talk to NPCs, make dialog choices, ect... All at 1280x720 with SNES style graphics that are better than SNES graphics due to the higer resolution.
Its not done yet, but it runs and the battle system and party screen functionality are all that's really left to impliment before I can start thinking about story and characters and stuff like that. Well, I guess there is still lots of polish and code optimization to do to, but still, it runs and gets 60 fps, even in the battle swirl. Oh and the save/load system, I still need to do that, but the pickle module looks like a ready to go boilerplate solution to that since everything is already in objects anyway.
I think the most performance intensive thing I did was make the world map a ludicrious 1024x1024 32 pixel tiles in Tiled. It took about 4 seconds for the game to load up with a map that size and even then it still ran just fine through the viewport once it loaded up. I dropped the world map to a more reasonable 128x128 tiles and the load time vanished. I imagine most zones will be about 64x64 tiles in size, but any really large area can always be broken up into multiple zones. So 256 such zones would be one silly huge world map's worth of loading time. That should be plenty of space to make a JRPG in I think.
I agree with capbros, use whatever language you like, they all seem to be fine in the modern era of multi ghz CPUs and 8+ gigs of RAM.
What engine is most frendly to newbies?
@boygameb: that depends on whether you have an interest and/or background in programming. Something like GameMaker is great if you have zero programming experience and no desire to get into programming. Unity is great if you don't mind some programming.
Do yourself a big favour ... Learn C and C++ !
It is really not that hard, and these are the fastest ,most supported and most flexible programmering languages . Especially for game programmers. There is also a big codebase of examples and a lot of good libraries around.
I myself code in C++ most of the time. And I use the great Allegro 5 library.
So if you need any help, drop me a message.
A good place to start: www.learncpp.com
Game programmer C++ Allegro 5
It depends what you can and how serios you want to start.
If you are serious:
If you cannot program i recomment you to learn python because its the most easy to learn and its similar to c++.
When you think you can python good enough go through a c++ tutorial it should not be hard to learn the differences.
After this you should go for unity and learn to use it with c#.
Learning python to start makes it easier to get into it but its a steep learning curve still.
I do NOT reccommend python for a starting programmer. Python differs form mainstream languages like the C family in a lot of areas. If you need a stepping up language go for Pascal! It was designed for this purpose.
Pascal has all features of a complete programmering language, full OOP support and pointers.
If you need an even less steep learningcurve try SCRATCH it's a graphical programming environment. But uses real programming concepts like variables, loops, conditions etc.
,
Game programmer C++ Allegro 5
I did what i recommendet i dont see much differences between c++ and python except in syntax but not in logics.
Python uses "Duck Typing" vs strong typing in other languages.
Python has no native arrays but uses lists wich differ completely from arrays and containers(like stl lists)
Inheritance and other OOP features are a pain in the ...
And python is not verry fast.
Python IS however a great scripting language. You can uses it to script events and even complete levels in a game written in for example C++
Game programmer C++ Allegro 5
The lack of strong typing is one of the reasons why Python is much easier to learn than C/C++. Also you can use strong typing in Python if you want. And then use Cython to convert said Python code to C which is then compiled to native machine code. So Python can go just as fast as C/C++ if you need it to. Usually not every part of a program needs the speed offered by native machine code so you can mix Cython with standard Python as needed to get the best of both worlds. Besides, if you aren't doing something 3D with AAA level graphics the speed of C/C++ isn't needed anyway. You don't need native machine code for a tetris or asteroids clone. Both would teach you a lot about how to make a game and are good "my first game" candidates.
When starting as a beginner you are learning two totally seperate things at the same time. How to make a game and how to program. Sticking with an easier language lets you spend more time learning how to make a game and less time learning how to program. It also makes the whole process less frustraiting which makes it more likely that you will suceed with your first simple game. Once you are past that initial hurdle you can move on to more complex games and/or more complex languages as you feel you are ready to.
Inheritance and other OOP features in Python are not much different than C++. I don't even see this as a differentiating factor. Also Python lists are ridiculously similar to C/C++ arrays on the surface. They are ordered, interable, addressed by numbered index starting at 0, can have their contents be manipulated in place, can have arbitrary elements added/removed, and can be multi dimensional. Under the hood we can get into the differences between contiguous and non contiguous memory and both have their strong points with C/C++ arrays probably winning out in most cases. But that is not something a beginner should be concerned with.
C/C++ are great for writing games. But Python is much better for a beginner as it forces you to learn proper coding habits and lets you ease into the speed and power of C when you are ready. C# is solid too and is probably a good alternative when used with Unity as Unity abstracts a lot of things that you would otherwise have to worry about with C/C++ or Python and a text based IDE.
Once you have learned one language picking up another one is very easy. So start with one that is easy to learn, Python. Then move to something else if you feel the need to. Starting with Python and going to C++ once you know how to program will be far less frustraiting than starting out with C++.
I think that this image has a pretty good summary of several popular languages.
In fact, learning C++ with Allegro should be fairly straight forward for anyone who is famaliar with Python and the Pygame library.
Unity is really poorly optimized. It's only advantage is it's accessibility.
Learn C++. Logical syntax that makes sense to beginners + a lack of hand holding that forces you to learn core programming concepts makes it the best in my opinion.
This the game I started working on. I've not sure how this is gonna turn out in unreal engine, So I got an idea, but had trouble with execution because of the struggles with trying to code the game in the blueprint system. But I put the game dialog script up. Ths game did originally start out very small to begin with but now its grown to all these systems..
http://www.tozan35.weebly.com
Unity right now is the only real choice for browsergames (since the mayor browsers shift out flash) and you can run it on most platforms. I have not seen any better crossplatform engine.
It may be not well optimized essentially you need to take extra care in terms of performance and avoid bugs.
I like JavaScript, HTML, CSS wrapped up by cordova. Of course I create graphical text games so I don;t need much in terms of power.
I play Dungeon RPG
If you want to become expert of python development so you should learn basics first form lynda video tutorial Python Training and Tutorials, here is the source https://www.lynda.com/Python-training-tutorials/415-0.html. As you say that your a new in game application development & python programming then i would recommend you that you should follow above lynda source after completed your course, you are able to do anything as you want.
The Problem I found with OOPS programs (OOPS IS RIGHT) like Blueprints in Unreal Engine when messing with arrays and structs is that they tend to corrupt and break easily, whereas programming things in just simple text form like with simple batch script like I did with Tesseract Prime Offworlds there's less chance of data corruption and the errors are easily picked up and fixed and things do break in batch scripts as well but is quick to fix it.
Much more easier to debug something in text because if an error pops up you know exactly where in the script the error is coming from and I was able to spend alot more time on developing the game ideas and concepts than on spending all the time on mastering a programming language before I can even do anything. But in Unreal Engine, its a different story, you have to spend ages learning the language of the engine and it gets complicated when bugs in the engine can also cause issues....
If you're trying to put games on an app store then you need an engine - otherwise, you're going to have to learn everything from scratch and that can literally take years. For example, Unity includes built-in methods to track player input -- you just add a line of code. Without it, you have to build and de-bug your own player input function, which takes time.
Unity and Unreal are the most popular ones now. I also used GameMaker for a while, but found it decidedly lacking in terms of what you can do (not sure if they fixed that with GM2). If you have 10-12 hours a day and are fairly tech/code savvy you can learn an engine in about 3-5 months. Give another 5-7 months of dev time and you're looking at about 8-12 months to get published. That's the good news.
The bad news is that, even though the engine takes care of all the background operations, you still have to build a game from scratch, hence the 5-7 months of dev time. You can cut that time in half with an asset package, but that means cash out of pocket.
And, as others have noted, you're dependent on the engine remaining viable -- if a better replacement comes along, you could find yourself starting over again.
I'm not making the game for Commercial Reasons. But I already tested some of my game out in Unreal Engine, I whiteboxed a couple of maps with the map blackhell on you tube under channel germanslice.
In Unreal Engine I ran into some obstacles.
1. Only have got half the dialog system up and running, so you can view all the dialog when you talk to NPC's , but you can't select choices. That part of the code needs to be implemented but I don't have the knowledge to do that so only half the system is working.... I can implement the dialog branching manually myself but that would create far too many widgets. As the branching has to use the same widget because the game has alot of dialog.
2. The second obstacle is how to get Unreal Engine to manage over 6 thousand vairables as
its a choice & consequences dialog driven game.
Most of the game is still in text form
Oh wow, this is an old and long-running thread.
Do not learn C++ for game development. Nobody in their right mind will be using C++ for that within a few years. It's on the way to being a niche industrial language, it takes years to get genuinely good at it, and there are way better options now. Learn C++ for learning C++, not for any other reason! It's an "interesting" language in every sense of that word. If what you really want to do is learn C++, then small-ish game projects (e.g. roguelikes) can be a good starter.
Out of "traditional" languages, Python, Javascript, and C# seem to me like the best choices right now, depending on whether the engine that you want to use supports them. You can write code that is "fast enough" in all of these if you know what you're doing, and until you know what you're doing then any language can produce slow code. So you want one that is relatively easy to use, and try to make something which the available hardware can easily run with only a fraction of its power.
Always start from something that already works. I.e. find someone else's source code which isn't too big or complicated, does something remotely close to what you want, and already works when you build and run it. Then start working out how to change its behaviour in various ways.
Godot is heavily scripted. You have to have knowledge of programming to make a game in that engine. I ran into difficulties with Importing in the Skeletons.
Unreal Engine took me ages to try to script my game in blueprints. Plus I ran into the issue of too many files and not enough resource space.
Mine is a Resource Management Sci-fi RPG game and I could only program it in dos window console language.
i cannot recommend gdevelop enough for beginners. the visual scripting is the best i have seen in any engine.
This looks cool! Thanks Ragnar :)
Oh my game is not small. and gdeveloper might be suited for small games. But my game covers many different worlds and has alot of dialog in it. I programmed it first all in batch code before trying to put it into unreal engine. Unreal Engine uses too many files.