Members - Reputation: 242
Posted 28 May 2012 - 03:53 AM
About a year ago i started game programming, just for fun and for a challenge. I thought it would be nice to share my experiences here on this forum, mainly because it might help others who are currently just starting.
Please keep in mind that game programming is for me just a side hobby besides my own company (not IT-related), girlfriend and other hobbys. Since it is not my main focus, the progress i made in a year, could maybe also be made in a few months. On average i think i spend around four hours a week on programming.
When i started programming i almost had no knowledge of programming at all. The only things i knew were how to program in GWBASIC (a programming language from way back, like 1993 or so) and build a simple website in HTML. My backgrpund in general is that i am 27 years old, live in the Netherlands (which is why my English will be filled with errors ;-) and graduated in both Economics and Dutch Law at Erasmus University of Rotterdam.
When i wanted to start programming, my first problem was to select a language. At that time i was fairly unaware of all the discussions around the choice of a first programming language and just picked one. Since the name was quite similar to GWBASIC i went with Visual Basic and downloaded Microsofts IDE Visual Basic 2010. http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-basic-express
The first thing i did, was finding some good tutorials. The best ones i found and used were these lessons, which are extremely detailed and very useful for a complete beginner: http://www.homeandlearn.co.uk/NET/vbNet.html
I managed to finish them quite fast and afterwards created my first program using really amateur stuff like picture boxes. My first game was Tic Tac Toe. It took me about 5 days to make it.
With Tic Tac Toe finished, i moved on to slightly more complex stuff and tried to create a simple board game like Ludo. The only problem here was that i wasn't familiar with creating classes so i ended up with a half-baked version of my game with over 150 global variables. That was when i decided that i had to be doing something wrong
After this setback i picked up some new tutorials for creating 2d tiled games from Youtube. The creator of this videos is Aardaerimus and he really gave me a lot insight into building a game loop and of course creating classes. I can highly recommend his tutorials. http://www.youtube.com/user/Aardaerimus?feature=watch
With these new tutorials i started to create some new games but was never able to finish them because of lacking skills or motivation.
In fall of 2011 my programming time was limited because i enrolled in Stanford University's AI Class. This class made me learn a lot about AI concepts, even though it didnt provide any practical examples, just the theoretical framework. I really liked learning about A*, minimax and learning algorithms.
When i finished the programming class, i decided i had two goals in programming:
1. Create a chess AI that can beat me, my dad and my girlfriend (we are all average players, so it should be possible)
2. Create a simple game that i can run on my XBOX (using C#/XNA).
Besides these goals, i also promised to myself that i would try to minimise the number of projects i was working on at the same time and also try to finish projects. I started by finishing two small games i was working on.
This is a bit hard to translate, but Sinterklaas is a Dutch holiday that is a bit like Christmas (although the presents don't come from the Northpole but from Spain). Traditionally Sinterklaas rides the roofs of the houses (by horse) and throws his present through the chimney. I tried to create a game based on this idea but replaced the horse with a plane. Finally i created a game where Sinterklaas was flying in a plane above the roofs and you would have to throw the right present in the right chimney.
This was the first time i worked with a deadline (Sinterklaas arrives on the 5th of december) and fortunately i finished in time. We all played the game on Sinterklaas and actually had some fun doing it. This was the first time after my Tic Tac Toe game that i actually felt the satisfaction of finishing a game.
2. Diamond Grabber
When Sinterklaas had passed, i wanted to create a game that used some theory from my AI class. I decided to make a 2d tiled game where a maze is randomly generated. When the game starts diamonds are dropped at random in the maze and you have to rush to get them. The most fun part was to create an AI that would rush to the diamonds as well. After some work i finally created an AI that operated perfectly using A*. This game was finished in january and was also my first game that came with a few settings (such as the speed of your AI opponent and the number of diamonds.
With these two games finished, i started something completely different. I learnt about Project Euler and found it very challenging so i gave it a go. In the past 4 months i solved 26 problems and arrived at level 1. Although Euler is not game related, it definitely helped me to think about processing time (since all problems on Euler can be solved in a clever way which takes less than 1 second, but most of them can also be solved in a way that takes over 10 minutes). If you like math problems, be sure to check out: http://projecteuler.net/
Somewhere in february i went back to game programming again and created my final game in VB.net which was an implementation of a simple board game (once again, based on Ludo) that i invented as a little kid. The game itself is not very interesting, (unless you are still a little kid ;-) ) but it felt good to make it, because it was the first game i ever made myself (although at first not on a computer).
The game was finished on 29 february and i uploaded it at SourceForge (https://sourceforge.net/projects/letourdusjap/).
After creating this game i left Visual Basic because i wanted to focus more on my final goals. One of these goals is creating a XBOX game and as far as i know this is best possible (or even only possible) in C#. Therefore i decided i should learn C#.
A funny thing happened when i told some friends i was learning the programming language "C hash", because that's what i thought it was pronounced. It really took me about a month to realise i was programming "C sharp"
My first steps into learning C# were the same as with VB.net, the tutorials from Home and Learn, but this time for the C# language: http://www.homeandlearn.co.uk/csharp/csharp.html. As an IDE i used once again Microsoft's Visual Studio: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express
When i got the basics of C#, i went on to decide what games i should make. Since i had two different endgoals, i wanted to work towards both of them simultaneously.
First i decide i want to create a RPG, not yet on the XBOX, but still on the PC using GDI+ instead of XNA. When i was able to do this, i would then move on to XNA and try to start developing on XBOX. To get some help with building the RPG i bought a book called Visual C# Game Programming for Teens (http://www.bol.com/nl/p/visual-c-game-programming-for-teens/1001004010525579/). I am currently halfway through the book and i am not yet sure whether i can recommend it. Some examples in the book are quite useful, but others are not that useful at all in my opinion.
Secondly i wanted to get experience with the minimax algorithm which i plan to use in my chess game. So, i went on to create a Connect Four game and currently i am trying to implement a minimax (soon to be negamax) algorithm into it. Just today i finally got the basics working and i am planning to use the coming weeks to improve it with stuff like heuristics, alpha-beta pruning, etc. When i get this one working correctly i might give chess a try or maybe i try another simple game first. The first version of the Connect Four game is also on SourceForge: https://sourceforge.net/projects/connectfour85/
Besides these two project i am currently also following the Udacity course 101, where you learn to build a search engine in Python. This project is not my main focus, but it is a fun side project that allows me to learn another new language.
Well, that's about it, these are the things i have done in my first year in game programming. Although it may not look like very much yet, i had fun doing it and i think i learnt a lot in the process. I hope my story can help or inspire other starting programmers. The most important lessons i learned in the past year are:
1. Keep track of your progress to keep yourself motivated
2. Finish your projects, also to keep yourself motivated
3. Start small, if something is too easy for you, you will know soon enough and can always move up the goals
4. Just pick a language, if you like programming dont wine to much about which language to use. If you really dont like it, you can always change
5. Show your projects to others. I always show them to my girlfriend who know nothing about programming but can be very critical of my work
6. Determine your endgoals (or at least goals that you want to attain in 2-3 years) and work towards them
7. Experiment with different problems, languages and IDE's. Maybe you will discover something that suits you better than what you are currently using.
Good luck and thanks for reading!!!
Members - Reputation: 835
Posted 28 May 2012 - 07:47 AM
Members - Reputation: 1185
Posted 28 May 2012 - 08:28 AM
Members - Reputation: 735
Posted 30 May 2012 - 12:23 PM
If I had to point one thing out, it would be that perhaps you've switched between technologies and multi-tasked a bit more than some would be comfortable with - but that is largely a personal thing.
Members - Reputation: 242
Posted 30 May 2012 - 03:46 PM
@WavyVirus: it is indeed true that i switched a lot, but that's mainly because i like to experiment a lot to really get to know which language / approach suits me best. Of course i can certainly understand this is not something everybody should do or could enjoy, absolutely true!
Uiteraard ook bedankt voor het Nederlandse commentaar
Members - Reputation: 105
Posted 02 June 2012 - 10:56 PM
AI is interesting to apply to http://tophatsudoku....Botchee4x4.html a baby botchee that I coded in VB.
A fun exercise that has helped with Xtreme edition of which a teaser image is attached. Multi-player game program is a whole nother level that goes beyond my scant programming skill when it comes to web servers and such. It's still got aways to go but you can see/read static drafts of dynamic php pages at botcheecafe.org/Botchee.htm and the game is mostly functional.
Soon the drafts will guide revisions to the main site which is linked from said url.
9x9 is the granddaddy game of botchee that can accommodate as many as nine players. Understanding symmetry will aid those that attempt to learn a winning strategy.
Thanks for posting!