9 ms·
So they've used some of this to hire a second developer. I wish them the best of luck, entering a codebase developed by a single dev for 15 years.
by moritonal 4y ago
So they've used some of this to hire a second developer.
I wish them the best of luck, entering a codebase developed by a single dev for 15 years.
- ttctciyf 4y agoSeems to have hit the ground running: https://steamcommunity.com/games/975370/announcements/detail/3625992251248624683 https://steamcommunity.com/games/975370/announcements/detail...
- warent 4y agoI never played this game, but heard it described as "vast". Was curious what programming language it was written in, and instead found this: https://www.dwarffortresswiki.org/index.php/Language https://www.dwarffortresswiki.org/index.php/Language WTF is this game?
- metiscus 4y agoDwarf Fortress is an almost two decade project of interactive storytelling in the form of a video game. They've modeled the world down to an incredible level including personal relationships between people, races, and nations, skill growth, a mostly correct geologic model, the depth of this game is immense. The lives of each person alive in the simulated world are recorded and details are explorable etc. They model the languages spoken by the various races, basically an incredibly creative group of people just recursively modeled the world for something like 15 years adding depth where they wanted and the result is Dwarf Fortress.
- zhynn 4y agoDF is a procedurally-generated colony sim (build a colony in the wilderness and survive/thrive/die in an entertaining way). But that's not _why_ it is vast. The vastness comes from three main things, I think: 1. the number of distinct procgen systems. Creatures have procgen phenotypes and personalities. The landscape, biomes, and simulated geology/hydrology. Biomes. The civilizations and simulated history. The names of things. Religion, Instruments, cultural songs and dances, masterwork items and treasures, legendary forgotten beasts, and a bunch of stuff that doesn't come immediately to mind. 2. the inter-relatedness of the procgen systems. In many procgen games, the different systems do not affect each other. Systems that affect each other multiply the possibilities. And if they all affect each other, it's exponential. They all multiply each other. It's hard to describe how hard this would be to build in a way that wasn't just a mess of nonsense, but they did it by focusing entirely on the underlying systems and the UI was impenetrable ASCII with baffling UX. That has changed with the steam edition. 3. This game was written by two guys over the course of more than a dozen years funded by donation. It is an exceedingly rare and towering artistic achievement. This game should not exist, and will almost certainly never be surpassed (at least not in the same artisanal way). One of the goals that was mentioned as a north star was that they wanted this game engine to be able to generate any fantasy story that has ever been told. But that none of those stories would be explicitly coded in, the world was just capable of making it happen. You know, I probably could have just linked to their roadmap. The game is only halfway complete by the creator's opinion: https://www.bay12games.com/dwarves/dev.html https://www.bay12games.com/dwarves/dev.html That will give you some idea of the INSANE ambition of this game.
- SkyBelow 4y agoWhile you go into detail on the generation of the world, I think the simulation is another major factor that goes into it. Once you start playing the game, the level of detail used in generating the world is now used applied locally to simulating it. An example I like to use is to explain a bug where people's games were ending poorly (or with lots of FUN in dwarf fortress speak) because dwarfs were having mental breakdowns because their pet cats were dying. Which was because the game simulated the cats well enough that they could get alcohol poisoning and die. But why were the cats drinking that much alcohol? Because when they walked through dining rooms, the game simulated the dwarves getting drunk and spilling alcohol which stayed on the floor for some amount of time. If a cat walked over it, it got on their fur. When the cat cleaned themselves, which was also simulated, they would consume some of the alcohol on their fur. The bug was that each micro-dose of alcohol from licking themselves was accidentally being calculated like a full flagon of ale providing the small cat with far too much alcohol. The level of the world generation with the level of simulation create a basis for a fantasy immersion that you cannot find elsewhere. The UI limitations, even with the steam version, do prevent most from becoming immersed into the world, but there seems to be a crowd who are brought in by the fidelity of the simulation and who can get past the UI that let's them experience something that cannot be found elsewhere.
- Scarblac 4y agoAnd that several internal organs of a dwarf are simulated separately. Some of them are fat, and fat has a relatively low melting point. Some rooms got warm enough (because lava was running through nearby rock) to melt the fat, killing the dwarves. The bug was, iirc, that the AI didn't route around this effect. Of course, for a long time making rooms like this and leading enemy armies through them was an important part of fortress defense, because actual militias were so bugged at the time... Also insanely strong carps that drag dwarves into the water, killing them. After all, swimming is exercise, it trains strength, and carp swim all day long...
- Arrath 4y agoIIRC, it used to be that very rarely a dwarf might survive the process of having all their fat melted off. This served to turn them into little Terminators, as they had little left that could catch fire again and their nerves were cauterized by the experience so they couldn't feel pain any more.
- Sharlin 4y agoAnd the current languages are pretty much just Markov-chain-based placeholders for an eventual much more complex system with, presumably, actual grammar and all. Procedurally generated for every new world created.
- kibwen 4y agoDon't miss the investigation into Dwarven grammar: http://www.bay12forums.com/smf/index.php?topic=173289 http://www.bay12forums.com/smf/index.php?topic=173289
- suby 4y agoTo answer the question for anyone interested of what programming language it is written in, Stack Overflow did a Q&A with Tarn Adams (developer) where they asked this, among other things. Q: What programming languages and other technologies do you use? Basically, what’s your stack? Has that changed over the 15-20 years you’ve been doing this? A: DF is some combination of C and C++, not in some kind of standard obeying way, but sort of a mess that’s accreted over time. I’ve been using Microsoft Visual Studio since MSVC 6, though now I’m on some version of Visual Studio Community. I use OpenGL and SDL to handle the engine matters. We went with those because it was easier to port them to OSX and Linux, though I still wasn’t able to do that myself of course. I’m not sure if I’d use something like Unity or Unreal now if I had the choice since I don’t know how to use either of them. But handling your own engine is also a real pain, especially now that I’m doing something beyond text graphics. I use FMOD for sound. All of this has been constant over the course of the project, except that SDL got introduced a few years in so we could do the ports. On the mechanical side of the game, I don’t use a lot of outside libraries, but I’ve occasional picked up some random number gen stuff—I put in a Mersenne Twister a long while ago, and most recently I adopted SplitMix64, which was featured in a talk at the last Roguelike Celebration. https://stackoverflow.blog/2021/12/31/700000-lines-of-code-20-years-and-one-developer-how-dwarf-fortress-is-built/ https://stackoverflow.blog/2021/12/31/700000-lines-of-code-2...
- __MatrixMan__ 4y agoTake a look at this bug, perhaps it'll give you an idea: http://www.bay12games.com/dwarves/mantisbt/view.php?id=9195 http://www.bay12games.com/dwarves/mantisbt/view.php?id=9195
- sli 4y agoThis is the first thing I tell people about DF's simulation detail. Even my mother knows about this bug.
- __MatrixMan__ 4y agoIf every bug I wrote were as thoroughly mired in the business logic as this bug, I'd consider myself a good developer.
- topologie 4y agoIt's freaking awesome is what it is. Seriously, one of the most fascinating games ever. I'd recommend checking the following articles to get a good overview of the whole thing: - https://www.nytimes.com/2011/07/24/magazine/the-brilliance-of-dwarf-fortress.html https://www.nytimes.com/2011/07/24/magazine/the-brilliance-o... - https://stackoverflow.blog/2021/12/31/700000-lines-of-code-20-years-and-one-developer-how-dwarf-fortress-is-built/ https://stackoverflow.blog/2021/12/31/700000-lines-of-code-2...
- sushisource 4y agoDF's codebase is honestly the closed-source code I'm most interested in seeing. My expectation is it's just an absolute mess, but I'm so curious.
- umvi 4y agoEspecially since it's developed without Git or any sort of version control...
- stronglikedan 4y agoWell, they certainly didn't need distributed version control, but I'm sure there was some sort of version control used, even if it was daily backups, or just copies upon copies of files.
- 0cf8612b2e1e 4y agoI fail to see how "real" version control would significantly alter this project. He's a solo developer, so the history is likely going to be a linear series of commits. That's not to say that there are not quality of life gains to be made, but dated backups of the repository would be fine.
- Retric 4y agoIt’s not that version control is the only viable option, just that not using it suggests he’s not doing many other things. As you say there’s quality of life improvements to be had. If he’s not aware of them I suspect he’s reinventing the wheel in new and interesting ways.
- flippinburgers 4y agoThe devil is in the details. Being able to see a comment history alongside file level changes is very powerful over time. Version control is priceless.
- SahAssar 4y agoTagging changes with messages is a huge plus. Seeing when each line changed instead is another. Being able to group changes into bundles/commits is another. Even on solo projects with linear history some sort of version control is valuable.
- hinkley 4y agoDoes anyone know how they implemented the graphics for the new DF version? I'm still hoping for a Mac or iOS version, but that would be much easier if they used OpenGL ES, which they might not have with only one developer. > but this should eventually help with bug fixes, ports eeeeeeeeee
- Thorentis 4y agoThis would be a lot of fun for most seasoned engineers. Tbh I'd rather enter a 15 year old code base written by a single person (who is still contactable and available) than a 15 year old code base written by hundreds of people, some of whom have died, moved on, or are others unreachable, and the inevitable bad patterns being followed thanks in part to Conway's law. A monolith made by a single dev is likely in my opinion to be much more approachable.
- kupopuffs 4y agoSurely he'd have a much better understanding of the bigger picture, but there would be soo much code forgotten if it were me!