Thursday, January 31, 2019

Aims and methods

(Note: A lot of the information here is out of date, as you can see from looking at later posts, but I've left it as it is to reflect the state of the project at the time this post was written!)

Perhaps the most important thing to say about this project is that I'm a complete amateur. I am not a programmer or a computer scientist; I'm not a geographer; I'm certainly not a mathematician. The process of making Undiscovered Worlds is basically one of me trying to find workarounds to avoid, with great difficulty, problems that real programmers would solve with ease.

Inevitably, then, UW is wildly inadequate in many ways and horribly bug-ridden. By nature I'm a perfectionist, but the process of hacking this thing into shape has lowered my standards to the point where I'm generally happy when it produces decent-looking results most of the time.

I'm programming this in AppGameKit tier 1, which is really a version of BASIC. Don't judge me - I said I'm not a proper programmer. This is an amazingly unsuitable language for a project of this kind, but, well, it's what I know, and this is a personal project for fun. I do know some C++ and intend to translate UW over to that language once it's functioning fairly well. The structure of the language is not really all that different so I'm hoping, probably vainly, that while this will be a lengthy and tedious process, it won't be too difficult. As it stands, though, the program does function, more or less. I've only adapted three short functions by other people - one to draw splines, one to draw blines, and one to draw circles. Apart from these it's entirely my own work, which I'm quite pleased about.

So what's the purpose of all this? Really, my interest is not in maps as aesthetic ends in themselves; it's in getting the computer to create imaginary worlds, complete with procedurally generated flora, fauna, and perhaps even civilisations. So the maps that UW is creating are only really tools to help explore the generated world, not the end purpose of the program. In that respect, my goal is different from Scott Turner's in Here Dragons Abound, as he is explicitly interested in the maps rather than the places they depict. The same applies, I think, to Martin O'Leary's Uncharted Atlas project, which is focused on creating maps of a very particular style. Obviously I'd like my maps to look good, but I'm not mainly focused on their aesthetics.

My aim overlaps a bit more with that of Tarn "Toady One" Adams' Dwarf Fortress, which is all about simulating a world to such an absurd level of detail that interesting narratives are spontaneously generated by the player's interactions with the model. The interesting thing here is that when you start a new game in Dwarf Fortress, it creates a new world from scratch for you to play in, and this includes not only its geography but a fabulously detailed history, including the rise and fall of civilisations, the life stories of thousands of historical characters, cultural events, mythologies, and more. You can browse all of these in a horribly unwieldy encyclopaedia - the insanity-inducing "Legends Mode" - which for me at least is more interesting than actually playing the game.

Obviously I can't possibly hope to match that level of complexity, and I'm not trying to make a game, at least not for now, but this idea of a procedurally generated world that can be examined as if browsing a huge atlas is what I would like to emulate. Adams' interest is primarily the civilised world - the actions of dwarves, humans, elves, and other intelligent creatures, and the history they act out. The physical world itself isn't really the focus of his simulation, and there the modelling is actually quite straightforward (and not always tremendously realistic). So I'm more focused on that than he is. (I also hope that my maps are a bit more intuitively comprehensible and pleasing to the eye than his notoriously impenetrable ASCII art.) Moreover, he isn't interested at all in procedural generation of the non-intelligent living world. The worlds of Dwarf Fortress are all stocked with mostly familiar trees and plants, and animals and races, from the real world and fantasy. Some individual creatures are procedurally generated, but not species and not ecosystems. By contrast, I'm really interested in exploring this. What plants and animals might evolve on other worlds with different geographies from our own?

So in that regard my aims also overlap with No Man's Sky, which does create procedural fauna and flora to populate its planets. But these animals and plants are very simple: they are really just scenery (mobile or otherwise), without clear ecological or evolutionary relationships to each other. Clearly I can't hope to match that game's amazing visuals, or to create morphable animated creature models, but I can perhaps aim to describe procedurally generated species that make sense within a wider ecosystem.

So my rather vaguely defined aim with this project is to get the computer to create worlds that model the following three domains:

(1) The physical geography, including terrain, water, and climate.
(2) The ecosystem, including plant and animal species with their ecological and evolutionary relationships to each other.
(3) Intelligent life and civilisations, with their broad sweep of history.

At the moment, I'm immersed in (1) and have advanced it to the stage where it's worth making this blog about it. I'm looking forward to getting to a stage when I can start tackling (2), which I think is potentially the most unusual element of this project. (3) is a distant pipe dream which may never happen, but it's nice to have it at least as a possible aim.


1 comment: