DEV BLOG :: ZORK PROTOTYPE
Title: How It All Began
Brief history of Zork: Prototype idea development
Hail to the first dev blog entry, reader! I have doubts where would these writings lead you but pretty sure that at least somewhere. This article won't contain much of technical information but instead focus on process of an idea development.
The idea was born on December of last year during yet another replay of Zork: Grand Inquisitor
adventure. Outro video from the zork game encouraged me to start materializing the green idea. Well, basically I was experiencing dramatically nostalgic feeling and thought "Oh, they don't do such games anymore..." (like any oldfag do in similar situation) therefore exactly this mind creature brought action to the next thought that came after. Yep, as you might guessed, it was all about "I can do this on my own!".
In my opinion ZGI, Zork Nemesis, Riven and first Myst games in fertility have no rival. But these games are old enough to be knocked off from the cliff. Activision more than likely would make another Call of Duty game rather than new Zork adventure. Generally speaking, we can understand them too – such project is hard to attach to the AAA unity and thus won't bring large commercial success. This brings a great opportunity for indie developers to take place in glorious battle of zork revival. About rivals... these games, mentioned above, are more likely to be lucky enough to receive chance of getting that new rival... or adopted son? Hard to tell, maybe more Augustus than Brutus.
Next actions were concerning sharing... sharing of words above. So I registered in The Zork Library
forum and started a thread. I was curious to know public opinion. Unfortunately Zork fan base despite being huge enough is not that active as wanted to be. Judging by forum visits people prefer more to read than to take part in forum activity. But for me it was no such big deal – a great power of motivation was tearing apart my patience and I finally started the development.
First version (0.7) was written (or if to be more honest - constructed) using Game Maker 8
. Winter holidays gave me enough time to analyze current status and predict the future of the game. Problem with game maker was in lack of possibility to play video files. Actually there were some options but they were poor and outdated. So, I realized that Game Maker isn't the answer – just imagine zork game with more than thousand animations when size of zork prototype demo, designed in game maker, was approx ~100mb with few animations and scenes! This was so catastrophic! Without doubts, this case required revolution at once.
During late days of florescent season a real mature development started. This time no game makers and related stuff, only pure c++. Of course, writing game engine from deep scratch was a bad choice. Tremendous journey around great amount of game/multimedia libraries was ended on almighty Allegro library. I remember how I fooled around with SDL
4 trying to draw and move sprite on the screen on those good old days but... suddenly flashback smashed me and I decided to get back to the roots. To my surprise, allegro library was still breathing and prospering. After reading forums, documentation and licking through features list Allegro 5 took it's place in the heart of new coming zork reincarnation.
Fun thing that during these days I had my graduation exam and these days are meant to be dedicated for education. Instead of it I was doing zork game from dawn till dusk. On last day and night before exam I decided to study (Duh!) and somehow on next day, fully retarded, nervous and sleepy (few cups of coffee failed to assist), I've managed to pass(survive) that goddamn exam . That's how Neuton Mouse got his desired freedom from Alma Mater! Yeah, I know what are you thinking about me... fucking student :p. Bah! Nevertheless nightmares are over... C'est la vie ;)
Cpp project was created on 21.05.2013. Toying around with Allegro 5 helped out to create the game engine – the base code for it. First what Neuton did was the implementation of infamous Z-Vision from late zork games. It's not that much actually but if we will take into account that this is my first "serious" experience with real programming we might... just relax. It was small victory, but the battle was still there.
This whole game programming process is so exciting. It feels like you are lone wolf in the desert with supernatural powers. There are no rules, no obstacles and no limitations – just your magic. You are free to create things by saying magical words like "Abracadabra" but using spells from programming language.
Next to Z-Vision I was embraced by doubts concerning level design. Writing game levels might be pain in the ass if you are using mere cpp language. Solution came instantly: scripting! I asked Google what's the best language for my game and he told it was LUA
. After smoking one thread in TIGForums
I finally injected LUA into fresh baked engine. Soon I realized that it was the right choice. LUA scripting served best with level design and related stuff.
After that, a huge pain in the ass occurred – video playback. Google said that best playback library is Bink
but its not free and it costs a bit less than my dream car (for those who are curious: used; Ford Mustang Cobra :) ). Well, it should be best for such sum! It turned out that Bink Video had cousin who was willing to do the job for free: Theora
. Built-in Allegro addon which provided video playback from latest unstable versions was... well, unstable. I needed the loop option and after few days of quacking a success was granted – got myself video loop from allegro addon. But it was so laggy and my solution was disgraceful even to myself.
Fortunately, I've found alternative solution. And its name is LibTheoraPlayer
– theora playback library. It took some hours to figure how it works since documentation is not very bright there. Meh! It turned out that tutorial from their website was actually the way out. Getting and rendering frames was done via OpenGL (glTexSubImage2D in frame get loop). Still I don't know how its done through DX9... Results made good impression. I successfully tested demo on my old laptop. Performance of LibTheoraPlayer is supreme so I can proudly recommend this library for those who are seeking cross-platform video playback solution.
All other issues that appeared on Zork's path perished from the glory of Allegro library. Engine was done on 20.06.2013. Cross-platform promises of used libraries were kept with honor – Zork game runs OK in Linux (Ubuntu – thanks to prompt, aptget and other odds and ends zork was compiled in a second) and Mac (used Hackintosh for compiling/testing – IMHO that xCode is terrible).
I still haven't released final demo version because I wanted to add some levels. And whole July was spent on reading/watching 3d stuff tutorials. Now, when programming phase is done, it's time to fill reincarnated demo with new stuff. There will be 4-5 levels in that game and I would like to mention that this demo will be used as spotlight material for Kickstarter
project which is planned to be opened soon. I need a team and you know what? You won't find that team for free :c
That's all folks! Well, not completely done... here we had discussion concerning demo only. I'll write new entry after demo v1.0 release. Just wait... ;)Back to the devblog