Pre Dynasty stuff
My current dynasty plan is to play with Aministar’s Goldberg Factory idea(and idea that was awesome but never actually got put into real action) and have a bunch of ‘Code Monkey’ writing pseudocode which effects the monkey gamestate. Ideally, there would be limits put on what can be done within the code, and each code monkey would write a function. The order those functions are evaluated in would be determined randomly, preventing Code Monkeys from writing functions obviously biased towards themselves. After all, you never know what things will look at before you get your turn.
The hand part comes in defining what can go in a function, and how the actual code should be handled. I don’t want to actually use any programing language, even though it would be easiest, because that isn’t fair to those who don’t know that language. But defining pesudocode that would accomplish its purpose for this dynasty is a pain, and I wanted to see if anyone has ideas as to how to make it work. So any help you can give would be awesome.
The Monkey Line:
The Monkey Line is a list of the current active Code Monkeys. The Code Monkey on the top of the list is considered to be in position one (first in line) and each successive monkey is considered to be in position N (Nth in line) where N is one more than the position of previous monkey. If a Code Monkey goes idle, then e is removed from the line and all of the Code Monkeys below eim move up one spot. Whenever a Code Monkey joins, e is added to the end of the line. A Code Monkey may, at any time, move eimself to the back of the line. (The same result could be obtained by idling and then rejoining). If there is ever a number N, greater than or equal to one, such that there is no Code Monkey in position N yet there is a code monkey in position N + 1, then the code monkey in position N + 1 moves to position N. If there is ever two code monkeys in the same position N, then the code monkey(s) who’s name appears later lexicographically moves to position N + 1. Both of these cases are called abnormalities. If there is more than one abnormality with the Monkey Line, the code monkey preforming the change should always deal with the abnormality that appears in the lowest position. The Monkey Line is tracked in a wiki page called “Code Monkey Dynasty Gamestate Documentsâ€
The Program:
Each Code Monkey has a section of code that belongs to them, tracked in the wiki page called ‘Code Monkey Dynasty Gamestate Documents’. Their code should, in plain English, describe what happens when their section of code is run. Code cannot reference any code monkey by name, only by their position in the Monkey Line. ‘The Monkey in Position #4’ is fine. ‘Clucky’ is not. Code may refer to values tracked in th GNDT for any code monkey, but still may not refer to the Monkey’s name. ‘The Monkey in Position #4’s Bananas’ is fine. ‘The Monkey in Position #4’s Name’ is not. A section of code may change or update any value found in the GNDT(other than a monkey’s name), provided it follows the limitations imposed upon that stat. A section of code may also change the order of the Monkey Line. If a line of code referees to something(like a GNDT field) that does not exist, it is just ignored. If a line of code refers to a position that does not have a monkey, nothing happens unless otherwise stated.
If, in executing a section of code, it is found that the section of code creates an infinite loop then the whole section of code should be ignored and the program shall precede to the next section of code as if the infinite looping section never existed.
If no other Code Monkey has done so in the last forty eight hours, and if e has not changed eir section of code for the last six hours, a Code Monkey may execute the program. To do so, e randomly sorts each of the code monkeys into a list, called the order of execution. E then executes the section of code possessed by the first code monkey in the list in its entirety before proceeding to the next section of code. After each section of code, e fixes each abnormality with the monkey line.
——-
There exists a stat tracked in the GNDT called ‘Bananas’, which is to be an integer value at all times. If ‘Bananas’ is ever not an integer it is rounded to the closest integer. A single section of code may not increase or reduce any one Code Monkey’s Bananas by more than ten. If it does so, the excess change(over ten) does not apply. Thus, if in executing of a section of code, Clucky’s Bananas increased by twenty, they would be reduced by ten to result in a net gain of only ten. If the bananas are increased for a position in the monkey line that does not contain a code monkey, they remain there until they are picked up by whatever code monkey first moves to that position.
And so you guys can see how this might work:
Example code:
If the hat color of the monkey in position one is red, make it blue and switch that monkey with the monkey in position three. Then make the hat color of the monkey in position four red and give the monkey in position five six bananas.
Double the banana count of each monkey in an even position in the monkey line, and half the banana count of each monkey in an odd position.
For each of the monkeys in the monkey line, starting with the first and working your way back, if the monkey has more bananas than them, give them three bananas. The monkey in the first position uses the monkey in the last position when making their check.
Kevan: he/him
There was a programming-based Dynasty a few years ago that, at least from my memory of it, didn’t really take off because only a few players were comfortable thinking and writing in terms of programming.
The Program might be less intimidating (and possibly more coherent) if it were a Machine with various Levers and Buttons as its functions, each of them written in Nomic-English rather than pseudocode (“When this Lever is pulled, the Monkey at position 4 is…”).