Skip to content

Latest commit

 

History

History
219 lines (193 loc) · 16.1 KB

game-programming.md

File metadata and controls

219 lines (193 loc) · 16.1 KB

Video Game Programming - comprehensive foundations

I list a lot of games to clone in this list. I do not mean make the exact same game down to the assets and name and everything. I mean make a game that uses the same mechanics. Don't get yourself sued for copyright violation. There are references at the bottom of this list to answer some common questions relevant only to this guide (and thus not present in the FAQ which contains a plathora of information pertinent to not only this guide, but the others as well.)

Tier 0 - Beginner "taste" of Game Programming - JavaScript based

Get familiar with JavaScript (Feel free to skip this and come back and "unskip it" if at any point you feel daunted by what comes later)

Get some experience doing graphics with JavaScript using processing.js

  • Course: Intro to JS: Drawing & Animation
  • Project: Build all assignments in the Drawing and Animation course
  • Course: Advanced JS: Games & Visualizations
  • Project: Build all assignments in the Games & Visualizations course
  • Course: Advanced JS: Natural Simulations
  • Project: Build all assignments in the Natural Simulations course
  • Project: Build a "pet project" game on Khan Academy using all the skills you've learned with processing.js. Make sure it has, at minimum, a "start game" screen, at least one level of a playable game that keeps score, and a "game over" screen.

Learn a smidge of math and algorithms so you can compute things

  • Book: Precalculus (feel free to skip if you're already doing 30 minutes a day of math on Khan Academy)
  • Course: Algorithms

Get Familiar with Phaser and setup your bookmarks to Phaser Docs and helpful links for getting/creating assets

Build these - in order - the complexity builds with each one

Tier 1

Tier 2

Tier 3

Tier 4

Tier 5

Tier 5 involves branching out to target the platforms you're most interested in and developing skills in the relevant technologies. At this point, you have a strong foundation in maths and algorithms, significant practice working with graphics, hands on experience building a variety of games, exposure to AI and Machine learning, exposure to networking and hardware concerns, and should have learned various software engineering practices (design, testing, debugging) so that you're writing quality code.

Now that you've got a really strong foundation, the sky's the limit. Pick the platform you want to develop for, Android, iOS, Windows, Linux, Mac, Web, XBox, Playstation, whatever - and start reading. Start with official docs, read them all. Find blogs dedicated to that platform. Rebuild some of the easiest projects you've done thus far, targeting that platform.

Use the Force :D

Bookmarks you should have

  • surge.sh - deploy your frontend projects here (or use github pages)
  • MDN - look HTML, CSS, and JavaScript stuff up here
  • Heroku - deploy your fullstack projects here (or hyperdev)
  • Firebase or mLab - database hosting
  • Material Design - lean on this when you need a structure for creating a minimalistic but awesome looking site
  • Material Palette - for selecting color schemes
  • GitHub - store your code here
  • Gimp - image editor
  • Blender - 3d creation suite
  • Inkscape - vector drawing
  • Tiled - tilemap editor
  • Leshy SpriteSheet Tool - HTML5 tool for creating, packing, and modifying sprite sheets and texture atlases.
  • OpenGameArt - open source game art (check the copyright, some are more open than others)
  • Wirify - for quickly turning a web page into a wireframe so you can see the big picture instead of all the graphics

For every game project

  • Mockup the game screens by hand, using Pencil, or in graphics software - before you start coding the game
  • Write a document describing the game, win conditions, lose conditions, and features you intend to include - before you start coding
  • Create a minimal demo before building out the whole things
  • Store your mockups, design documentation, and game progress in a versionable repository (GitHub)
  • Include tests :D
  • Include documentation on how to build and run the game

If you need a productive break from a course or book to clear your head, BUILD A GAME, then get back to the list. Here's some ideas (some are already present in the lists above):

  • Pong
  • Zork
  • Mastermind
  • Memory Puzzle
  • Galaga
  • PacMan
  • Breakout
  • Solitaire
  • Flappy Bird
  • Space Invaders
  • Super Mario Bros
  • Fruit Ninja
  • Last Stand
  • Tetris
  • Angry Birds
  • Bejeweled
  • Sokoban
  • Katamari Damacy
  • Blackjack (with AI opponents)
  • Checkers (with AI opponent)
  • Donkey Kong
  • Tron (two player, with option for multiplayer or AI opponent)
  • Pokemon
  • Monopoly (1-4 player, with option for multiplayer or AI opponent)
  • Bomberman
  • Diablo
  • Zelda
  • Scythe
  • Minecraft
  • Risk
  • Lunar Lander
  • Streetfighter
  • Castlevania