Development of Blake's 7 (was OASIS development)

Want to talks about games you like, would like to see developed on the Oric, it's here.
User avatar
Hialmar
Flight Lieutenant
Posts: 349
Joined: Tue Mar 04, 2014 11:25 am
Location: Toulouse, France
Contact:

Re: OASIS development

Post by Hialmar »

You sir, are a genius !

Did I say that before ?
Hialmar
CEO and Silicium member.
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Yet another screenshot... this time it is a preliminary design of the interior of Blake's room. I know the table is a bit too big and there are things missing, but it is just a preliminary design.

It is using 240 different tiles out of 256 and 2556 bytes.
Blake's room
Blake's room
User avatar
ibisum
Wing Commander
Posts: 1645
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: OASIS development

Post by ibisum »

Wow! This is going to be an awesome release. Can't wait to play it on a real Oric, it will be mind-blowing to have such a title ..
User avatar
Symoon
Archivist
Posts: 2307
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: OASIS development

Post by Symoon »

:shock:
Okay. I'm opening a Kickstarter whose goal will be "cloning Chema". Who's in?
User avatar
polluks
Pilot Officer
Posts: 76
Joined: Tue Jun 05, 2012 10:09 pm
Location: Germany
Contact:

Re: OASIS development

Post by polluks »

¡Eso es genial!
cc65 development
Oric Atmos + Cumulus
Acorn Electron
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Glad you like it :)

Did not much lately... at least not much that results in something to show you. I have been working a bit on a C# console tool to help me generating the source files for the objects in a room. It was a bit tedious to do it all by hand. The tool is able to read the collection of objects from a json file. I was pondering which format to use so it was text based, extensible and easy to use. XML and Json were to obvious options, although I also thought about producing my own format.

Currently the tool supports reading sets of objects of type OBJECT and OBJECT-CODE from a single Json file. It has some nice features as the possibility of generating the default string pack resource and code for the most basic response to the LOOK AT verb.

The input is something such as:

Code: Select all

[

  {
    "__type": "OASISObject:#createobj",
    "Id": 202,
    "isActor": false,
    "isProp": true,
    "isUsedWithOther": false,
    "mySize": {
      "Row": 1,
      "Col": 1
    },
    "atPosition": {
      "Row": 16,
      "Col": 2
    },
    "atRoom": 255,
    "zPlane": 1,

    "interactPos": {
      "Col": 7,
      "Row": 16
    },
    "interactFacing": 1,
    "colorSpeech": 0,
    "costumeID": 255,
    "costumeEntry": 0,
    "initialFacing": 0,
    "animSpeed": 1,
    "objectName": "Drawer",
    "lookAutoResponse": "There's nothing of interest."
  },
...
]

And it produces:

Code: Select all

;;;;;;;;;;;;;;;;;;;;;;;;;;;
; OASIS resource data file
;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Common header
#include "..\params.h"
#include "..\object.h"
#include "..\script.h"
#include "..\resource.h"
#include "..\verbs.h"

*=$500
; Object resource 202: Drawer
.(
	.byt RESOURCE_OBJECT|$C0
	.word (res_end-res_start+4)
	.byt 202
res_start
	.byt 0|OBJ_FLAG_PROP
	.byt 1,1	;Size (cols, rows)
	.byt 255	;Initial room
	.byt 2,16	;Location (col, row)
	.byt ZPLANE_1	;Zplane
	.byt 7,16	;Walk position (col, row)
	.byt FACING_LEFT
	.byt 0	; Color of text
	.asc "Drawer",0	;Object's name
res_end
.)

...

; Object Code resource 202
.(
	.byt RESOURCE_OBJECTCODE|$C0
	.word (res_end-res_start+4)
	.byt 202
res_start
	.byt VERB_LOOKAT
	.word rlookat - res_start
	.byt $ff	; end of list
; Response to verb LOOK_AT
rlookat
	.byt SC_ACTOR_TALK, 0, 64, 254, 0,  SC_STOP_SCRIPT
res_end
.)

; AUTO-GENERATED STRING PACK FOR DEFAULT
; LOOK AT RESPONSES. CHECK FOR COLLISIONS!
.(
	.byt RESOURCE_STRING
	.word res_end - res_start + 4
	.byt 254
res_start
	.asc "There's nothing of interest.",0
res_end
.)
You may say it's not a big gain, but notice that the Json file has the format used to serialize/deserialize any type of Resource which derives from the base class OASISResource, so it is a matter of adding some new classes with other information to keep track of all the resources within a room. Maybe including the room itself. The program will have knowledge of all the objects in a given room, which is the first step towards automatic numbering, error checking, etc. For instance, now if there is not an Object Code resource associated to an object, it will create an empty one.

As the Json file can be written, it also opens up the possibility of having a tool for editing resources in a room and generate the sources automatically, including paths to graphics and masks and code to generate the graphical data, or path to the room file as it is written by the editor and help in filling the currently missing data (such as objects in the room). If there is ever a compiler, it could also compile script code and generate the correct resource data.

So it may look something innocent but it could well be of great help in the development of the game!
User avatar
coco.oric
Squad Leader
Posts: 720
Joined: Tue Aug 11, 2009 9:50 am
Location: North of France
Contact:

Re: OASIS development

Post by coco.oric »

I vote for the kickstarter cloning campaign
Bravo Chema
coco.oric as DidierV, CEO Member
Historic owner of Oric, Apple II, Atari ST, Amiga
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Yes, please, I need a clone to help me :)

I made another design for a room. This time a foyer inside the dome city. No objects yet. Just the room, masks, etc. Still testing things.

Designing these, creating masks, walkboxes, and programming the scripts, exits, and so on is very time consuming. Even with the aid of tools. I will have to keep on programming PC tools for automating things so I can focus on the design.

The good thing is that we don't need too many rooms to have an interesting (and long) game. Blake's room, the hallway, this room and the intro with all the scripts, objects, music, etc. (the house and first rooms I made for testing are not in anymore) and the engine itself is taking 9% of the disk space currently. If a single disk is going to be enough or not, we'll see. The game will be split in episodes: which is good for the player as he has a sensation of completing stages, and also for the game itself, as it keeps things tidy and can clean up the inventory, re-use variable space, etc.
2016-04-14.png
User avatar
iss
Wing Commander
Posts: 1641
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OASIS development

Post by iss »

Great job again, Chema!
But I just saw the sad news: Gareth Thomas, Blake's 7 actor, dies aged 71... RIP.
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Oh God. Too bad. :cry:

RIP Mr Thomas.

He was an incredible actor, also appearing in the fabulous "Children of the Stones".
User avatar
Symoon
Archivist
Posts: 2307
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: OASIS development

Post by Symoon »

Wonderful design. I wonder if I should carry on watching this thread ;)
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Hi guys!

This weekend I've been busy making an internal change, which took most of my time. Resources can, in some specific occasions, shared. Imagine a COSTUME resource (graphical data for objects such as the surveillance cameras or guards) used by two or three objects at the same time. At first I thought about dealing with that with a simple approach: when an object stopped using the COSTUME, just check if it was used by any other object and, if not, nuke it. The same goes for SCRIPT resources (if they can be ran in two threads) and SFX (which are as MUSIC resources, which store several effects).

But then I realized that it could be better to take the usual approach and adding a reference counter. Each time someone Loads a resource, the reference counter is incremented and each time someone stops using it, it is decremented. If it reaches zero, the resource can be deleted from memory.

As the resource types are currently 9 and it is improbable that they reach 16, 4 bits are enough. Then I have my LOCK bit, so 3 bits are remaining for a small reference counter. I really think that a resource is not going to be used by more than 7 objects at the same time, so more than enough, I guess.

That way I don't need an extra byte on the resource header.

I have implemented it, and finished some work that was left regarding all this. I somewhat tested too and it seems to work :)

P.S. I would LOVE to have a way to create a small program as a kind of plug-in which could inspect Oricutron's memory, to keep track of all my resources in memory, type, flags, references, etc... in somewhat realtime :(
User avatar
iss
Wing Commander
Posts: 1641
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OASIS development

Post by iss »

Oricutron's snapshot can be suitable for memory analyzes.
You can use the menu to save a snapshot, but I think it's better if debugger mode is used and simply type:
]ns file-1
for next snapshot enter again debug mode, press up arrow to restore command and just modify '1' to '2' :)
Check 'snapshots' sub-directory for the dumps, they contain additional data, but it's easy to extract the 64k RAM.
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Will have to test the idea with the memory dumps.Thanks iss. I'd prefer something more 'real-time' but, anyway.

Another thing: Blake will certainly need to find his way out of the city using the service hallways. A preliminary design exported as a png with my editor. 251 tiles and 2790 bytes.
service1.png
service1.png (4.11 KiB) Viewed 14538 times
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Though some rooms need a more usual aspect. Blake will need to walk through service corridors such as this one:
servicecorridor.png
servicecorridor.png (5.21 KiB) Viewed 14512 times
Post Reply