7 ms·
I'm working on making an open source version of Yoot Tower (aka Sim Tower, The Tower II) that runs in the browser! https://github.com/YootTowerManagement/YootT
by DonHopkins 3y ago
I'm working on making an open source version of Yoot Tower (aka Sim Tower, The Tower II) that runs in the browser!
https://github.com/YootTowerManagement/YootTower https://github.com/YootTowerManagement/YootTower
What led to this being possible: There was recently a discussion about elevators on Hacker News, and somebody mentioned SimTower and asked about the algorithms it used, so I gave Yoot a call to ask him, and he mentioned he wanted to open source it. I enthusiastically agreed to help him, and contribute my efforts porting the code and navigating the licensing and trademark issues, benefiting from my experience developing the open source version of SimCity for the OLPC:
https://news.ycombinator.com/item?id=39087437 https://news.ycombinator.com/item?id=39087437
>I know Yoot Saito (creator of SimTower) from my time at Maxis, so I just gave him a cold call out of the blue and asked. ;) I caught him drinking Jack Daniels in a Japanese bar, but he had some time to chat.
>He said he once did a big interview with BBC about SimTower (which would be worth looking up and watching if you can find it), and had a friend who worked in the elevator industry, who told him generally about how elevators worked, but much of it was secret and proprietary, so he had to come up with how they worked in the game himself, based on the general ideas he learned and his own experience and imagination.
>He also said he's interested in releasing the original source code of SimTower as free open source software, like I did with the original SimCity Classic source code, so I volunteered to help him and find other people who could help. Anybody interested? ;)
Yoot recently sent me a huge code drop of the Windows sources as well as the Gameboy SP and DS versions and production documents, and I'm sorting it out and cleaning it up to make a version that compiles with emscripten and runs in the web browser. We've decided it release it under the MIT license, and develop a version that runs in the web browser using emscripten and SvelteKit. I'd appreciate hearing from people who are interested in helping out, especially people who know Japanese, since there is a lot of great content in The Tower II that was only released in Japan that needs translating to English and other languages.
I've also started the process of porting the Micropolis (open source SimCity) code to run in the web browser in the same way as Yoot Tower, since they are both from the same era (and from Maxis) and share a lot of technologies and requirements, so they will both be able to share much of the code and infrastructure (WebAssembly, emscripten, embind, SvelteKit, canvas, html, css, user interface code, github actions, etc), with the eventual goal of being able to embed multiple Yoot Towers in your Micropolis city!
https://github.com/SimHacker/MicropolisCore https://github.com/SimHacker/MicropolisCore
>Open Source Micropolis, based on the original SimCity Classic from Maxis, by Will Wright.
>MicropolisCore C++ Core
>This is the source code for Micropolis (based on SimCity), released under GPL-3. Micropolis is based on the original SimCity from Electronic Arts / Maxis, designed and written by Will Wright, and ported to Unix by Don Hopkins.
>The origin of this repo is the "MicropolisCore" directory of the full micropolis repo, https://github.com/SimHacker/micropolis https://github.com/SimHacker/micropolis , but it's been stripped down and simplified.
>I am now in the process of converting it to build for WebAssembly with emscripten and bind to JavaScript with embind, and implementing a SvelteKit front-end.
Since I know the SimCity code well already and have ported it to many different platforms, and put years of effort into cleaning up the old code to be well organized C++ code with clean interfaces and doxygen documentation, it's a great way to learn the new technologies, work out the approach, and prepare for porting SimTower the same way.
ChatGPT has been a huge help, especially analyzing the code and writing documentation and translating the Japanese comments, and now I'm using Aider for them both:
Aider: AI pair programming in your terminal (github.com/paul-gauthier):
https://news.ycombinator.com/item?id=39995725 https://news.ycombinator.com/item?id=39995725
Here's a code map for each source file that I made with ChatGPT that focuses on helping me get a high level view of the code, its dependencies, purposes of each file, and porting issues:
https://github.com/YootTowerManagement/YootTower/blob/main/YootTowerCodeMap.md https://github.com/YootTowerManagement/YootTower/blob/main/Y...
The Nintendo Gameboy SP and DS versions of Tower have a whole lot of proprietary Nintendo SDK code and also their precious proprietary content and characters like Mario, which we are certainly not able to release ourselves under the MIT license, so I'm working with the more generic Windows version instead. Yoot owns the rights to the source code to his own games, but we can't just release stuff with Nintendo's crowned jewels like Mario and their SDKs in it as open source.
We are being extremely careful not to infringe on anyone’s copyrights or trademarks, of course! Maxis got into a lot of trouble with Godzilla just because they had a big monster on the box but didn’t mention Godzilla by name (but a review in a magazine did, which was too much), and Maxis (now EA) own the SimTower trademark, so we’re calling it Yoot Tower. The Nintendo Gameboy and DS console ports of SimTower have a lot Nintendo content (like Mario), so we definitely don’t want to make Nintendo or EA mad by infringing on their trademarks or copyrights.
Jeff Braun (CEO of Maxis) told me the story of what happened decades ago with Maxis and Godzilla, so I want to be careful to avoid stomping on anybody’s property:
>Maxis was sued by Toho. We never referred to the name Godzilla, our monster on the box cover was a T-Rex looking character, but... a few magazine reviews called the monster, Godzilla. That was all it took. Toho called it "confusion in the marketplace". We paid $50k for Godzilla to go away. In all honesty, Toho liked Maxis, they said $50k was the minimum they take for Godzilla infringement. I doubt you will need to worry about Toho, as long as there are no magazine reviews that call the monster Godzilla.
I guess the lesson is to always make sure to give your monsters a unique name, and don’t leave that up to the user’s imagination.
- teruakohatu 3y agoThis is exiting to hear. I got Sim Tower running not long ago and was unaware it had many subsequent and handheld versions. Have you looked at the game Project Highrise? How do you think it compares. Speaking of maxis, do you think we will ever see SimEarth open sourced?
- DonHopkins 3y agoI played a big game of Project Highrise (and of SimTower too) just recently, to immerse myself in the games and make them fresh in my mind before working on porting. I think Project Highrise is great! But in the same way I also appreciate the original SimCity 8-bit pixel graphics, and low-tech graphics in The Sims 1, I think SimTower still stands on its own as a game that can still be thoroughly enjoyed. Especially once we develop an SDK to enable user created content, that lets you add your own rooms and people, and program them with JavaScript, thanks to the way emscripten + embind lets you subclass and implement C++ classes in JavaScript, calling back and forth between the core C++ game engine and the JavaScript user interface and plug-ins. The YootTower repo README quotes some info about TowerKit that was used to develop many expansion packs for The Tower II that were only released in Japan, and I plan on making a more flexible modern version of TowerKit in the form of a Yoot Tower SDK that lets you dynamically script and download extensions in JavaScript instead of modifying and recompiling C++ code. https://github.com/YootTowerManagement/YootTower/tree/main https://github.com/YootTowerManagement/YootTower/tree/main https://web.archive.org/web/20000521002924fw_/http://www.openbook9003.co.jp/tower2/towerkit/whats_tk.html https://web.archive.org/web/20000521002924fw_/http://www.ope... >What's Tower Kit? >Tower Kit is optional software for The Tower II. In The Tower II, you can select the stage where you want to start the game using the concept of a "map." The Tower II package comes with three maps: "Shinjuku Subcenter," "Hawaii Diamond Head," and "Kegon Falls," and the "Tower Kit" adds these maps. By installing this tower kit, a new stage game will begin. Tower kits don't just add more stages. Each map has new features, allowing you to play a completely new game. >Please try the "Tower Kit" which allows for infinite variations. >A love story between you, the person in charge of the Liberty Island redevelopment project, and two men and women who are your subordinates. Your work will have a subtle influence on the course of your love life. The Tower II is the first attempt at a crossover between redevelopment and love, set in New York. What is the ending...? I did a similar thing for Micropolis/SimCity more than a decade ago, but with Python and SWIG, instead of emscripten and embind, so you could program your own agents (like PacBot, who follows the roads and eats traffic) and zones (like the Church of Pacmania, which worships and attracts PacBots, and causes lots of traffic to feed them). Micropolis Online (SimCity) Web Demo: https://www.youtube.com/watch?v=8snnqQSI0GE https://www.youtube.com/watch?v=8snnqQSI0GE A demo of the open source Micropolis Online game (based on the original SimCity Classic source code from Maxis), running on a web server, written in C++ and Python, and displaying in a web browser, written in OpenLaszlo and JavaScript, running in the Flash player. Developed by Don Hopkins. Source Code: https://github.com/SimHacker/micropolis https://github.com/SimHacker/micropolis HAR 2009 talk: Constructionist Educational Open Source SimCity: https://donhopkins.medium.com/har-2009-lightning-talk-transcript-constructionist-educational-open-source-simcity-by-don-3a9e010bf305 https://donhopkins.medium.com/har-2009-lightning-talk-transc... Church of PacMania: https://github.com/SimHacker/micropolis/blob/master/MicropolisCore/src/pyMicropolis/micropolisEngine/micropoliszone.py#L306 https://github.com/SimHacker/micropolis/blob/master/Micropol... PacBot: https://github.com/SimHacker/micropolis/blob/main/MicropolisCore/src/pyMicropolis/micropolisEngine/micropolisrobot.py#L292 https://github.com/SimHacker/micropolis/blob/main/Micropolis... https://github.com/SimHacker/micropolis/blob/master/laszlo/micropolis/classes/robot_PacBot.lzx https://github.com/SimHacker/micropolis/blob/master/laszlo/m... Back when I was porting SimCity to Unix in the early 90's, Maxis gave me the source code to SimEarth too, but I never had the chance to port it, and don't have permission now unfortunately. I'd love to make a modern version of SimEarth and SimAnt too, but neither of them were as successful or engaging a game as SimCity. Will Wright discusses SimEarth, SimAnt, and SimCity 2000 in this 1996 talk he gave to Terry Winnograd's user interface class, and also demonstrates a very early version of The Sims when it was called Dollhouse. His point was that SimAnt was too simple, SimEarth was too complex, but SimCity 2000 was just right, and Dollhouse was the next thing he was working on, which became The Sims. I'd also love to make a modern version of The Sims 1, but I don't have permission for that either, and have never been able to talk anyone at EA to reproduce the miracle it took to release SimCity. But I'm delighted and grateful to have the chance to work with Yoot Saito on SimTower instead, since he retained all the rights to his code, and we're both on the same page about educational games, constructionist education, and our respect for Alan Kay and Seymour Papert's philosophy about teaching kids to program and motivating it with games. A visual programming language in Micropolis and Yoot Tower would be great (that's the long term plan), like the SimAntics VPL in The Sims 1 (but much easier to use and extend). Will Wright - Maxis - Interfacing to Microworlds - 1996-4-26: https://www.youtube.com/watch?v=nsxoZXaYJSk https://www.youtube.com/watch?v=nsxoZXaYJSk Here's an article I wrote about that talk right after attending it, that I updated in later years after working with Will on The Sims, and then even more recently when Stanford finally published the video of the talk decades later: https://donhopkins.medium.com/designing-user-interfaces-to-simulation-games-bd7a9d81e62d https://donhopkins.medium.com/designing-user-interfaces-to-s...