so, this two week project was the myth/history generator (again). this is a thing i've been revisiting for a while now! and it's kind of frustrating because...
okay so one of the plans i have for all of these two-week procedural things i'm making is to stitch them together into one big project (or several moderately-sized projects), and in most of those plans this setup is the glue. procedural buildings are fine but they only make sense in a world, in the context of other buildings, in the context of settlements. procedural plants are fine, but where do they grow and what properties do they have (dye, medicine, spice) and which people know about them. procedural stuff is just stuff unless it's put together in some kind of context.
so, enter the history generator, a thing for associating things together and creating a shared context.
so this is kind of a Big Thing that i've wanted to get working for a really long time (i mean, it was the very first two-week project, and that project was 'revisit this generation code i wrote a year ago', so this code goes back a long way at this point), and as i get closer to getting it working, it gets more frustrating? because... it becomes clear how much is left to do, or because even with various code parts of the system in place there's the much bigger question of how to construct the dataset. finishing a big part of it and then going "okay yes but my output is still pretty garbage, so this is a big thing i'm emotionally invested it and it sucks and that kinda hurts". etc.
except hey this is still a lot of progress, and even if internally i'm still frustrated, it's important to, you know, acknowledge that this is in fact a lot of progress and making some big steps towards it being good. before you have something good you have something kinda terrible; that's just how making things goes.
here's some outputs:
so the thing about this is... like even the final product isn't that impressive, in terms of code? it's really simple. but the big accomplishment here isn't so much the thing itself so much as the method of generating it. most of my generation stuff is pretty, uh, coderly. i want to tweak the output i need to change some data definitions in source files and rebuild the project. it's all hardcoded. this myth generator though is data-backed. the system itself is really just a parser and an evaluator, and all the actual stuff is in a data file.
this data file, specifically.
the program is run like
anyway in related news, this two-week project is up, but in an UNPRECEDENTED MOVE i'm gonna keep working on this same thing for the next two weeks, because uhhhh this is finally getting to the point where the generator is Doing Stuff and i'd like to get it generating some stuff that's more legitimately impressive, rather than just proofs of concept.
also there's this whole other post i need to write at some point about random generation, but i'll save that for later. short version: right now i'm using a dumb random generator instead of my fancy possibility space code, because my fancy possibility space code wasn't fast enough due to various reasons. i have what i think are pretty concrete ways to fix it and make it way better and expand the functionality of this setup substantially just by allowing much better control of random values, but currently none of that is in place and so the randomness in the generated outputs can be kinda whack.
okay so one of the plans i have for all of these two-week procedural things i'm making is to stitch them together into one big project (or several moderately-sized projects), and in most of those plans this setup is the glue. procedural buildings are fine but they only make sense in a world, in the context of other buildings, in the context of settlements. procedural plants are fine, but where do they grow and what properties do they have (dye, medicine, spice) and which people know about them. procedural stuff is just stuff unless it's put together in some kind of context.
so, enter the history generator, a thing for associating things together and creating a shared context.
so this is kind of a Big Thing that i've wanted to get working for a really long time (i mean, it was the very first two-week project, and that project was 'revisit this generation code i wrote a year ago', so this code goes back a long way at this point), and as i get closer to getting it working, it gets more frustrating? because... it becomes clear how much is left to do, or because even with various code parts of the system in place there's the much bigger question of how to construct the dataset. finishing a big part of it and then going "okay yes but my output is still pretty garbage, so this is a big thing i'm emotionally invested it and it sucks and that kinda hurts". etc.
except hey this is still a lot of progress, and even if internally i'm still frustrated, it's important to, you know, acknowledge that this is in fact a lot of progress and making some big steps towards it being good. before you have something good you have something kinda terrible; that's just how making things goes.
here's some outputs:
so the thing about this is... like even the final product isn't that impressive, in terms of code? it's really simple. but the big accomplishment here isn't so much the thing itself so much as the method of generating it. most of my generation stuff is pretty, uh, coderly. i want to tweak the output i need to change some data definitions in source files and rebuild the project. it's all hardcoded. this myth generator though is data-backed. the system itself is really just a parser and an evaluator, and all the actual stuff is in a data file.
this data file, specifically.
the program is run like
./dist/build/myth/myth data/desert2 --generate UNIVERSE -c1 --action _ -l50 > testoutputXXX.html and then that's it. it generates one 'universe' instance (from the UNIVERSE and -c1), i tell it the running action generators are called _, and i tell it to generate 50 events. currently the data i'm using isn't very complex, but like... it's generating a random landscape and filling it with random features, and actors are randomly moving around inside that. and none of that's hardcoded; it's all just from evaluating that data file. so i'm pretty proud of that.anyway in related news, this two-week project is up, but in an UNPRECEDENTED MOVE i'm gonna keep working on this same thing for the next two weeks, because uhhhh this is finally getting to the point where the generator is Doing Stuff and i'd like to get it generating some stuff that's more legitimately impressive, rather than just proofs of concept.
also there's this whole other post i need to write at some point about random generation, but i'll save that for later. short version: right now i'm using a dumb random generator instead of my fancy possibility space code, because my fancy possibility space code wasn't fast enough due to various reasons. i have what i think are pretty concrete ways to fix it and make it way better and expand the functionality of this setup substantially just by allowing much better control of random values, but currently none of that is in place and so the randomness in the generated outputs can be kinda whack.