Project introduction
In this tutorial we’ll be creating a playable city builder game with javascript and WebGl.
We will start with some basic game concepts, like rendering a dot, and making it perform a random walk around the screen, moving onto more complex ideas, including several meta heuristic algorithms commonly used to simulate behaviors such as traffic, distribution of wealth among citizens, and their consumption of various resources such as food, water, and power. A few examples of these algorithims are Ant Colony Optimization Algorithms (https://en.wikipedia.org/wiki/Ant_colony_optimization_algorithms)
The code its self will only be lightly covered, though if you follow along (or download the source code at the provided link), it will run. More fundamentally I will be explaining the core logical components involved in creating a simulation style game.
I will be writing most parts of the tutorial in a compile to JavaScript language called sibilant (https://sibilant.org/), because this is what I find makes me the most productive. This language sticks to javascript semantics in most places, but with a different syntax. I will frequently be showing the outputted JS to make sure no one gets lost in syntax though.
This being the case, I encourage you to follow along with what ever language you feel most comfortable with, if you want to. here is a link to a list of several popular ones that exist. https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js
What are the requirements? In order to get the most out of this tutorial, you should have at least:
a basic understanding of JavaScript, HTML, and CSS.
Intermediate to "complete" understanding of at least one programming language, regardless of if that is js or some other.
an intermediate to advanced understanding of Object Oriented Programming,
You know what a method is.
An understanding of the fundementals of Functional programming
You know what it means to "map" somthing from one type to another.
know of the basics of linear algebra
you know what a matrix is, and know the basics operations one can take on a matrix. Willingness and desire to learn
What is the target audience? This stream is for you if:
You like simulation games like SimCity, or Cities:SkylinesYou have an interest in concepts typically associated with the field of AI, such as Neural networks, or Biologically Inspired Algorithms.you like to think of applications separately from the code written to make them run