Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

4. August 2013


I just received the following email:

Dear You,

We recently became aware of suspicious activity relating to some of Crytek’s websites, and acted quickly to take those websites offline for security reasons.
The sites listed below are currently offline:



The following Crytek sites remain online and are not affected by these issues:



If you have an account at or, you will be asked to change your password next time you log in. If you use your current password anywhere else online, we would also suggest that you reset it at those sites.
We are working on getting all websites fully operational again as soon as possible. Please accept our sincere apologies for any inconvenience.

The Crytek Team


If you visit any of those sites, you see:



Considering that you had to register to evaluate CryEngine, if you’ve looked at it, you are compromised.  You need to authenticate to use CryEngine, so I wonder if all the devs are now dead in the water?  What really annoys me about this announcement is they don’t tell you if the passwords were encrypted.  At this point in time, any website that compromises user information without encrypting it, should be liable for any damages that occur!  This is getting far too common.

News ,

1. August 2013


Way way wayyyyyy back when I created I want to be a game developer… now what? I wrote:

So, you’ve picked a language, the libraries you want to use and now you need to, you know… do something.  The following are a list of suggested projects for a new developer interested in games, with a ( fully my opinion ) difficulty rating attached

Then I completely neglected to actually provide the list.   Oops.


As this is one of those questions that comes up so often with new developers, I’ve decided to finally answer it.  Basically this is just a list of progressively more difficult game projects that you can work on when just starting out, as well as details of why to do each project.  Of course, you don’t need to do any or all of these projects, it is simply a logical ( to me! ) progression of projects for a new game developer to work on. 


For each example, I've linked some random tutorials that you can refer to if you have trouble.  I would suggest trying to do it without the help of a tutorial the first time, you will learn more that way.  That said, there is no reason to bang your head against the wall over and over if you run into difficulty.  Although occasionally satisfying, head banging is rarely an effective learning method.  If there was a new concept introduced with the game, I often also add other links that should prove of some use to you. 


The tutorials were discovered mostly using Google, then I took a brief look at the code to make sure it wasn't awful.  If you have better recommendations for linked tutorials, let me know in the comments and I will edit them in!  If you run into trouble, also let me know in the comments and I will see what I can do. I hope some of you find this guide useful!


Games you should make when just starting out, in chronological order


Adventure/Zork/Simple text adventure


It's about as simple as you can get and still call it a game.  You are going to learn string handling, something you will be doing A LOT.  You will also implement a rudimentary game loop ( get input, update world, display result ).  Also, you don't have the added complexity of graphics.


C++ text adventure tutorial

Java text adventure tutorial

Javascript text adventure sourcecode





If creating a text adventure isn't your thing, Hangman is another simple game concept that doesn't require graphics.  In many ways, the process will be virtually identical to a text adventure, so if you do the one, you won't really learn much by doing the other and vice versa.


C# Hangman tutorial

C++ Hangman tutorial

JavaScript Hangman tutorial

Java Hangman tutorial


Tic Tac Toe


One word… AI.  While not having made the jump to graphical programming yet, you are now going to have an opponent to program.  The nice thing about Tic Tac Toe is, you can start of brute forcing the logic, but after some time you can look at implementing a more elegant solution.


Java Tic Tac Toe Tutorial

C# Tic Tac Toe

See Also:

Once you've got Tic Tic Toe going, consider looking at a more elegant way of solving the board.  A very commonly use algorithm in AI development for making decisions is the MinMax algorithm.  After you licked MinMax, there is an optimized version called AB ( alpha-beta pruning ).

MinMax description

MinMax and AB pruning explained ( pseudo code )

C# implementation of Tic Tac Toe using Minmax and AB pruning.




Welcome to the wonderful world of graphics!  You will have to learn about the render loop, how you draw the world each frame.  This will also be your first taste of collision detection, although with Pong this can be faked.  You will also have to learn how to make an AI that isn't perfect!  Of course, you will also be taking your first steps into 2D game math, although you can minimize the math required a great deal, depending on how you implement Pong.  You may also encounter a state machine for the first time, depending on how you implement it.  Pong represents a project you can start simply and make a great deal more complex as you get comfortable.



Over-engineered pong in C++ using SFML ( on )

Pong in XNA (C#)

JavaScript Pong


See Also:

At this point you are going to need to select a graphics library for your language of choice.  Pong is simple enough you can often get buy using the native drawing library of your programming language ( if it has one, C or C++ do not ).  Otherwise you need to select a library.  This post should help you in the selection process if you are using C++, C#, Java or Python.  If you are using Lua, this post should help.  If you are using JavaScript, select a library here.

Now might be a good time to brush up on the concept of a game loop.




Well, it's basically Pong for one player with slightly more sophisticate math.  Purely optional, but if you completed Pong, Breakout/Arkanoid should be a pretty easy progression.  Granted, you won't really learn much new.



Breakout in JavaScript using Canvas

Breakout in Java



Math baby math.  The process is going to be very similar to Breakout or Pong, but since the player can move and shoot in many directions, the math is going to be very different.  The collision detection is also going to be more complicated.  Don't let math scare you off, it's not really that complicated, and I've got examples/tutorials for basically everything you need to know!


Asteroids in C#/XNA

Asteroids in Python with PyGame


See Also:

For the math, I've created a series of math tutorials that cover everything you need to know to implement Asteroids.




PacMan introduces a couple interesting concepts.  First is the concept of a level file or map.  Next is the AI controlling the ghosts, commonly implemented using a State Machine, a very common algorithm in game programming.  PacMan also introduces the concept of levels.


PacMan in JavaScript

Source for PacMan in LUA/LOVE

Source for PacMan in C++/SDL


See Also:

Finite State Machine in PacMan (PDF Link)




Now would be a good time to try and implement a platforming game, be it a single screen game like Donkey Kong, to a side scroller like Super Mario brothers.  You will be faced with implementing some kind of physics ( jumping, falling, not-falling ) and more advanced collision detection than you have to date.  You will also have more difficult level requirements.  Optionally at this point, you can implement physics in your game, don't worry, it's not as scary as it sounds.


JavaScript platformer tutorial (link to part two is in the comments)

Android platformed with Java/libGDX


See Also:

A big requirement to creating a platformer is a level creation tool.  Now might be a good time to check out Tiled one of the most popular, and free, map editing tools available.  If you decide to use Tiled, I have a very detailed tutorial series to get you started.

For 2D physics, Box2D is the most popular library and it has been ported to dozens on languages.  Here is a tutorial on creating a platformer using Box2D and Cocos2D with Objective-C.

What now?


That will have covered off most of the basics.  The only thing glaringly missing from the list of things covered that I can think of is advanced pathfinding, such as learning the A* (A-star) algorithm.  You can learn more about it by reading this Stanford article.  The next logical jump would probably be to work in 3D, if that's where you want to go next ( you could easily spend your entire life just working on 2D games if that was your preference ).  If you want to go 3D, I highly recommend using an engine to start.  If you are struggling with how to create art for your game you may want to check out A Programmer's Guide to creating art for your game.


Once again, this page was simple meant as a list of suggestions for games to create for developers that are just starting out.  Feel free to do them in whatever order you want, or to skip them entirely, but as listed above, the difficulty progression does make a certain amount of sense.

Programming, Design

30. July 2013


It’s a pilot program for now, but Facebook has tentatively entered the world of game publishing, now that their exclusive agreement with Zygna has expired.FBPublishing  They are currently accepting applications from small and medium sized developers.



So, what does a game developer get out of this?


Three things. 


The first is most obvious, exposure.  The ability to get your game in front of 800M monthly mobile users is nothing to sneeze at.  Considering lack of exposure seems to be one of the biggest problems on the various app stores, this is hard to ignore.


Next is targeting.  In their words:

With our unique targeting ability and mobile users who like playing a diversity of games, we'll help the right people discover your game.

I’ll admit, the tangible benefits of that one are  a bit harder to define.  I assume what they are saying in not so many words is, they have such a huge volume of data on their users that they are able to target with exceptional precision.  Beyond being a bit creepy, I suppose this is completely true… Facebook does know a hell of a lot about Facebookers.


Finally is access to their analytics tools.


What does this cost?  Well, currently the Facebook game publishing page  doesn’t specify.  The most we have to go from is this Facebook blog post:

We are invested in the success of these games, and in exchange for a revenue share, we will be collaborating deeply with developers in our program by helping them attract high-quality, long-term players for their games. We'll also be sharing analytics tools and the expertise we've gained from helping games grow on our platform for more than six years.


The same blog post went on to mention 10 games that are participating in the program, including a game from publisher Gameloft.  Games on that list include Age of Booty:Tactics, Dawn of Dragons and Train City.


So, in a nutshell, Facebook are getting into the app promotion space and taking a cut of the profit.  Not sure exactly how that would work for sharing revenue when they don’t control the app store ( where the sale is tracked ). 


If you are a small to medium sized developer and want to apply click here.  Facebook will be disclosing more information about the program later today at Casual Connect.


28. July 2013

After waiting about 19 years for SFML 2 to be released, 2.1 has followed only a month or two later.


This is mostly a bug fix release:

SFML 2.1


- Fixed MouseMove event sometimes not generated when holding left button on Windows (#225)

- Fixed ContextSettings ignored when creating a 3.x/4.x OpenGL context on Linux (#258)

- Fixed ContextSettings ignored on Linux when creating a window (#35)

- Fixed windows bigger than the desktop not appearing on Windows (#215)

- Fixed KeyRelease events sometimes not reported on Linux (#404)

- Now using inotify on Linux to avoid constantly polling joystick connections (#96)

- Add keypad return, equal and period keys support for OS X

- Improved mouse events on OS X regarding fullscreen mode

- Improved mouse events on OS X (#213, #277)

- Improved reactivity of setMousePosition on OS X (#290)

- Fixed mouse moved event on OS X when dragging the cursor (#277)

- Added support for right control key on OS X

- Fixed KeyRelease event with CMD key pressed (#381)

- Improved TextEntered for OS X (#377)

- Fixed taskbar bugs on Windows (#328, #69)

- Improved the performances of Window::getSize() (the size is now cached)

- Added the WM_CLASS property to SFML windows on Linux

- Fixed Window::getPosition() on Linux (#346)

- Fake resize events are no longer sent when the window is moved, on Linux

- Unicode characters outside the BMP (> 0xFFFF) are now correctly handled on Windows (#366)

- Pressing ALT or F10 on Windows no longer steals the focus


- Fixed bounding rect of sf::Text ignoring whitespaces (#216)

- Checking errors in RenderTarget::pushGLStates() to avoid generating false error messages when user leaves unchecked OpenGL errors (#340)

- Solved graphics resources not updated or corrupted when loaded in a thread (#411)

- Fixed white pixel showing on first character of sf::Text (#414)

- Optimized Shader::setParameter functions, by using a cache internally (#316, #358)

- sf::Rect::contains and sf::Rect::intersects now handle rectangles with negative dimensions correctly (#219)

- Fixed Shape::setTextureRect not working when called before setTexture


- Added a workaround for a bug in the OS X implementation of OpenAL (unsupported channel count no properly detected) (#201)

- loadFromStream functions now explicitly reset the stream (seek(0)) before starting to read (#349)

- Fixed SoundBuffer::loadFromStream reading past the end of the stream (#214)


- Replaced the deprecated gethostbyname with getaddrinfo (#47)

- Fixed non-blocking connection with a sf::TcpSocket on Windows

- Minor improvements to sf::Packet operators (now using strlen and wcslen instead of explicit loops) (#118)

- Fixed TCP packet data corruption in non-blocking mode (#402, #119)

- On Unix systems, a socket disconnection no longer stops the program with signal SIGPIPE (#72)


- Updated the Window and OpenGL examples (got rid of GLU and immediate mode)

Nice to see a quicker turn around with the releases. You can download it here. It's nice to see they are offering many more binaries, that was a point of great confusion for people starting out with SFML in the past.


24. July 2013



My somewhat recently published book, PlayStation Mobile Development Cookbook is currently the top ranked game programming book on Amazon…


…in Japan …on Amazon …in Kindle format.


But it’s still pretty cool. Smile


I check Amazon sales rank every once in a while to see how my book is doing ( it’s the only insight into book sales I have, amazingly enough ) and today when I check Japan, I see:




Number one baby!  Open-mouthed smile


Granted, Amazon track this value in pretty close to real time, so I am the number one selling game programming book in Japan for RIGHT NOW… in an hour I might be 50th…  but I’ll take it!


In another bittersweet milestone, I also just found the book on pirate sites for the first time.  That actually took longer than I expected to be honest.  I suppose an author or game developer should take it as a badge of honour that people will pirate what you created.



Oh, and Japan, you rock!

Totally Off Topic

Month List

Popular Comments

How much interest do you have in Playstation Suite SDK tutorials?
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

19. April 2012



There is some question if the EULA even allows it, but I am wondering how many of you are interested in Playstation Suite specific content?  I am totally not looking for a reason to justify a Playstation Vita purchase, honest! Winking smile



Actually, it’s shiny and new and I am easily distracted.  I am quite impressed by what I have seen of the SDK so far, I like working with C# in general so I think I would enjoy writing about Playstation Suite SDK development… if only Sony will actually let me.



The question is, are the rest of you interested in the subject?

Totally Off Topic

blog comments powered by Disqus

Month List

Popular Comments