The random ramblings of a French programmer living in Norway...
2023
← Time Commando - The Saturn versionFlood Fill →
  Encounter and unfinished projects
Mon 14th August 2023   
When I started working on the Encounter upgrade project, I received equal parts of interest and also deep interrogations. With this article I hope giving some context and make my motivations clearer!

My first computer

Back in 1984 I bought my first computer, an Oric Atmos. This ended up being a life defining moment which triggered my interest for games and development, ultimately resulting in me working in video game development.
Me and my Oric Atmos
Me and my Oric Atmos
Because the computer was not particularly powerful but had a pretty damn good BASIC implementation, many people quickly stopped playing games and learnt programming instead, resulting in quite a large software production considering the limited success of the machine.
French Oric ad
French Oric ad
If you don't know this machine, it's basically what you get if you smash together a Commodore 64 and a ZX Spectrum1. Here are the rough specs:
  • 1mhz 6502 CPU
  • 64KB of RAM (but only 48KB are normally accessible)
  • 16KB of ROM (with a decent variant of the Microsoft BASIC)
  • AY-3-8912 sound generator (similar to the Atari ST, Amstrad, MSX)
  • 40x28 characters TEXT mode
  • 240x200 bitmap HIRES mode (with 3 rows of TEXT at the bottom)
  • Videotex style system with 8 colors, blinking, double size, invert...
There are no sprites, no double buffering for graphics, colors cannot be changed, and there are some pretty severe constraints regarding where colors can be placed, but all in all it's a pretty decent machine for the price range when it was released, and the keyboard quality is definitely in the "best in class" category. The system also had a bunch of peripherals available for it, including a 4 colors plotter printer, a 3" floppy disk drive unit, joystick interface, modem, speech synthesizer, etc... The software library, while not as large as market leader is still quite comprehensive, with pretty much all the types of game you can think of, from arcade classics to simulations, puzzles or role playing games. One particular type of program was quite popular on the machine: Adventure games where the player talk to the computer using some text based commands, sometimes having visual representations but quite often being just using textual descriptions.

State of the Art

In France, the most prolific publisher was definitely Loriciels, famous for some of the most advanced adventure games on the system, like "L'Aigle d'Or" (1984) or "Le Secret du Tombeau" (1985), but these are out of the scope of this discussion, they are real time action games where you move an avatar on the screen.
L'Aigle d'Or and Le Tombeau d'Axayactl
L'Aigle d'Or and Le Tombeau d'Axayactl
Of course, Loriciels also released "Le Diamant de l'île Maudite" (1984), which definitely fits in the text adventure category, except that one is an overachiever with a complete graphical introduction to the story, a colorful and quite detailed view of each of the locations, and a real time text parser which detects and auto-complete your words while you are typing them!
Le Diamant de l'île Maudite
Le Diamant de l'île Maudite
Back in the days, the challenge was to manage to persuade the computer, trying to find combinations of words that would work, and sometimes the vocabulary would not even be provided, because it would probably have made the game too easy.

Illustrated adventures

Now that we've seen what the best of the crop looked like, we can now look at what most games looked like. Most of the adventure games were written 100% in BASIC, and the ones using graphics simply used lines to draw shapes, and a few among them even have flood fill routines to fill the shapes, which quite often ended up being very slow.
Le mystere de Kikekankoi, Les aventures de Lilla et Jacky, Dr Genius 1 & 2
Le mystere de Kikekankoi, Les aventures de Lilla et Jacky, Dr Genius 1 & 2
Both "Le Retour du Dr Genius" (Loriciels 1984) and "The Hobbit" (Melbourne House/Tansoft 1983) are above the fray with some real time events and decent graphics, unfortunately The Hobbit is so slow at drawing some of the scenes that it really hinders the enjoyment of playing the game.
The Hobbit, Le rendez-vous de la terreur, Terminus, Athanor
The Hobbit, Le rendez-vous de la terreur, Terminus, Athanor
The relatively recent "Athanor" (2014) firmly belongs to this category of games and was an homage by Eric Safar to this period of computer gaming. By the way, I spent a few evening optimizing The Hobbit, if you want to see what the original game speed looked like, just watch it there:

Textual interactive fiction

And finally we have the purely textual games, the type originally created by university students to run on terminals, popularized by "Colossal Cave Adventure" and "Zork". The Oric had quite its share of these games on the Oric 1, many from Level 9, around 1983, but the arrival of graphical adventures made it difficult to sell these games, even if they were generally much better in term of design, depth, vocabulary, etc...
Colossal Adventure, Citadelle, House of Death, Quest
Colossal Adventure, Citadelle, House of Death, Quest
After all, these machines did not have a lot of memory, and whatever was used to handle graphics meant less room for the adventure itself!
Franklin's Tomb,Tevrog's Kingdom II, Zodiac, Tristam Island
Franklin's Tomb,Tevrog's Kingdom II, Zodiac, Tristam Island
Many of these games used generic engines, the game data was in the form of game database with list of words, locations, and there were even some tools like The Quill2 you could buy to create your own game. If you are interested in the topic, I made a video on that a few years ago.
The recently released "Tristam Island" (2020) has been ported to many systems thanks to having been made using the Infocom adventure engine system, including the Oric3.

Encounter

So ok, that was an overview of the state of the Oric adventure games, but what about Encounter? French persons from my generation were not particularly good at learning foreign languages due to a combination of dubbed movies, starting learning new languages to late at school4 with methods focusing on the syntax and grammar more than on the ability to actually communicate with people, etc... In practice that means that most of these adventure games never made it to the French market: Between Loriciels and Ere there was enough French adventure games to please everybody, the cost of localizing English games was probably not worth it. But for some reason, one day "Encounter" made it to my local shop in Angers, and I bought it.
Encounter
Encounter
Until that point, the only adventure games I had played where punishingly and unfairly hard. Typically you would die for no reason you could have expected:
  • North: You fell in a pit, you are dead
  • West: You have entered the kitchen of the cannibal, you are dead
  • East: The room was full of gas, your torch ignited it, you are dead
  • ...
This type of game design got tiresome quite fast, and basically solving the game was not based on your ability to think logically or be creative, but just to make a map of the locations and by using trial and error find the "safe path". Encounter was different: It was a contemporary story without orcs, trolls, magicians, cannibals or djins. A girl has been kidnapped by thugs, and the player need to rescue her.
Encounter manual
Encounter manual
Being a contemporary game, it also means the vocabulary was relatively easy to understand with the help of a French-English dictionary, there were no attempt at some Thou Shall flourish type of language. Unfortunately, the game itself was not particularly exciting to look at!
Encounter screenshots
Encounter screenshots

We have the technology

14 years old me, having freshly learnt BASIC programming using the Oric Atmos user manual, found out that the game had been written 100% in BASIC, so it was trivial to modify the code. It also appeared that there was some memory remaining, so why not improve the game, after all, that should be easy, just add graphics! So during the summer break I started the task of adding graphics to Encounter, drawing on paper sketches of the streets, the manor, etc... converted into long sequences of CURSET, CURMOV, DRAW and CIRCLES to draw each of the scenes. I unfortunately don't have any traces of the work I did back then, but I doubt I had gone much farther than this type of mockup I just made in Paint Shop Pro.
Encounter graphics
Encounter graphics
I remember that I made the facade of the big house, with some classical looking columns on the outside and that I dabbled with local coloring using the powerful FILL command to put attributes, but I quickly realized a number of things:
  • Entering the data took a long time
  • I was running out of memory quite fast
  • The three lines of text at the bottom were not sufficient to display the descriptions
Two weeks later I was not able to continue, and I guess that counts at my first big software project failure.

Abandoned projects

I've actually released most of what I ever worked on, being on the Oric, Atari, or professionally. The thing is, the human brain is kind of weird and we easily tend to remember our failures more than our achievements, so the older we get, the taller the shadow of the stack of failed projects looms over us, and that can be quite unnerving. Encounter was only the first of many projects I started and never finished, so here comes my personal shame list (I probably forgot some stuff)
  • Encounter (Oric game, 1984)
  • Euphoria (Atari ST game, 1991)
  • Rembrandt
  • Dungeon Master (Oric game, 1997)
  • ULA Paint (Oric utility, 2003)
  • The 2D Game (PC game, 2012)
  • Quantum FX (Oric game, 2018)
You can see a few of these on this picture:
Euphoria, Rembrandt, ULA Paint, Quantum Fx, Dungeon Master
Euphoria, Rembrandt, ULA Paint, Quantum Fx, Dungeon Master
And on top of that, there's the many blog posts, youtube videos, tech demos, the scripting system, the UI system, etc... which I had plans to work on but never quite found the time for. The list stops in 2018 because this is when it all blew up. I had promised too many things to too many people, helping some on their games, writing guest screens for their mega demo, maintaining a youtube channel, and guess what.... working on Encounter again!

Upgrade Time

In 2018 I started a youtube series called Upgrade Time where I attempted, with 34 years of insight and technical knowhow to do what I had tried in 1984, but this time using all our fancy modern tools and documentation. I managed to make 17 videos between March and August 2018, each addressing a specific topic, starting from the original source code (complete with line numbers) down to what is technically a near finished and playable game with highscores, fonts, graphics, etc... As indicated in The hidden cost of making videos, doing the development and the presentation was simply too much, I basically spend all my evenings and most my weekends just doing that. I could technically have stopped there and call it a day, after all the result was already beyond what most Oric graphical games had in term of polish, but I was not satisfied because there was no sound. Sure, there was the occasional SHOOT and PING, but I wanted a growling dog, the rustling of wind in the leaves in the park, birds chirping, and some intro music. Unfortunately I broke my teeth trying to do that in BASIC: Between the CPU cost and the difficulty of managing memory, it was simply too complicated to do, something which in a pure C or assembler program would have been a non issue.

Reboot Time

In 2020 I published this video which summarized the issues and why there had been no updates in more than a year, what the original game was and what the current status was.
The original plan was to upgrade Encounter to the max while staying 100% in BASIC, the new plan became to rewrite the BASIC code into C and assembler, exploiting all the possibilities of the machine. Why? Well, people judge things on what they see, not on the concept behind. Nobody would have judged this improved Encounter as a comparison to the original Encounter, they would have compared this BASIC game with all the modern games made by Twilighte, Chema, Raxis and others, and if Encounter happens to be my only big game release on the Oric, I would rather release something that makes a big BANG than a tiny pshiiii. And yes, it's definitely an ego driven decision, I'm totally aware of that. And this time, no real time updates, no time table: It will be done when it will be done.

Course Correction

Then two years later, not much had happened, but I posted this video where I explained how my earlier videos about switching from BASIC to C was a terrible idea, and that instead using some assembler modules were the way to go.
And indeed, rewriting an existing working game into another language is not necessarily a very productive idea. So in this video I introduced a new feature I added to the OSDK5 which allows calling assembler subroutines from BASIC without having to use PEEK, POKE or CALLs, which I used to display a real time clock and some directional arrows on top of the picture.

Floppy Builder is back

Ultimately, even using inline assembler, sticking to BASIC was very difficult, and I kept having to deal with the garbage collection and closely monitor the memory usage. The main reason for having stopped the C version was that I had never made an interactive program not using any part of the system ROM, so using Floppy Builder gave me access to the additional 16KB of memory, but it meant I had to implement things like a proper keyboard handling routines from scratch, which I had never done before, and when I tried it did not work. Then someone on the Defence Force forum asked for help on how to handle keyboard inputs, and I did my homework and came up with a complete article on how to do that. Which means... the last obstacle was gone, so I decided to give another try at using C and Assembler in a Floppy Builder project. So I reused the work already done in the episode 19 (having all the images and a basic loader and display code using Floppy Builder), added the navigation arrows and the real time clock from episode 20, then I added the keyboard matrix code I had just written and tried to navigate the map with the keyboard, and all that worked actually quite well! Then I spent a few weeks to convert the code progressively, and here is the current status of the game.
The navigation is working, the game understand a number of commands, manipulating items is working, and there is some fancy byte code based scripting language used to change what is visible on the screen based on the internal status of the game, but other than that, the game is still not possible to finish because most of the complex actions have not been implemented.

The future

So, where do I go from here? Well, I'm now over 50, and I definitely don't feel like 25 anymore, but I still love doing what I'm doing, so my current plan is to finish the stuff I started and properly release it. So the priority is finishing Encounter, then probably make a pause, and then I think it's a tie between ULA Paint and Dungeon Master: Most of the blockers have been solved, so there are no real technical reasons for not finishing them. And with new hardware avaiulable, like proper mouse support, ULA Paint and Dungeon Master are both possible to do in ways that were not originally possible, so we will see what the future brings. And that's it for this update, hopefully that answers most questions.

1. Basically a Sinclair Spectrum with a 6502 in place of the Z80
2. See The Quill on Oric.org
3. See Pinforic on Oric.org
4. Sometimes with French teachers with less than impressive pronunciations
comments powered by Disqus