Great! I'll finally be able to buy all commerce spots in Berlin (cheapest city) to avoid any competition, and _then_ open a restaurant.
I used to deal only with "ice cream" (illegal weapons) trading, buying in one city and selling them on another, to quickly earn lots of money, and then buying commercial spots but never opening them (too much hassle, having to micro-manage shops).
But after having bought about 200 or so, the game would inevitably crash a few weeks after my save file, so in the end I stopped playing it. I never got the exact details about the bug, but I hope this remake won't have it!
Besides that, the most fun thing was trying weird pizza recipes and seeing that the taste algorithm was a bit weird. I could put lots of chicken, or pineapple, and mix a few ingredients, and have some age groups rate them very highly.
But sabotaging the competition was still funnier than handling a normal business.
I'm writing the engine from scratch (not re-creating the original engine) so it definitely won't have the original bug. Of course I'll have my own bugs but at least its open source now so it's fixable by more people :D
the most profitable pizza, pizza base + one (literally one) piece of minced tomato, yes you read that right, one “nico” of tomato
that pizza will set you back 0 USD because rounding error, the dough is free (if I remember well) and a bit of minced tomato is less than a rounding error, so effectively zero
I'm pretty sure you just described Little Caesar's Pizza business model. I recall way back they were $5 but even today here in California their large pepperoni is only $10 where competitors are charging $27-35
By making the roads single-direction and roads owning the movement, I think it’s been made equivalent to a conveyer belt… which means factorio’s conveyor belt optimizations might be relevant.
Eg storing the delta between items rather than tracking position directly, because the distance between cars is static for the length of the road, except during compression, insertion or removal of a car
That’s the compression, same story in factorio. Before/after compression it’s static, so you can avoid having to update any value.
The main difference from factorio belts I think is actually in the insertion — if there’s no room in the belt, insertion is blocked; whereas I’d expect a car to “slip in”.
But I think you can still say that maintains the property that a compressed belt will always be compressed, excepting insert/removal; and insertion/removal just requires updating a static number of deltas (2, in the middle of the line, 1 at the end of it)
And Factorio belts can have stuff added or removed, also.
The thing is a belt is modeled in terms of deltas rather than positions--there is no need to move each object each cycle. An object has a distance from the object in front. When the belt moves forward this relationship does not change--no need to update every pointer (and there can be a *lot* of belts in the game!) If the head of a belt can't move you only need to update one delta--the gap between the first free item and the stuck item in front of it and that value can already be known, no need to search. If you move the free item up against the stuck item you walk down the belt to find the new first free item.
You only need to modify the belt model if something is either added or removed from the belt. Objects get removed only by inserters, inserters examine only one cell of the belt, grabbing anything in that cell that matches what they are willing to grab (if they are feeding a machine they will only grab what the machine wants, otherwise they'll respect the filter list assigned to them.) When something gets added to a belt you add it to the list and update the delta of the object behind. No general update of the belt is needed in any situation, any more than you need to do anything to the items in a queue as you add and remove items.
Factorio is a game about optimization and the developers did a very good job of applying that idea to the game math. That is, until the masses of asteroids in the Space Age DLC.
The third image showing the arrows for traffic direction gave me a tiny eureka moment. You don't need complex rules for what cars can do at an intersection. You don't reason about the intersection at all. You reason about the lanes!
At each choice cell, you just weigh the turn lower than going straight when randomly deciding. And if you don't want U-turns, you set a rule like it describes, or any sort of "cooldown" on turning.
It's amazing how "bad/inaccurate" the traffic simulators are in those games, even with great mods, and yet how informative they are about real traffic patterns.
I would argue it's not that you don't need pathfinding because the roads tell the cars where to go, it's because the cars aren't trying to get anywhere. Unlike cities skylines and co where a car is going from a place to a place, random directions at intersections are dramatically simpler. Which isn't necessarily worse, it's just a different problem.
Anyone know of any communities/game jams with the theme of "has no business running on such low hardware requirements"? Kind of like the demoscene but for games.
There were many games growing up that gave me such a warped view of what was to be expected from the hardware. Battletoads, Crash Bandicoot, Marathon Trilogy (Macintosh), Age of Empires (Multiplayer), Roller Coaster Tycoon (of course).
Not entirely sure if it's fit the critera but there is usually pops up retro-themed compos for most retro platforms meaning there's natural hardware restrictions (like demos for retro platforms).
8bit like Nes (Nesjam late may/june), Gameboy(GBJam was last year, bi-annual), Atari,etc, but also for MSDOS, Amiga and more "mid-school" platforms together with semimodern like PS1.
Now, even with modern tools it's plenty of work to get impressive things working on older platforms (I had a Gameboy techdemo last time there was a compo that's due to grow ridiculously much).
Frontier Elite (David Braben). A vast universe, with awesome space flight mechanics (gravity, etc), great graphics/audio, all fitting on one floppy disk. It was coded in assembly:
For older games, I would say the original Prince of Persia. I played it on an 8088 machine, and it was pretty impressive how he made the animations sophisticated and smooth.
Maybe an issue would be people not all having the same type of hardware though? Maybe you target an emulator. (Some Fantasy Consoles sort of count here?)
I haven't looked expensively but some of the retro themed jams were missing the "spirit" I was expecting.
I did a Nokia jam a while back — monochrome, beeps — and I remember being kind of annoyed that the rules technically allowed 3D Unity games as long as they followed resolution and color palette.
(A 3D cube spinning on a TI calculator is a different matter ;)
They definitely do. I recommend GP check out PICO-8 which has some VERY real games on it like the original Celeste (by its original creators), Cattle Crisis, POOM, Combo Pool, Into Ruins, Dank Tomb, UFO Swamp Odyssey, Porklike, and much more. Most of which you can play on Itch.io for free in your browser.
I’ve been having a blast making a “real” and very full-featured PICO-8 game to serve as a “market fit” prototype — if a PICO-8 game on Itch gets meaningful attention, I’ve “found the fun” and therefore I should make “the full version” (non-PICO-8) for Steam, etc.
Yeah, I imagine a target emulator is the way to go for this kind of thing.
Speaking of your last comment: while very impressive, I feel a bit disappointed when someone's done something amazing with a Game Boy or SNES or whatnot, but the solution involves shoving an entire computer in the cartridge. This is still very cool but your console just becomes a head unit for your GTX 4080 or whatnot.
I love that this has been in development for so long. It's a breath of fresh air in this manic vibe coding era, and a reminder to
me that I can slow down.
> cars don't need to know where they're going. Each road tile type carries its own direction. Road tile 0x16 is the bottom part of a horizontal road, meaning that cars can only drive from left to right on these roads.
There's always a simple explanation for anything that looks too complicated for an old game to do.
Fast Food Tycoon 2 (AKA Pizza Connection 2) was absolutely amazing. I spent so many hours customizing my pizzas and filling up the competing pizzerias with cockroaches and woodworms (and occasionally kidnapping their employees).
The English version had some bizarre translation quirks, but those just add to the retro charm.
One time I found a bug where the game would crash if you followed a courier into an enemy HQ building while they had guards inside (I guess they kill the courier, which then leads to a null reference or something?). When the game crashed I was so scared that I had broke my grandpa's computer. Good times.
The only thing it was missing was multiplayer. I hope that somebody creates a full OpenRCT2 style remake of it someday; it has so much potential for online multiplayer and wacky mods.
My high school girlfriend and I played this game all the time; trying to build the pizzas to get the best score was always super frustrating. It always felt like I could be a single pixel off and get a really low score, but I loved building my "empire"
> My high school girlfriend and I played this game all the time; trying to build the pizzas to get the best score was always super frustrating. It always felt like I could be a single pixel off
Pizza Tycoon was one of those games we got years later for £5 in some repackaged "Classic Games" collection but it came without a booklet or anything.
Supposedly the booklet was the key to getting the pizzas right as it had all the instructions on which elements were needed & where. (I heard someone say they used this as an antipiracy thing as without the booklet, it'd be playable but impossible, not sure if that's true lol)
We used to just cargo cult our way to good pizzas.
That's true! In the original if you don't have at least 3 of the pizza recipes from the "cook book" that shipped with the game your restaurant popularity stat gets divided by 8, which makes it really difficult to make any profit :)
The thing about the anti-piracy is true, at least in the original version (I don't know about re-releases).
The way it worked was you had to offer at least a few pizzas that were reasonably close to recipes from the booklet in order to get any customers. Once you had that, you could get creative with custom recipes but if you only did custom recipes, you were bound to fail.
To be fair, I suspect real life is a bit like that too - there will be a big enough % of potential customers who want one of "the classics" for where you are (margherita etc in Italy, pepperoni etc in the UK, whatever) that basically every place that serves pizza will have the same first few options even if they get creative with the rest of the menu.
When I was a kid I manually made it through the cliffs of logic in KingsQuest VI by trial and error and taking notes for days, before I realized the answer was in the book. Almost did the same thing for translating hieroglyphics the Dagger of Amon Ra, but I remembered what happened before and went to check.
> Maybe 20 or 30 tiny sprites at a time, but they navigate the road network, queue behind each other at intersections, and generally look like a living city. Yes, it was a bit buggy because sometimes they would drive through each other, but it was good enough to just give some sense of life to the map. All that on a 25 MHz 386 CPU.
is that much of anything for a 25MHz CPU? We're talking about something cycling 25 million times per second, surely that's not such a big deal for a 386?
Thank you for writing effectively what I was curious about. "Simulating traffic" can mean a lot of things, I remember on the old SimCity they just "colored" each road-tile as red/yellow/green, (no doubt from a ternary flag) and the visuals just sort of blended between the states (car density.)
Being able to do millions of things each second should enable all sorts of behaviors, especially for a game of the era when you asked the OS to kindly step aside while you run your program.
> especially for a game of the era when you asked the OS to kindly step aside while you run your program.
totally! I was also wondering this. I know each operation takes some number of cycles, but there's still 25,000,000 of them happening per second, and there's no multi-tasking... :shrug: :)
Hmm - it occurs to me that it would be cool to have modules inside a regular city-simulator like SimCity or CitySkylines such that you can build additional games on top of that engine. A bit like Unity (?) or Roblox (?)
Then you could take advantage of the deep simulation capability, not worring about traffic and things like that - for your Bookstore Tycoon or Donut Tycoon franchise.
Yeah the DOS version was called Pizza Tycoon everywhere. The Amiga version was in German and was called Pizza Connection. Only for the digital re-release in 2017 did they go with Pizza Connection, but all the assets of the DOS version (including that re-release) call it Pizza Tycoon.
It's been mentioned a few other places in the comments here, but I recommend PICO-8 for beginning game developers. It's a really well-designed fantasy console, so it feels like you're actually developing for specific hardware due to the limits. But you're programming in Lua with an easy-to-use API, and you can make the entire game using PICO-8, since it has a code editor, sprite editor, map editor, sound fx editor, and music editor. It's a really nice experience -- I think this is the primary reason people love it and you hear so much about it.
If you want a less-restrictive game dev system or can't afford the (well worth it!) $15 for Pico-8, there are many great free methods, like LÖVE (also uses Lua), Godot (GDScript or C#), Phaser (js), and so on.
"an open-source reimplementation of the 1994 DOS game"
I love that communities band together to keep these things alive and even thrive beyond the original.
I was impressed with folks who learned so many games as kids -- I got sucked into Simcity 2000 for quite a spell... then Simcopter and "Streets of Simcity", which I soon found out had almost zero ppl looking to play online. It was kind of like GTA3, if in GTA3 your car could hop over other cars, glide with an airfoil, drop mines, and had a machine gun and/or rockets. Also no sex workers, though in Simcopter one developer did insert an easter egg involvinging a bunch of dudes showing up... I got yelled at in middle school for activating it in the school computer lab. (they also threatened to have me dragged downtown to the fbi for repeatedly playing the word 97 pinball egg -- being a "hacker" post columbine was not fun).
anyways i've been looking for offline, open source games so thanks for sharing.
There are some rules where in their collision detection they basically don't check; for example cars going east will never intersect with cars going south so just drive through them. I'm not sure if this was an optimisation to just speed up collision detection by checking fewer cases or they were trying to prevent too many traffic jams by having better collision detection. Probably a bit of both :)
I couldn't understand why someone would want to reimplement Pizza Tycoon, until I realized I played it's sequel as a child, which is much maligned compared to the original.
I tried the sequels and they never clicked for me either. Probably also due to the missing nostalgia factor :)
As to why I did this; when I had some time between university and starting a job many years ago I was looking for a hobby coding project and was inspired by TTDPatch and OpenTTD so I figured I'd do the same but for Pizza Tycoon. No specific reason other than that I played the game a lot as a teenager and there were some small things that I found annoying, so I saw some room for quality of life improvements. Fully aware that not many people care about this game (also didn't really expect to really get very far tbh), but still I had (and have) a lot of fun and learned a lot in the process of writing a modern engine for this.
Pizza Tycoon, while not the most famous game, is still very well regarded! I've only played Pizza Tycoon/Connection 2, and so I don't think nostalgia is why I didn't love it. That said, something about it stuck with me over all these years (I ended up purchasing it again as an adult on GOG, long having lost the disk).
Good luck! It's not always about the destination :P
This is a really nice observation. It reminds me of how cellular automata traffic models work in general — instead of giving each car a brain, you encode the rules into the cells and the car just asks "what does this cell tell me to do?" Way cheaper than pathfinding, and the emergent behavior from simple local rules often ends up looking more natural than scripted AI would. The constraint of a 25 MHz CPU basically forced them into the more elegant solution.
Fascinating how constraint breeds elegance. 25 MHz forces you to find O(1) or
O(log n) solutions where modern devs would reach for O(n²) and more hardware.
Same principle applies to on-chain computation: gas costs force you to find
closed-form solutions. For example, computing φⁿ (golden ratio to the power n)
naively requires n multiplications. Using the matrix identity [[1,1],[1,0]]^n
via repeated squaring gives you O(log n) — and the Fibonacci numbers fall out
for free. The old game devs would have appreciated EVM constraints.
I used to deal only with "ice cream" (illegal weapons) trading, buying in one city and selling them on another, to quickly earn lots of money, and then buying commercial spots but never opening them (too much hassle, having to micro-manage shops).
But after having bought about 200 or so, the game would inevitably crash a few weeks after my save file, so in the end I stopped playing it. I never got the exact details about the bug, but I hope this remake won't have it!
Besides that, the most fun thing was trying weird pizza recipes and seeing that the taste algorithm was a bit weird. I could put lots of chicken, or pineapple, and mix a few ingredients, and have some age groups rate them very highly.
But sabotaging the competition was still funnier than handling a normal business.
... but they'll be just as entertaining?
that pizza will set you back 0 USD because rounding error, the dough is free (if I remember well) and a bit of minced tomato is less than a rounding error, so effectively zero
then you sell the pizza for the lowest price
customers will hate it, but the price is so good
you don’t even need ice cream anymore
Eg storing the delta between items rather than tracking position directly, because the distance between cars is static for the length of the road, except during compression, insertion or removal of a car
https://www.factorio.com/blog/post/fff-176
The main difference from factorio belts I think is actually in the insertion — if there’s no room in the belt, insertion is blocked; whereas I’d expect a car to “slip in”.
But I think you can still say that maintains the property that a compressed belt will always be compressed, excepting insert/removal; and insertion/removal just requires updating a static number of deltas (2, in the middle of the line, 1 at the end of it)
The thing is a belt is modeled in terms of deltas rather than positions--there is no need to move each object each cycle. An object has a distance from the object in front. When the belt moves forward this relationship does not change--no need to update every pointer (and there can be a *lot* of belts in the game!) If the head of a belt can't move you only need to update one delta--the gap between the first free item and the stuck item in front of it and that value can already be known, no need to search. If you move the free item up against the stuck item you walk down the belt to find the new first free item.
You only need to modify the belt model if something is either added or removed from the belt. Objects get removed only by inserters, inserters examine only one cell of the belt, grabbing anything in that cell that matches what they are willing to grab (if they are feeding a machine they will only grab what the machine wants, otherwise they'll respect the filter list assigned to them.) When something gets added to a belt you add it to the list and update the delta of the object behind. No general update of the belt is needed in any situation, any more than you need to do anything to the items in a queue as you add and remove items.
Factorio is a game about optimization and the developers did a very good job of applying that idea to the game math. That is, until the masses of asteroids in the Space Age DLC.
At each choice cell, you just weigh the turn lower than going straight when randomly deciding. And if you don't want U-turns, you set a rule like it describes, or any sort of "cooldown" on turning.
https://www.youtube.com/watch?v=pGCoLh3NL7g
It's all about the lanes and the flow.
There were many games growing up that gave me such a warped view of what was to be expected from the hardware. Battletoads, Crash Bandicoot, Marathon Trilogy (Macintosh), Age of Empires (Multiplayer), Roller Coaster Tycoon (of course).
8bit like Nes (Nesjam late may/june), Gameboy(GBJam was last year, bi-annual), Atari,etc, but also for MSDOS, Amiga and more "mid-school" platforms together with semimodern like PS1.
Now, even with modern tools it's plenty of work to get impressive things working on older platforms (I had a Gameboy techdemo last time there was a compo that's due to grow ridiculously much).
https://en.wikipedia.org/wiki/Frontier:_Elite_II
You could do the slingshot effect in it.
For older games, I would say the original Prince of Persia. I played it on an 8088 machine, and it was pretty impressive how he made the animations sophisticated and smooth.
Reminds me of this. I found their video that had a breakdown of some of what they needed to do to make a game fit on NES really fascinating!
Maybe an issue would be people not all having the same type of hardware though? Maybe you target an emulator. (Some Fantasy Consoles sort of count here?)
I haven't looked expensively but some of the retro themed jams were missing the "spirit" I was expecting.
I did a Nokia jam a while back — monochrome, beeps — and I remember being kind of annoyed that the rules technically allowed 3D Unity games as long as they followed resolution and color palette.
(A 3D cube spinning on a TI calculator is a different matter ;)
They definitely do. I recommend GP check out PICO-8 which has some VERY real games on it like the original Celeste (by its original creators), Cattle Crisis, POOM, Combo Pool, Into Ruins, Dank Tomb, UFO Swamp Odyssey, Porklike, and much more. Most of which you can play on Itch.io for free in your browser.
I’ve been having a blast making a “real” and very full-featured PICO-8 game to serve as a “market fit” prototype — if a PICO-8 game on Itch gets meaningful attention, I’ve “found the fun” and therefore I should make “the full version” (non-PICO-8) for Steam, etc.
Speaking of your last comment: while very impressive, I feel a bit disappointed when someone's done something amazing with a Game Boy or SNES or whatnot, but the solution involves shoving an entire computer in the cartridge. This is still very cool but your console just becomes a head unit for your GTX 4080 or whatnot.
There's always a simple explanation for anything that looks too complicated for an old game to do.
The English version had some bizarre translation quirks, but those just add to the retro charm.
One time I found a bug where the game would crash if you followed a courier into an enemy HQ building while they had guards inside (I guess they kill the courier, which then leads to a null reference or something?). When the game crashed I was so scared that I had broke my grandpa's computer. Good times.
The only thing it was missing was multiplayer. I hope that somebody creates a full OpenRCT2 style remake of it someday; it has so much potential for online multiplayer and wacky mods.
Pizza Tycoon was one of those games we got years later for £5 in some repackaged "Classic Games" collection but it came without a booklet or anything.
Supposedly the booklet was the key to getting the pizzas right as it had all the instructions on which elements were needed & where. (I heard someone say they used this as an antipiracy thing as without the booklet, it'd be playable but impossible, not sure if that's true lol)
We used to just cargo cult our way to good pizzas.
The way it worked was you had to offer at least a few pizzas that were reasonably close to recipes from the booklet in order to get any customers. Once you had that, you could get creative with custom recipes but if you only did custom recipes, you were bound to fail.
is that much of anything for a 25MHz CPU? We're talking about something cycling 25 million times per second, surely that's not such a big deal for a 386?
Being able to do millions of things each second should enable all sorts of behaviors, especially for a game of the era when you asked the OS to kindly step aside while you run your program.
totally! I was also wondering this. I know each operation takes some number of cycles, but there's still 25,000,000 of them happening per second, and there's no multi-tasking... :shrug: :)
Then you could take advantage of the deep simulation capability, not worring about traffic and things like that - for your Bookstore Tycoon or Donut Tycoon franchise.
Pizza Tycoon was the US market name, internationally it was released as Pizza Connection
https://www.gog.com/en/game/pizza_connection
https://store.steampowered.com/app/598990/Pizza_Connection/
If you want a less-restrictive game dev system or can't afford the (well worth it!) $15 for Pico-8, there are many great free methods, like LÖVE (also uses Lua), Godot (GDScript or C#), Phaser (js), and so on.
anyways i've been looking for offline, open source games so thanks for sharing.
edit: actually if it hits an end of a road, it spawns to a lane next to it either goes opposite direction or turns (referencing first gif)
Wonder if they could have considered ensuring no cars stack on top of each other
As to why I did this; when I had some time between university and starting a job many years ago I was looking for a hobby coding project and was inspired by TTDPatch and OpenTTD so I figured I'd do the same but for Pizza Tycoon. No specific reason other than that I played the game a lot as a teenager and there were some small things that I found annoying, so I saw some room for quality of life improvements. Fully aware that not many people care about this game (also didn't really expect to really get very far tbh), but still I had (and have) a lot of fun and learned a lot in the process of writing a modern engine for this.
Good luck! It's not always about the destination :P
Same principle applies to on-chain computation: gas costs force you to find closed-form solutions. For example, computing φⁿ (golden ratio to the power n) naively requires n multiplications. Using the matrix identity [[1,1],[1,0]]^n via repeated squaring gives you O(log n) — and the Fibonacci numbers fall out for free. The old game devs would have appreciated EVM constraints.