Development of Blake's 7 (was OASIS development)
Posted: Mon Jul 13, 2015 5:05 pm
This is OASIS: the yet-to-be Oric Adventure Script Interpreting System.
As I said in the title a very very early tech proof-of-concept and testing. Please ignore the graphics and animations, which are just stubs so I can test things.
I am just playing with some ideas and I am not sure about what the outcome would be (if there is ever an outcome, anyway).
http://youtu.be/VoO0xai1ZJ4
It is the (yet crude) foundations of a scripted engine. Room layout is there, with big rooms which can scroll. The graphic engine is there too (though still some glitches). The basic multi-threading system for interpreting scripts is also in. And I have a lot of notes about other aspects that need to be addressed.
What you see in the video is a couple of characters which are controlled by two concurrent scripts (though a single script could control both, scripts are not tied to characters, of course, but this is a test).
Scripts are bytecode which could be read as:
ActorWalktTo(boy,28,10) ; Start Actor boy walking to column 28 row 10
WaitForActor(boy) ; Waits for boy to finish
ActorTalk(boy, "Hello. This is OASIS") ; Makes boy say the sentence
WaitForActor(boy) ; Waits for boy to finish speaking
ActorWalktTo(boy,5,9)
WaitForActor(boy)
RestartScript()
The second one starts with Delay(20) and moves the girl here and there.
Still thousands of things to do, but I think this is quite solid already. Need to implement many other features for the threading system (more commands, which make use of the possibilities of launching child threads, user and system signals, etc.) and managing of resources (such as rooms, scripts, strings, sounds...) so they can be loaded from disk, deleted and managed (this is quite challenging).
Problem here is memory usage. All graphics are split into 6x8 tiles (as in SkoolDaze) to save space (mostly in rooms which could be large), and they should be stored in memory in a compact way or I'll run out of memory very quickly. Such big graphics for the characters and all the frames of animations are memory hungry.
Just imagine they are 24x48 pixels and I already have 13 different frames for each one and double that for the masks. That is 4x48x13x2 4992bytes if stored directly. I am currently using much less (3440 plus over 600 bytes of overhead) for the two characters. And still it is quite too much, but more intelligent design of graphics could help here.
Anything usable or even eye-candy is really far yet, and I am not sure about the limitations I'll encounter and if I'd be able to address them... But anyway. Wanted to share with you
As I said in the title a very very early tech proof-of-concept and testing. Please ignore the graphics and animations, which are just stubs so I can test things.
I am just playing with some ideas and I am not sure about what the outcome would be (if there is ever an outcome, anyway).
http://youtu.be/VoO0xai1ZJ4
It is the (yet crude) foundations of a scripted engine. Room layout is there, with big rooms which can scroll. The graphic engine is there too (though still some glitches). The basic multi-threading system for interpreting scripts is also in. And I have a lot of notes about other aspects that need to be addressed.
What you see in the video is a couple of characters which are controlled by two concurrent scripts (though a single script could control both, scripts are not tied to characters, of course, but this is a test).
Scripts are bytecode which could be read as:
ActorWalktTo(boy,28,10) ; Start Actor boy walking to column 28 row 10
WaitForActor(boy) ; Waits for boy to finish
ActorTalk(boy, "Hello. This is OASIS") ; Makes boy say the sentence
WaitForActor(boy) ; Waits for boy to finish speaking
ActorWalktTo(boy,5,9)
WaitForActor(boy)
RestartScript()
The second one starts with Delay(20) and moves the girl here and there.
Still thousands of things to do, but I think this is quite solid already. Need to implement many other features for the threading system (more commands, which make use of the possibilities of launching child threads, user and system signals, etc.) and managing of resources (such as rooms, scripts, strings, sounds...) so they can be loaded from disk, deleted and managed (this is quite challenging).
Problem here is memory usage. All graphics are split into 6x8 tiles (as in SkoolDaze) to save space (mostly in rooms which could be large), and they should be stored in memory in a compact way or I'll run out of memory very quickly. Such big graphics for the characters and all the frames of animations are memory hungry.
Just imagine they are 24x48 pixels and I already have 13 different frames for each one and double that for the masks. That is 4x48x13x2 4992bytes if stored directly. I am currently using much less (3440 plus over 600 bytes of overhead) for the two characters. And still it is quite too much, but more intelligent design of graphics could help here.
Anything usable or even eye-candy is really far yet, and I am not sure about the limitations I'll encounter and if I'd be able to address them... But anyway. Wanted to share with you