Four score and seven weeks ago… and a hundred weeks before that… so about May 2008, I wrote a game called Tehénke (meaning Little Cow in Hungarian). It was a tiny proof of concept that MySQL+PHP+AJAX is suitable for creating a persistent world and a game in that world.
It was also the curriculum for a web programming course I was giving to a few friends. Well, “course” is a bit of an exaggeration, it was more like they came over to my house, brought some food and drink, we ate, they drank (I’m a quaker in that respect) and then I explained them about HTTP, HTML, PHP, JS and so on. The group broke up eventually but before that we had Tehénke and a brainstorming about Zandagort.
So what was Tehénke about? First there was grass growing continuously and being grazed by cows. Then you got cows being born (via binary fission), wondering around, grazing, getting old (cf the population pyramid on the right) and finally dying of either old age or lack of food or predation. And last but not least there was a tiger chasing and eating the cows. The tiger neither reproduced nor died.
And what was the gameplay? Ehm… nothing really. In a later version you could “spray” cows with the mouse cursor like from an airbrush (or cowbrush), but it was not the point. The point was a persistent world with the length of grass in each field, the position, age and satiety of cows and the position of the tiger stored and recomputed continuously. You could log out (actually close the browser) and the world just went on on its own.
Technically there was the model of the in-game world in MySQL, it was simulated in PHP and MySQL (mostly just updates like
update cows set vx=if(rand()<0.5,vx,floor(vx+3*rand()-1)),vy=if(rand()<0.5,vy,floor(vy+3*rand()-1))), a controller in AJAX (post) and PHP (for the actions like spraying) and a view in AJAX (get) and PHP (to have that nice “user interface” shown in the image above).
Long story short this was the seed from which Zandagort (a pretty complex MMORTS) hatched…