And so, as we near the end of another great year of game crapness, I return from an extended leave of absence to the Towers of Sqij (still lofty, still menacing) to review one last effort from Andrew Green.
Not a game but a games designer. And not just any games designer but The Ultimate Games Designer for the ZX Spectrum. Are you beside yourself with trepidation? Maybe!
The title page if full of guarantees to produce the best game ever; so much so that Mr. Green has even gone to the extra effort of using CAPITAL LETTERS to emphasise the fact. The mention of complex algorithms however basically comes down to the ZX BASIC “RND” function and the NB at the end mentions a time to build this game is approximately the lifetime of the earth to date. “program” – maybe; “design” – maybe not.
Now, I’m glad I got to review this program because I reviewed a program very similar to this back in 2010. Advanced UDG Generator promised to create your perfect UDG simply outputting every combination of bits in an 8×8 pixel square. This program takes this to a whole new level and I’ll explain why…
*** SPOILER ALERT ***
The program basically fills a large chunk of the Spectrum’s memory with random data before executing it. Where Advanced UDG Generator would take a mere 2.2 million years to run through every UDG graphic, this program populates 36,612 bytes of RAM (between 28775 and 65367 (immediately below the UDG area) before attempting to execute it. This is humongous leap in entropy space compared to UDG designer’s 8 bytes.
As with Advanced UDG Generator however, there are some flaws, and more so here:
- The game has been submitted as a Z80 Snapshot with no means to seed the random number generator. Consequently, the sequence of bytes generated is exactly the same every time you run it from initial load up! We get just one generated game code instead of the potential 2^292896 possibilities (that is a number that is over 88 thousand digits long by the way)! Oh how the opportunity was missed. Major fail!
- Assuming the above flaw was solved, the Spectrum’s implementation of RND is far too limited to generate all 2^292896 possible states. See my own program RANDOMIZE RANDOMIZE RANDOMIZE RANDOMIZE RANDOMIZE RANDOMIZE RANDOMIZE RANDOMIZE RANDOMIZE RANDOMIZE for more details on that matter.
- The aforementioned “lifetime of the earth to date” to make the greatest game.
- Despite checking the location of the machine stack, the program is supposed to display “PRESS ANY KEY TO RUN PROGRAM“, and give you the opportunity to press a key before running your masterpiece. However, I kept getting “C Nonsense in BASIC, 20:1” at this point. Now you might think, that the generated program might simply have bombed out with a “C” Report, however it hasn’t actually ran the generated program at this point! I don’t know what gives here but I suspect Mr Green has some damage already built into the snapshot file. It should be on line 50 at this point, not 20!
So, credit where it is due, the program is crap beyond comprehension and probably took less time to write than it took me to review it. But, if you like WAITING and DISAPPOINTMENT and ENTROPY SPACE and BLUE then you might get something out of this. Personally I am a CYAN type of guy!
Score: 1 / 2^292896
Download: .z80
The question is; is this as ‘ultimate’ as Andrew’s previous Ultimate ZX Spectrum Games Designer?
I got one C Nonsense in BASIC as well having sat through three sequential 22.5 minute iterations of this program. Imagine my surprise on attempt #3, however, when the program spat out a fully functional copy of Renegade III!? Amazing!
Heh not quite, UZXSGS has at least some chance of producing a viable game before the moon explodes.
Oh that is inspired (despite the flaws!).
I’ve just tried a similar version in assembly that uses Patrik Rak’s XOR Shift RN Generator, and it’s surprisingly difficult to do much damage, most of the code just did some ADDs & CPs then returned to BASIC, or did the old DI/Halt thing.
I’ve had a pygmy marmoset typing away on my 48k since 1982 and the best it’s managed so far is a rather lacklustre version of Potty Painter. Tsk.
This is exactly the type of program that Deep Thought was invented for.
And CHR$ 42 is the asterisk – the most sprite like of the speccy font.
Spooky.
Been thinking more about this, the odds of getting a simple subroutine to print a UDG aren’t that bad, the following is 4 bytes:
LD A,144
RST 16
RET
If my maths is right the odds of randomly getting this (not using Andrew’s program!) are 1 in 4294967296, if we say any UDG it’s better – 1 in 204522252.2.
I wonder if it’s possible to create a program that starts with a simple bit of code and *evolves* it – randomly change a byte, test it, discard or follow that path if it works. Could literally result in the worlds best game.
Or something.
Fascinating.