2 Likes
MuCho multiple choise adventure engine, release 2 - little to no programming needed
Release 2 of the MuCho multiple choise adventure (CYOA, choose your own adventure, gamebook) game engine.
http://iki.fi/sol/zip/mucho_02.zip
For those who just want to look at the compiled examples and manual: http://iki.fi/sol/temp/
More specifically, http://iki.fi/sol/temp/mucho.pdf for the pdf manual.
Changes:
- Completely redone documentation, some 35 pages in PDF form (also available in html, mobi and epub)
- Animated selector
- Custom fonts, dividers and selectors
- More solid look and feel, hiding work from user
- Bunch of custom fonts, dividers and selectors included in the kit
- More keys checked for input
- Little bits of polish here and there
- Lots of little bugs fixed
http://iki.fi/sol/zip/mucho_02.zip
For those who just want to look at the compiled examples and manual: http://iki.fi/sol/temp/
More specifically, http://iki.fi/sol/temp/mucho.pdf for the pdf manual.
Changes:
- Completely redone documentation, some 35 pages in PDF form (also available in html, mobi and epub)
- Animated selector
- Custom fonts, dividers and selectors
- More solid look and feel, hiding work from user
- Bunch of custom fonts, dividers and selectors included in the kit
- More keys checked for input
- Little bits of polish here and there
- Lots of little bugs fixed
http://iki.fi/sol | http://iki.fi/sol/speccy/ | https://github.com/jarikomppa/speccy
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
Comments
I'd like to suggest making the animated cursor feature optional in case it's not (couldn't find it in the manual). These sorta things might look good at times, while at other times they can be seen as distracting, depending on the mood/story the author is trying to portray
Are you planning to support calling custom user routines in some way? Let's say AY/beeper music or animated cutscenes
I suppose I could let you uncompress raw code to the 4k buffer and then jump to it, but I'm pretty sure if you're capable enough to write code that could live there, you'd be more than capable enough to add that functionality yourself =)
Anyway, unless people actually DO things with this, I'm pretty much done on the engine side. Planning to make a game or two with it myself, we'll see what kinds of things I come up with during that.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
A number of years ago I 'remade' classic CYOA book; The Dealy Shadow in HTML.
I'd planned to write a .NET application (named CYOdA with the little 'd' being 'digital') that would act as an Adventure Editor and export the flat HTML files ready for upload to your web server. This 'remake' was my manual trial run to determine the data structures I would need.
I also contacted the publisher at the time to see if they'd allow me to put up the demo on my website, however, I received no reply.
I think this knocked my confidence a bit and CYOdA became yet another name on my list of unfinished projects. ;)
Anyway my immediate thought when I saw this was; given the book was 118 pages (maybe 100 words on the longest page) with only a handful of b/w images; could this fit into your 29KB?
I reckon I'll dig the HTML files out of my project directory and see how easy it is to convert to MuCho's parser format.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
And do it properly, with handdrawn, original graphics and not these ugly autoconverts.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
Would these short gamebooks fit into memory?http://www.arborell.com/gamebook_archive.html
JSpeccy-win32-portable
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
I won't push a new version of the kit just yet. I think I'll have to build something with it to find what kinds of features / bug fixes come up.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
In 2 nights I've manually converted my HTML version of "The Deadly Shadow," stripping out the HTML tags from the description text as I went and converting the "Turn to page X..." links into MuCho's A$ pagenum format.
For now I've left the $I image.scr tags commented out but, amazingly, I don't seem to have made any mistakes and it compiled first time - huzzah! :D
Unfortunately the final line of output from mc.exe indicates bad news:
Even with your improved compression I think it'll struggle to get that below 29K and there are at least 26 images to add yet - I don't suppose you're considering a 128K version? ;)
Still, you've peaked my interest and I'm inspired to press on with this project.
Step 1. Rewrite Richard Brightfield's spy story in a simplified style.
And no, I'm not considering a 128k version, that would be a completely different can of worms.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
To figure out what to put there, I first counted all instances of all the words from all the pages to get the top-N words, and then chained these words based on the most likely words that follow each word (within that top-N word group).
The result looks freaky:
I'm pretty sure there's an algorithm that would find the "optimal" dictionary, but I doubt it would perform dramatically better than what this one already does.
I do have to store this block of data, which makes the available space smaller, but it improves compression more than the space it takes, so it's a general win. In the "dukes" example the savings were over 3kB over not using the prefix block.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
Actually it's only 87,855 bytes and, if you could compress based on inclusion of the phrase "attaché case," I'd expect you could get it down to about 15K. ;)
I'm currently fighting to get a 61672 byte storybook fit, and I'm currently off by 2183 bytes. I'm afraid I may have to chop off a few pages to get it to fit. And even now I need to make some rather big changes to the engine to get that to run.
So, ~88k is probably not going to fit into 29k unless it's REALLY repetitive. =)
Another change I made (which requires the changes to the engine) is that I no longer compress pages by themselves, but keep adding pages until I hit the 4k limit and then compress them together. If similar pages are stored in sequence, they should compress pretty well.
I actually made an experiment where I used $O blocks to literally remove text, but the result was worse than when zx7 handled the deduplication, so that's pretty pointless.
And since it seems I'm diving back to the engine code, I'll probably remove the audio engine, add ability to run custom code so I can add the audio back that way, and might as well add integer counter handling and make the whole thing turing complete while at it..
..don't expect a new version soon.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
In addition to the "let's pack N pages together" change mentioned above, I now check what pages compress well together. To do this, I compress all pages in pairs to see what yields the best compression ratio, and although I haven't yet tried to see if the result of the compilation works, the results are encouraging: earlier I had 2183 bytes too much, now I have 341 bytes free! And I didn't even need to remove any pages!
I figured that by putting the pages that have similar text close to each other in source, I should get better compression. Then I thought, why not automate this? And the best way to know how well different pages play with each other is to run them through the compressor and see the result. So the compression scheme now is:
while pages remain while buffer has space for all remaining pages does the page compress best with previously stored one? store page to buffer mark page as used compress bufferAgain, there's probably some permutation which might compress best (like do a+b+c compress better than a+c+b?), but the results even with this scheme are pretty good.
Note the sets that go down under 40%! And to think I started off being relatively happy with 60-70%.. =)
Actually, now that I think about it, I might get even better results by not compressing with the previous page but with the current output buffer contents.. Hmm..
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
Probably because this didn't look for best compression ratio, but rather absolute smallest addition, so it packs the smallest pages first, rather than seeing how different pages compress together.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
When starting to compress a new buffer, which page should we choose as the first? My guess was "biggest", so I tried that. Made things worse. If I started from the biggest page, but let the "reset" be random, I got slightly better compression (314 bytes free, up from 270 when we start from page 0).
Then I figured, what if I start from the page that has best compression ratio when combines with another page?
1620 bytes free. I was floored.
It DOES mean we're compressing everything with everything, which is tad bit on the slow side, especially since I don't currently cache the results. But that was rather effective.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
6558 bytes free.
That's so ridiculously huge value, I'm not sure if things work correctly or if I'm dropping data on the floor or something. Only way to know is to update the engine to see if it can handle the data. Anyway, look at those compression ratios - below 30% in some cases! That's nuts.
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
If someflag is not on, unpack beepfx code to 0xd000 and call it with HL=27.
I had to ditch the beepfx code from the engine proper in order to make room for new features.
Speaking of new features, integer ops also implemented, meaning you can do stuff like x+1, x==3, x-=y, x<=y, etc, used in many gamebooks. I have to figure out some sane way to print out the values of those variables though.
Still a lot to do (and documentation on top of that) before the next kit.. and I still haven't been able to reach the gamebook author. :(
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
Anyway, a teaser:
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
online emu link (works in firefox)
http://torinak.com/qaop#l=https://dl.dropboxusercontent.com/u/75238938/waiting.tap
tap file
https://dl.dropboxusercontent.com/u/75238938/waiting.tap
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)
http://goo.gl/q2j0NZ - make ZX Spectrum choose your own adventure games, no programming needed (release 3)