Albia project: work done

Week Commencing...


Changed from articulated cursor to animated conventional one. Wrote scroll routine. Improved fade routine to fade out to any colour. Tried fading screen when cursor moves too far from norns (needs more thought). Worked on design for compound objects like machines, and the user interface (toolboxes, magnified objects, etc.);


Defined Scenery class. Started work on toolboxes & other compound objects. Changed cursor so that any object can be attached to mouse. Implemented task-switcher. Worked on design for vehicle-type objects. First meeting with MR, re graphical styles.


Changed Fast/SlowUpdate functions into virtual, to make use of C++'s polymorphism. Implemented code to allow floating objects. Defined messages and message-handler code. Can pick objects up & drop them. Transferred responsibility for mvt actions from Body to ArticObject & made Body class a friend of ArticObject. Exploring what to do about creatures when they're in vehicles: best solution is a kind of suspended animation (but with random pose changes so that it looks like they're still paying attention). Allowing them to walk about inside vehicles is difficult, and keeping their brains running could seriously confuse the poor dears.


More work on inter-object messages. Button behaviour for composite objects. Dawned on me that I do have to have collision detection & suitable brain responses after all (for tunnels), and so might as well use it for vehicles too, instead of suspended animation. Fixed bug: destructors for some classes didn't delete sub-objects from heap (eg. deleting an ArticObject didn't delete its Body, which didn't delete its Limb chains!


Discovered over weekend that sick rats don't press pedals: this means I need a major rethink about my brain design! Incorporated collision detection. Changed storage method for floors & walls to use common Rect & methods. Made it possible for an obj to be dropped from mouse into a Vehicle. Defined constructors for Vehicle class & Lift subclass. Vehicle part animations. Activate/Deactivate vehicle behaviour.


Hotspots for vehicles. Activate/deactivate behaviour fr vehicles. articobjs can respond to msg to enter/leave a vehicle. Delayed starts for vehicles. Experiments with tile sizes & layouts. Created starfield. Better design for limiting user's movement (auras). Map editor now creates a file of room locations. This highlighted bugs in constructors... needed a complete overhaul! New tile organisation. Completed Lift class & associated CallButtons and shaft covers.


Hassle from M about viewpoint and whether I'm up to the job! Wrote paper on neural nets & reply to JS. Incorporated mechanical sedan chair as example of truck class of vehicle: took 2 hours to draw, grab, write code and incorporate it into program; not bad. Base classes for Magnifiable and Magnified objects. MiniPix and MaxiPix classes for paintings etc.


Current activity status now stored in Object base class, for generality. Expanded SimpleObject class to allow many types of scenery and simple activateable objects (showers, etc) without need for separate subclasses. Defined shower to test this. Good meeting in Cambridge: mostly about graphics requirements. Started routines for plotting & printing onto sprites.

MH was less than impressed with my jerky scroll, but am I going to be bullied into changing it? Of course not! So anyway, what I've done is to make the bump-scroll accelerate from one pixel per frame, steadily up to 16 pixels per frame. This is just as jerky ultimately, but it starts off smooth, and so doesn't look so bad. That's the best that can be done, considering the size and number of sprites on-screen. Frankly, I'm surprised the PC can handle it anyway. Erk, must try it on something a bit slower than my 486/33! (P.S. Tried it on a 386SX/25 and it doesn't look any different (so far!)).



Palette: colours 0,1,2 for transparent; last 5 blocks of 16 are as follows: sky, norns, cursor, cyclingx2. Leaves 176 colours for normal uses.

'Demonstrable Prototype' will consist of 1st area of Albia, complete with all objects & graphics.

Objects needed for Demo Prototype: 2 eggs (& a few broken shells); a 'home' incubator (eggs are nearby & can be carried to incubator); a family book (photo album, showing Mum & Dad starting their Journey, etc.?); food; windmill powering home; toys.

Movement limiting: allow user to scroll anywhere up to 3 screenfuls to the right of the last screenful visited by a norn. Beep if hit limits.

Patting & Prodding: make sure that startled response to smack causes norn to move forwards a little, so that norns can be herded (at the cost of making an enemy).

To Do (soon): Blackboard (as example of composite); give norns a NECK; define a littlecreature class for birds, fish, etc. (edible?); palette cycling & night&day.

Artists will be MR & TH; available in around 10 days. First job is a finalised norn for AI devt.

Scale is to be reduced a little, so objects are smaller & view is wider.

Norns are currently still unicorn-like, and will have to have articulated necks (but I doubt if they can be drawn small enough, really, so don't change code until drawn!).


Wrote stuff to allow cloning of sprites so they can be written onto, and code for plotting points, clearing rectangles and writing text onto sprites. Moving house at end of week.


Back to work. Wrote Mini & Maxi book class, with text & illustrations. Boid class, with diff species & habitats. Begun Blackboard class.


Finished Blackboard. Basics of Text entry routines. System Options dialogue.


Thinking all week: trying to tie down neural net method. Invented idea of Concept Space, and a mechanism for using it. Doesn't support procedural memory, but should work fairly well. Quite pleased. Decided to write a proper sequencer so that I can adjust complexity of action schemata within a wide range, and so that I can feed back effects of actions to brain in a flexible way.


Prettied up my test graphics for M's consumption. Met JB & showed him stuff so far. He took back disc for R. Meeting with MR & TH (IS away). Plan to have only 2 norns: boy & girl.


Rewritten action/animation handler into a full-blown sequencer language. Added sequencer facilities for looping, testing, altering emotions, action failure, messaging, etc. Shout & Signal facilities. Vocabulary handler & speech bubbles.


Started sensory system. Thinking time: tying down details


Almost worked it all out! Writing generalised neurone. Started Attention Director. Well behind schedule for next milestone now.


More on generalised neurones. More on Attention Director. More sensory functions. Linked senses into Task Handler. Sent last version to Ian (no brains, broken creatures, but otherwise as JB saw it). All currently defined objects now emit audible/visible signals when activated/deactivated (as appropriate). Strange fax from M re 'focus group concepts': replied to HE. Major revamp of UpdatePose() the better to handle gaze direction. Gaze direction completed.


Rewrote generalised neurones & attention director (!) so that all neural functions are handled by common routines in a single cortical array. Hell of a pain, but will be worth it (more subtle wiring possibilities, more flexible dynamics, less code, more realistic, easier to create a PET scanner object). Even further behind shcedule now though! Thursday: Aha! back to where I was a week ago, at last! Roxy rang: I said will try to get something before end Oct, but if not, will meet contractual deadline on 30th Oct. Sped up relaxation rate. Put in efficiency bar graph for testing available processor time: more spare capacity than I thought. Creatures now react to movement within their field of view. However, would be nice if movement became ignored if repetitive. Habituation may do it, but the ideal would be to LEARN significance of each stimulus for each object type. Can't have everything, I suppose! Started on concept space. Wrote a utility to plot brain's wiring.


Completed concept space code (except for a bug). Significance neurones now get reset when they lose focus (is this right?). Starting on Output layer. IS, TH & MR came down. Fixed bug in concept layer. Output layer mostly written, pain/pleasure and other feedback neurones added. Can pat & slap creatures.


Completed essential parts of Decision Layer. First signs of life in creatures. Tweaking dynamics & code. Changed weightings to 2-phase (relax to a rest weight, and influence rest weight a little (STM/LTM)). Sig neu is no longer cleared when cease to be IT (cos the idea was that you should return & carry on with what you were doing if new IT turned out to be insignificant after all; this needs other stuff too, like faster relaxation for IT sig neu, and some solution to the problem of last action automatically starting again with new IT). Nasty bug in 2-phase-weightings has put me even more behind! Added dendrite growth/fading/pruning code. Fixed off-limits bug in vehicles.


DEADLINE WEEK: Damn, just had a good idea that requires a major rewrite.; why does this always happen just before a deadline??? Idea is to combine pain, significance etc. signals into a single EVENT message, which indexes into a species-specific list of event structs containing significance & pain values, i/p neurone #s, emotional consequences, etc. This is much more coherent, much tidier, more expandable, species-specific, and a bloody bad thing to try to do a few days before a deadline! Lots of small changes & bug-fixes. Incorporated new graphics. Sent Milestone2 (sort of), just in time.


Pause for breath while think about: emotions, sequencer, decision threshold, overactive concepts, disappointment... Substantial changes to reinforcement, emotions/drives, dendrite growth, concept amplification, concept formation. Now all I've got to do is tweak it all again. Must try to add ability to carry & use objects in a Subj Verb Obj way.


Off work with flu.


Preparing fr trip to Cambridge & RJ's. New norn design. More macho plot & graphics was decided. Mapped 1st area (on paper). Sent 1st weekly report to Roxy.


Modified Attention Director actively to consider 'self' (introspection).
Wrote 1st draft of language system: seems to work quite well.
Wrote synopsis of new plot for MO.
Sent Roxy new version with language stuff in place. Also sent BRAINMAP.


Added Forget() function to prune unwanted concepts. NOT YET THOROUGHLY ASSESSED. Currently call this whenever Prune() is called. May be too often.
Incorporated new norn sprites (and initial changes to animations).
Added blinking.
Added smiling & frowning (NOT MUCH GOOD SO FAR)
Reach-out-and-touch anims.
Slight mods to drives.
OP_PAUSE instruction.


More work on new norn sprites, anims, instincts, etc.
Creatures can now sleep
Meetings with Mark, Ian, Tony & Martin. Artists are having hard time trying to draw a tiled backdrop. Thought of way to handle freeform graphics instead (not yet proved)


Fixed XMS so works properly now.
Front page with announcements.
Doesn't now require lots of open files.
Roxy apologised fr hassling me with negative feedback. Likely to extend december deadline to jan.
Bigger cortex; biologically suitable arrangement.
No longer required to find equivalent it/nonit actions.
Cortical i/ps are now in horizontal layers (best for non-radiative generalisation)
Improvements to LOOK and vocab learning/association
Sent version 14/12 to Roxy & Ian (for CES)


Implemented new method to allow free-style backdrop [costs 3.5MB disc space (uncompressed); lumpy disc access every screenful scrolled, but not bad; disc access every 1/4 screen if no XMS installed; 4 screens of tiles kept in XMS, and as much of sprites as will fit; XMS not compulsory; 200K free core]
Added a screen border (looks a bit more 3D now)
Creatures can now pick up & drop, but no sensory i/ps exist yet (must decide whether to supply full obj ID info to cortex), nor ability to USE carried obj.
Some new thoughts on game design, e.g. keep monitoring info on screen all time, not get in hospital. See notes in SFCNEW.DOC


Fixed bug: occasional crashes on startup. Was due to Boid class using default constructor for SimpleObject, and thus not setting Ent.SpriteP to anything until animation was under way. Fixed by calling SimpleObject::SimpleObject(....,....,....,....,....).

Wrote new utilities: MapMaker, RoomEditor, preliminary ObjectLocator

Rebuilt objects in new landscape. Needs some changes, eg. to Lift constructor!

New lift constructor, supporting adjustable button placing, lifts that don't reach surface, new Room regime,.

Boids now fly in altitude ranges determined by region.

Palette-cycling added.

Night & day, with stars & sunlit clouds. Norns get sleepier at night. Boids don't come out at night.


Meeting in Cambs. Decisions: press on regardless with Albia as originally envisaged; wait & see what M decide; will definitely do R&D project next time; uncertain whether need storyline (adventury) version or whether LCP stuff is enough.

Things to Do (urgent):

move blackboard up a bit, so norns don't get in way!

Rearrange other objs to suit new graphics.

fix LOOK at lift (poss doesn't work cos top left of lift is not between cursor and norn.

add control panel (first attempt: make it a special class of floating object, and change shape of pointer to be a conventional mouse cursor (that maybe changes shape when not over panel)).

create a 'norn's eye view' monitor mode, showing bitmap of screen around IT object.

Food, ASAP. Baby foods in nursery; adult foods in kitchen; rest in ground. Maybe living food that scurries around surface?

Things to think about:

How about game intro where you start off with a workable version of (say) Space Invaders, which dissolves into a message from Side & thence to Albia (you've been chosen for mission cos you're a gamer; Side have taken over your computer; blah, blah...)

Online help box on control panel? explains curr function of each button etc on panel as mouse hovers over it. (If keep Space Invader idea, this could explain both SpcInv & Albian versions of same user interface).

Typed speech is edited in a text box on panel, with a button to get at previous commands?

Stop norns getting too absorbed with each other (they tend to ignore everything else)

How do electrodes get applied to a new creature??????

Concentrate a bit more on NORNS' interactions with objects. Make it so that only a norn can see through telescope etc. & user is more restricted in his clickability??? Even books should only be openable by norns. They can say 'LOOK' or 'POINTER, LOOK' when they try to show you something?

Rethink lifts & vehicles, so can force norns into them.

Allow norns to communicate with each other, and prefereably TEACH each other (even if contrived).

Add a trainlike vehicle to bottom tunnel in Outgard.

Need more 'look after your norns' activities.

  Done since meeting: added control panel backgnd; Switch class written & used for Quit button; fixed bug with floating objects at edge of world; constrained pointer so didn't disappear behind border; fixed bug that caused pointer to lag behind scroll; control panel monitor infrastructure; 'norn's eye view' mode; mode switching; PET scanner mode;


Lifeform monitor; Decision Layer monitor; Electrode object; Some new sprites (type 2 lift, tower scope, magnified images); changed Vehicle classes to use sprite#s not offsets, so diff types can have interchangeable parts; stopped Magnified images from appearing below control panel; Added FOOD; fixed bug in RegisterAnimation(); changed to 2 monitor mode buttons; EEG mode with concept formation rate & # concepts; palette animation for candles/lamps; added new norn sprites & sorted out attachment points, which were wrong again!; improved N-facing head (replaced mane so looks OK when body's E or W); blackboard hotspots improved; increased punishment when 'disappointed' (was too weak to stop norns from repeating pointless actions); call buttons now only disappoint when already active (if they disappoint because lift is already there, norns can't distinguish the non-existence of the lift, and so just learn never to press the button); Altered lift behaviour so that creatures walk THROUGH lifts & get carried by them if they happen to be inside when the button is pushed (so can now entice creatures into lift, eg. with food, and force them to travel); Changed Truck behaviour: act1/2 the first time & it makes you climb aboard; act1/2 the 2nd time & the truck moves (did this so that >1 creature can ride in a vehicle; balloon etc. must be similar but prevent creatures from starting movement); more kinds of food; Beachball objects for norns to play with (great fun!); fixed the 'last pixel in sprite file' bug in GRAB.EXE; New background graphics & object positions; New version to M & Millennium.




Seq_avoid: now reduces pain (& rewards if there was any), and creature only walks away if frightened (otherwise just flinches); {retreating needs more thought!}; added new desert tiles & modified palettes (sky needs more thought = discussed with TH & tried some mockups with digitised clouds); Made night & day change more smoothly; Environmental data (wind speed & temperature); boids fly into & downwind at different speeds; Air temp affects creatures' drives (needs tweaking); new monitor mode for watching drives, physiology etc. (make into a cheat mode eventually); New utility for displaying same (& smoothing data, rescaling, etc. Might be worth including in package.


MUST ADD FIDGET SUBMODE! (when quiescent, introspective & bored, wander around randomly, so new objs come into view. Norns don't currently do much if ignored)

MIGHT BE GOOD IDEA TO PREVENT CURSOR-CARRIED OBJECTS FROM LEAVING ROOM (so can't simply take toys to norns, but have to make norn go to toy)

RESTING WHILE EXTRASPECTIVE NEEDS THOUGHT (need to be able, else won't sleep? but ugly ďem rest DISĒ & EYE monitor shows obj. Perhaps sleepiness should attenuate sig neus???


Meeting in Cambs: little progress but a good deal of arguing about plots & goals with MH & between ourselves. On way home, thought of a new scenario (honest computer pet (vanimal) stuff) to try removing the weighty catastrophe intro that demands an equally weighty future. Sent this to IS for comments.

Added rendered schoolroom.


IS & MR liked my vanimal scenario a lot - discuss when they come down. Otherwise a very slow week failing to get the airship working.


Finally managed to get airship working (obj itself, new ground-level detection, new wind velocity method). Biggest hassle is because obj is so tall that it sticks up out of rooms!

Changes to old code: Accessibility(), CanHear(), CanSee() & LookAtThisObjID() changed to allow for very tall objects like airship;

REST action returned to introverted type again [may need therefore to remove ZZZZ bbd icon].

Fixed bug: creatures are now slid properly into vehicles (KeepInLimits() used to test all limb tips, but this didnít work if bum was sticking out, so now use Bound instead (also quicker).

Auto-pickup of passengers is now an option for any sub-class of vehicle (balloons & lifts currently use it).

Added Grendel species (graphically - still have to tweak poses, seqs & stimuli, and build/train a brain)

Experimenting with scrolls.


New scroll handler - limits movement to within +/- 1 screen of electrode


Animated cursor (gestures)

Cursor now stays visible when carrying things

Improved scroll - less springy

cheat for teleporting to distant places, complete with creature

failed attempts at making map wrap round - more next week!


Succeeded in wrapping map - method is a botch, as follows: rightmost column of screens looks identical to leftmost column. If camera goes off left edge, or fully onto right edge, then camera and all nearby objects get transported to other edge of map. Safest if this is only allowed to happen in ocean, cos wrap only happens when camera is around to see it. Boids may end up having to circumnavigate the globe after a wrap too. MUST RENUMBER ALL TILE FILES TO MAKE OCEAN AT LEFT EDGE.

Fixed overflow bug in lifeform detector.

Magnifiable books now animate when activated.

Added tree area tiles (yuk!)

Data logging can now be enabled/disabled from control panel

On/off switch now works right way round (American)

TO DO... Allow creatures (only?) to activate mag objs (timed shut).

BUG!!!! Still puts thick black band across screen before FadeIn(), but only when running from DOS!!!!!!!!!!! ONLY HAPPENS ON MY MACHINE!

Program crashes unexpectedly sometimes (might be due to grendel in lifts?). Debugger reports a thrown exception!


Some new sequencer instructions (random types)

Introspective Quiescent creatures now fidget a bit, so objs come back into view.

Fixed bug in CompoundObject::WhereToPress() (was causing blackboard constantly to seem unreachable, and therefore to keep disappearing & reappearing in sig neus; this in turn caused a NEWOBJ stimulus which diminished boredom!

FatalError() now resets tick interrupt if necessary.

Tweaked various brain dynamics: smack creates more pain & pain has more influence (so that I can restrict smacking to a single click, not repeated ones); smack makes you more angry & frightened;

Tweaked brainmaker: pain & fear make you more likely to retreat than before; some grendel-specific instincts (attack norns)

blackboard now also emits word whenever picture changes

MAY have succeeded in getting norns to learn language from each other! (But it keeps crashing (unrelated), so I canít easily tell)


Discovered (eventually) that recent crash bugs are caused by lack of memory (usually when dynamic objects get allocated with new (eg. Speech bubbles, books).

Provided better error handling, esp. Memory errors.

Can monitor core left using bar chart. Cache works OK, but maybe worth trying to set MAXCACHE size according to amount of remaining mem (to ensure enough heap left for dynamics)? Min cache size would have to be larger than the largest sprite (at least!).

Exploring ways to use extended memory to solve memory problem without resorting to DOS extender.

Decreased sprite cache by 30K - seems to do no great harm!

Fixed minor cache bug: all cache allocations were an even # bytes, but cache removals were NOT rounded up to even. Consequently, BytesInCache gradually got out of sync with true amount of heap available, and so cache can bung up as all sprites are removed and yet still there is not enough mem free!

M have officially cancelled this project! They are still interested in discussing SimSeaWorld later. If they go ahead, Toby or Kev will write this, with me providing neunet code. Millenn will now look for new US distributor for furries.

Thinking about goal-directed behaviour - if hungry SEEK food (remember where you last saw some); nest-building, etc.


Experimenting with XLIB (shareware DOS extender) - not much help, I fear.

Various behaviour & dynamics changes to try & stop norns from crowding each other & becoming hoplessly entangled: increased Overcrowdedness rate; instinct to Avoid if o/crowded; Avoid has new submode, so creatures walk away from each other; instinct to decrease likelihood of Approach when o/c; o/c & loneliness nudges use different proximity rules, so norns will tend to keep close but not too close.

Trying to implement a HowPleasedToSee(obj) system, so creatures only pay attention to own kind if lonely, etc. Main aim is to stop creatures from hogging each others sig neus, but at same time might be able to implement <extra sig if novel> and <learned sig> actions???

Finally figured out a method for goal-directed behaviour (incl. elementary navigation), using an FSA for decision-making. This requires walk-west & walk-east actions to be in repertoire, which is a good thing, cos I dont like the hard-wired w/e Fidget actions, since bumping into walls creates destructive feedback when creature canít choose not to do it.

Added two more actions: travel east/west. Now boredom & introspection makes creature wander in a way that they can learn from. Instinct stops them from walking into walls.

Fixed bug: TRAV1 pose had a <face east> code in it, which is why fidget never made them walk west!

NOTE: in MkII brains (if there ever are any), it would be better to have 1 Sig Neu for each obj ID. Canít then handle 2 objs of same type simultaneously, but itís much easier to wire up neuronal circuits to manipulate sigs, rather than code, since I donít have to seacrh for the correct sig neu for a given obj.


Meeting in Wells. Decisions:-

Start the game in the JUNGLE, in a tree house. Just the basic necessities around, including blackboard. Canít travel far west, cos of volcano. East soon leads to SHIP, thence to OUTGARD; return via submarine if reqd.

Plausible storyline then emerges as follows (NOT an adventure, just a likely sequence of events): 1/ get to know your norn; teach language; explore jungle; find ship; sail to Outgard; enjoy new toys & other objects (o/gard is now what Niflheim used to be); find Eve as an egg & hatch her; find armoury with gun pointing into desert, suit of armour, etc., warning you about risk in desert; in desert, one norn gets attacked by sole grendel & is crippled; travel back with other norn to jungle to fetch curative herbs; cure crippled norn & continue across desert; find airship & sail over mountain; if land on mountain, can travel into depths to see DarwinII; pull lever marked <no pull> (in language taught to norns by user?) & get an end-game reward, including credits (on a vdu?); return to jungle where food can be planted on terraces & norns can live happily ever after!


Still working on goal-oriented behaviour


Took delivery of Symantec C++ & Flashtek debugger / extender. No end of incompatibility problems, yet to be resolved. Started re-writing Albia & utils for 32-bit. So far, brain is completely dummied out, as are palette routines. Biggish hassle is the fact that ints are now 32-bit - general decision is to make data bulky but fast, and only use shorts where absolutely necessary. Note: getw() returns int but only reads 2 bytes. Asked Symantec for older version of lin386; contacted Flashtek re bugs/problems with Flashview.

TH has gone off to work on Diggers for 4 weeks. Ian said something about ďrumblingsĒ in the Marketing Dept, so Iíd better get my story straight before next meeting.

Conversion of Albia to 32-bit: removed XMS code; changed tile size to 160x80; rewrote video etc code in inline assembler; changes to brain code so can write in c++; converted file structures etc to cope with larger int size; new SC++ mouse & timer handlers; rewritten palette routines;


Still converting to 32-bit. Mostly works now.

Rewriting brain code in C++ (rather than convert 16- to 32-bit assembler). May be less efficient, but will be easier to understand.

Changed Lift behaviour: stopped Act1 from making lift Act2 when on bottom floor (was making it too likely that norn would get into a loop of lift down-up-down... Can reinstate this action if necessary.

Fixed long-standing bug that left o/ps of all dec neus zeroed whenever cortex wouldnít stabilise enough to allow new concepts to be formed. Caused creatures to sit idle despite apparently strong recommendations.

Removed TRANSIENT, EXHAUST & DIGITAL neurone dynamical types (unused but were costing processor time).

Problem: creatures seem much less likely to be introspective now, and therefore never go to sleep (introspective-only action). Maybe this is a bug? Maybe Sig neus should be less affected by stimuli when creature is sleepy?

Problem: creatures get so much fun out of riding lifts, that it is difficult to stop them. Is this a bug? Or should I reduce reward? Or what?

BOTH THE ABOVE PROBLEMS can be fixed by modifying the InterestIn table! This should be monitored. Iíve added a facility to display Sig Neu bars on top of EYE data in VDU. Iíve also tweaked InterestIn table a bit. MONITOR THIS FURTHER!!! (May also need to make nudge for re-see smaller in proportion to first-see).

OK - fixed the lift obsession bug: A_VEHON & A_VEHOFF nudges are now counterbalanced by a T_VEHON/OFF negative sig nudge, so arrival of lift is noticed UNLESS you are a passenger. Also, goal-directedness was trying to draw creatureís attention to lift while already in it - now no goal-directed actions allowed whilst riding. Lift no longer hogs attention.

Goal-directedness SEEMS to work OK now. Will have a clearer idea when more goal objects exist (shower, etc).

Fixed various brain bugs (some with old version!).

Currently, Forget() is disabled (was pruning too many concepts that were in process of formation). Either fix it so that it only Forget()s when no new concepts have recently been added, or only call it just before writing brain to disc.

Re-jigged reinforcement dynamics & way reward is calculated - better STW/LTW behaviour, though still far from perfect. The biggest problem now is the inadequate concept space method.

Have a problem with FOOD: remains known about after eaten. Goal-directeness then keeps nudging its Sig neu, and so creature keeps trying to eat it. Dont know why food remains known about - Disregard() is being called, and seems to do the right things; no V_NEWOBJ msgs are sent, so food doesnt get seen again; no idea why food remains/returns to knowledge. Partial kludge would be to let food remain CARRYABLE after eaten, then norns could go through business of trying to eat it again without looking silly. Then theyd get a _FAILACTIVATE msg, which should dissuade them eventually.



Meetings Cambs: MH said ďtake game out of the scheduleĒ - take time & get it right - redo whatever is necessary. MH wants to do marketing himself, rather than through system. Wants some crusader - suggested Desmond Morris. MH still talking to Sony, re getting them to use furries3D to show off PSX.

Decided to add 5 months to schedule; more gratuitous graphics; more facial expressions; new norns (monkeylike); everybodyís norn is unique; complete rethink and rewrite of code; add hooks for extensions; allow norns to travel from one personís system to another, via disc or modem; buy new norns; possible speech in/out.

Likely to go beyond 6 floppies, so likely to be a CD-only product - not seen as a major problem.

Added new o/gard surface graphics. Got rough ship.


More water has passed under the bridge...

Current plan is to try producing Albia for Windows/Win32 (using WinG library). No schedule exists at present. Artists continuing as normal. I have to go away & learn the various APIs & figure out how to do it. Virgin have expressed a serious interest & will take game away for a month to decide whether they want in.

Assessing WinG, OWL, Windows API. Deciding whether to write at low level to API or via OWL and AppExpert.

Tried incorporating WinG into OWL classes but failed. Instead Iím defining some classes of my own, just for using WinG as a double-buffering mechanism, with WinAPI handle calls internally.

Blitting now works, but Iím having no end of trouble making an identity palette! (Got it working eventually).

Palette is now realised during correct WM_ events.

Frame window is now restricted to max 640x400 size.

Written WINVID.ASM, but BlitAsm() doesnít yet magnify the image.

Looked into <new> operator and GlobalLock stuff - <new> MUST lock the block, otherwise it wouldnít know its address! Therefore can use new without fear (though be wary of jamming up global heap).

Started to write (modify) SPRITES.CPP. Got to the point where I want to call BlitAsm(), but find I need a pointer to the DIB to blit onto. This of course is a member of the WinGBuf object that is owned by (and only known to) the World window!!! Have to think about class hierarchy - how do I pass this info through the UpdateRect() chain to tell it where to blit to (without too much hassle!). Maybe I just pass a pointer to a WinGBuf object to UpdateRect(), but where do I get it from? AH! of course, UpdateRect() is only ever going to be called during a windows WM_PAINT (???). But what about game objects moving and demanding a redraw? Is WM_PAINT too slow? How do they know which window(s) to invalidate? There might be a norns-eye-view window too (or maybe that just invalidates itself every tick - thats what already happens). Anyway. THINK about all this!



Sorted out class organisation a bit.

Got tile blitting working - can now see game world, but still unmagnified.

Could in theory use WinGStretchBlt() to do the magnifying, but though this works fast on a 256-colour screen, it seems to pass through to StretchDibBits() on a hicolour screen & is very slow. So, back to plan A and doing the stretching myself during the sprite->DIB blit.

Yuk!! Unable to write a magnifying Blit() function in 286 protected mode! (cos DIB is bigger than 64K, but I cant do segment arithmetic and cant have 32-bit offsets. This is a major pain. I know it IS possible to force 32-bit offsets (.USE32), because the code in the WinG DOGGIE sample does it, but I cant understand how (it uses weird MASM macros). Looks like the easiest solution (for now at least) is to write the program for Win32, to gain advantage of the flat memory. Maybe later I will figure out a 16-bit method too. At least going straight to 32 bits means I optimise for Chicago.

Written a 32-bit scale & blit successfully, though having a lot of trouble with 32-bit debugging (TD32 loses track of <this> address!).

Scroll bars work now. Added ability to have un-wrappable worlds by setting a flag (in MAP.CPP)


Magnify on/off menu option added.

New user interface. Rebuilt project with new class structure & names. Provision for toolbar and info bar. New About dialogue.

Had crash problems using Borland custom controls in RW! Have reverted to Microsoft ctl3d controls (which look better anyway).


Added partial Preferences dialogue. Added Sound menu options. Added Cheats menu with cheat to delimit scrollbars. Wrote basis of Help file.

Context help doesnít work! (claims identifiers are already used in [MAP]) - FIX THIS!


Elementary sound tested (sndPlaySound()). Elementary video tested - needs better MCI_NOTIFY handling, or conversion to mciSendMessage() rather than mciSendString() (this requires VFW SDK).

Cambridge Tuesday. Decisions: Have a pet shop, with a CHOICE of norns - something for everyone (Nornia Hawardii, Nornia Rafterensis...). Call the game Small Furry Creatures! Aim at adults but have a child-friendly menu available too.

Other thoughts/ideas: Setup program = Darwin? (show bitmaps of architecture etc as billboards (if can use ctl3D or BWCC)). Context help for some objects in world? (shift f1 then click on eg. a plant, and youll get help about Albian botany that maybe couldnít be reached via contents topic. Think about speech - speech in/out requires recognition software (neu net??); build speech out from typed in via phonemes?

TT from V is coming next Wed. To Do: mock up some monitors; do a hypergraphic in Help (regions of Albia?); multi-level menus?; pet shop mockup?; speech decisions; kludge on game code?

Rewritten Preferences dialogue to use ClassExpert instance variables. Added CDROM Drive combo box.

Kludged old game code onto Windows version - mostly works, but norns donít.


Fixed norns - game basically works again, except for kbd input.

Demoed game to TT. Well received. Liked idea of add-ons. General plan seems to be: set up a deal for Albia; we then produce Albia to our present design, and V start to get deeply involved in next project.

Other thoughts/suggestions:

Hold obedience-class competitions as publicity stunt? Reward the trainer (maybe in <child> UI mode) - show how well they are doing?

Pet Shop: when you buy a pet, fill in a <particulars of ownership> form, then you LOG IN to Albia using the name you specified. This way a) you can have multiple users AND several peopleís pets in the same world, and b) you donít need the electrode - all monitors & cameras track YOUR pet only.


Received MSDN CDs. Spent the week exploring Developer library & installing all the SDKs etc. Looking into VFW, OLE, etc. etc.


Experimenting with speech synthesis

29/8/94 to 10/10/94

Exploring brain mkII: Trying new techniques for concept space (weighted gradient). Got near to a design for an active, rather than passive net (see notebooks). Would have been great, but unable to tie down a practical design.

Boning up on OLE2 & other technologies. Looking into ways to modularise game so that pet shop & other worlds can share code, creatures can be dragged & dropped, scoping can be carried out within compound files, etc.

New idea for object & creature structures: join brain to rest of creature, divide structure into a genome & a phenome (GP structures that get wired up by genome at birth) and provide a set of expressors & reactions (primitives) as functions in a DLL. That way I can redesign brain & physiology at any time (including after publication). Also, creatures can breed with convincing genetics (even evolving new brain structures). See notebooks.

Discovered that current 32-bit version requires over 4MB to run!! Canít see any single culprit; heap seems to be used up mostly by WinG (presumably big DIB), then by win32. Considering ways to convert blitter to 16-bit in the hope of reducing memory requirements!

Got Visual Basic. Exploring ways of writing world handler as a VBX, so that I can write quick, pretty & expansive user interface in VB. Makes graphs etc a doddle. However, code has to be 16-bit!

Thought: maybe toys such as monitors, teleporters, magnified books, paintings, etc. could go back to being PICKUPS, only this time when you pick them up, they could drop onto a windows toolbar? Pictures would be high quality, books easy to read, monitors pretty. Also, thereís an element of discovery & gamey progression, but without any need for a plot (toys are just for playing with). Maybe some toys could be VBXs, so that new toys could be supplied?


Examining the 16/32-bit issue in detail.

At last made a decision! Donít use OLE2 yet, but keep design OLEable where possible. Instead use DDE to communicate from 16-bit VB forms (tools, mag images, video clips, text i/o, etc.) to the 32-bit camera app (Albia). Whatís more, design a full-blown macro language for use by object/creature events (Act1, Drop...) and make this DDE-friendly. I.e. allow macros to use DDE to communicate with other apps (including spreadsheets etc) and also make DDE commands from other apps appear like macro commands! This means that both internal and external objects can have full control over system! There, that was worth waiting for, wasnít it?


TH moved back to Worksop this week. Pascale to take over from next week.

V wonít make a decision, so are being dropped. However, A are coming to see it next week.

Incorporated latest graphics. Added temporary Windows keyboard support, for demo.


Last few weeks assorted shilly shallying. Demo to A (V.Good response). Written definitive article on furries. Brainstormed terminology. Ordered memory & VC++...


* convert to VC++

* file classes

* streamable objects; world class

* macro language; DDE; object & creature anims to use macros

* finish/write tools & toys

* tool/toy decrypter/installer

* pet shop

* new brains; genome

* mix n match creature appearances; reproduction

* new scenery class/type for simple entities

* object editor; landform editor

* physiology; illness; death

* new/better creature anims (ill etc)

* help files (including toys)

* new Albian objects: cable car, computer, growable food..............

* reduce memory consumption

* installer / uninstaller

Other news: MH showed it to WI. Also V.Good response. Are to prepare a proposal (likened the concept to Viscalc, no less, in terms of breadth of appeal!!!)

MH looking into possibility of setting up a subsidiary company (with me as a shareholder).


Trip to San Jose to see A. Met B every day. PH said Furries was the best thing he ever saw! Everyone agreed it was a big thing, not a game and in need of a good PR campaign. Only significant negative comments came from Bís assistant (pet lover), who thought it wasnít as good as the document painted it. On the other hand, PH thought the document undersold it.

MH has set up a company, Cyberlife Technologies, to handle exploitation. I will get a share option. I and others will be hired by Cyberlife from Millennium, for a fee.

We agreed that N should help out with the programming (once his part in Siege is done, probably). Discussed possibilities for enhancing the graphics (rendered creatures; rendered backdrop, a la Donkey Kong Country; more contrasty palette; slight viewpoint shift). I should look into writing a furries screen saver (eg. Eye view bouncing around screen <NO, thats silly - it would take too long to load up>).


Explained brain model to Dad and realised that AB+C problem is not such a handicap, as long as concept trees are never deeper than about 4 inputs; current system does allow for sensitivity to sequence, and waiting for cortex to stabilise prevents arbitrary sequences from causing trouble. To improve concept space, donít look for a new system, but think about:

* limiting concept formation to 1, 2, 3 and 4-input concepts only (how?)

* changing input latches to hold new inputs for a short period (say one second). This will allow pulse type events to stabilise and stop vaccillation on slow sense inputs.

* reintroduce pruning if itís currently disabled.

Visual C++ arrived, but 2nd 4MB SIMM and Ianís NT3.5 havenít yet arrived, so canít get on with serious programming. Instead am thinking about macro language.

up to 31/12/94

Messing about with NT, VC++, Chicago, etc.

Written VC++ infrastructure for Vivarium app.


Serious programming again! Working on registry handler and infrastructure for Tool registration.


Tool registration & execution.

Big problems with OLE automation: worked OK when I wrote a testbed a while ago, but doesnít work now! May be Chicago. Canít get system to run current instance of vivarium - only a new instance. Also, fails to init correctly. Also, canít fathom how to produce a proper Application object. Considering abandoning OLE and reverting to DDE!

Back to Plan A - started writing DDE-based system


Completed DDE system, except for a smallish bug in VB or Chicago, that causes GP faults when the Tool is quitted. FIX THIS LATER!

Removed all OLE code.

Essentials of Macro system now in. Most primitives will have to wait until world code is in place.

Added & MFC-ised WinG code (had to change .bmp stuff in CreateIdentityPalette() - look there if any problems arise)


Started WinG-MFC interface - tricky to fit into doc/view architecture!

Cambridge - discussed getting someone in to visualise norns, and considered drastic measures with the backdrop. MH favoured starting again fully rendered; IS favoured carrying on as is; MR favoured rendering creatures & foreground, and keeping backdrop as is.

Wrote brief for character visualisers (SFCBRIEF.DOC).

I've since been experimenting with the possibility of making a clay relief model of Albia & digitising it (see SFCCLAY.DOC).


Discussed clay idea with MR - he is keen.

Imported all of old game code into MFC version. Trying to get it working!

Cured memory leaks (permanent Objects & Charset). Fixed palette handling. Added Eye View. Added save-window-position-in-registry. Eye view is Always-on-Top.


Wrote window size limiting & magnification code. Tick handler & Eye view now running.

Situation is back to how it was when I stopped using Borland C++! Ron is alive & well.

Started conversion for serialisation: Converted ObjectLib[] & EntityLib[] into collections; added ArticObjectLib[] collection to speed creature updates; moved world.cpp stuff into CDocument; created a Map object, to keep all map-related stuff together (and serialisable);

Minor new ideas: Add DDE Exec facilities, then petshop can launch & control Albia (xfer pet); Use registry to prevent 2 instances of vivarium with same document, whilst allowing eg. petshop + albia to coexist; Only need a SINGLE macro to hold a whole anim sequence for an object, thus saving space/speed; Scrap hand cursor, make hand invisible & reinstate mouse cursor, then add a right button menu with Act1, Act2, etc options (left btn executes appropriate default option).


Brief trip Cambridge: clay artists to go ahead; MH lost interest in W AND A now!

Serialisation is requiring major changes to sprite system, etc.

Changed from Sprites to Image and Gallery classes (see notes in proj).


Finished change to Images & Galleries. Reorganising Object classes - new Scenery class (simpler than SimpleObject)


First test clay model looks great. Artists are to try jungle; Mark will try scanning test model. Met RL from M - new possible partners: he was sceptical at first but says he is now convinced; Liked use of modern techniques (macros, dde, etc).

Working hard on macro language and DDE interface. Starting to make Objects run macros instead of hard code.


Still on macros. Reorganised DDE so that Topic is now fsp of tool (makes registration/quitting easier and frees up LinkPoke for use in macro-driven data logging).

Macro data-logging now works - can issue a macro to be run every LinkRequest, which returns assorted data to dde - very flexible.

Written script editor - can now load/save scripts & enter them into scriptorium. At last succeeded in making a ball bounce (actually a lift button) using macros!

Added primitive sound facilities.

Working towards being able to demo some of this stuff next week.


Met professor of A.I. & Robotics at Cambridge, to be interrogated on behalf of a bunch of bankers. No fun! He knew his stuff, but was A.I. / top-down in philosophy and quite cynical. He says that several other companies are working on A-Life for use in entertainment.

Met TF, who has come to work for us to handle Furries PR, documentary, talking to scientists, etc. He has already spoken at length to Chris Langton and others. Very switched on to the subject. Great to have someone to talk to who has a technical interest in the project.

Working on Setup program so that Ian can take Furries to M in Santa Clara while Iím away.


Furries meetings: Mark has drawn up a completely new landscape - excellent! Modellers have been commissioned - taking approx 4 months to complete; smaller scale than before. Explained theory to TF. Discussed ways of using A-Life evolution for defining what norns look like.

Knocked up a quick biomorph program - fun but no use for norns. Am experimenting with other methods.


On Holiday!!!!


Meeting: Mark has drawn/evolved 35 norns - will finish rendering them then weíll try taking a vote on them; (though should really vote during the evolution process, otherwise theyíll not diverge - weíll see). Mark/Tom have loads of good object ideas. Tomís talked to Chris Langton again - plan is to go to Santa Fe in about 2 months.

Thinking about physiology. Explore Ďreactants & reaction sitesí model.

Lack of e-mail is a pain, so Iíve taken time out to write a bulletin board system for recording comments & thoughts; whether itíll be any use, Iím not sure. Decided to keep a copy of this diary on network, updated weekly.

No programming done at all this week!


Just read through this diary, prior to making it public on net. Seen some things that need thinking about! Example: now objs are script-driven, how do they provide entries in InterestIn table and other goal-directness tables??? What pillock suggested scripting objects anyway?

Added utility to monitor system info such as # sprites, # objects, etc.

More work on scripts & macros. Added OBV0 to OBV2 object variables as GP macro vars that are retained between macros (needed for food macros etc.). Added Construct & Enter/LeaveScope message-driven events, to allow objects to initialise themselves via scripts. Added low priority Timer event for periodic updates (plant growth or whatever).

Started trying to code edible plants. To do that I need a 4-char-fsp grabber, which means recompiling GRAB as a win32 console app. This may be a pain!


As predicted, changing GRAB is a pain! Was written for 16-bit DOS, and I canít compile for that now. Anyway, ought to be a .BMP grabber, not .LBM. Decided to manage without a grabber for now, on assumption that I might have some programming help soon enough.

Meeting in Wells: TF/MR. Discussed multimedia stuff; I might experiment with GAs for Ďlearning to walkí?; Still aiming for 2 months before going to SFI; Mark will organise some scratch object graphics ASAP; Played with product names, etc. but no success; lots of stuff talked about.

IS/MH seem to have got on well with W. Hope is for a launch at Jan CES or May E3.

 Started knocking up a new evolutionary neunet development environment - will work on this in my odd spare moments (?!?).


Removed hard-wired object classes, ready for scripted versions: Food, Boid

Added CompoundObj creator to Object Editor & appropriate macros to script language. Not yet finished.

Useful thoughts on Lamarkian approach to neunet design and genetic criteria.

Huge amounts of irritation with the network, and MHís desire to get scientists to endorse furries for venture capitalistsí benefit have curtailed all programming thurs & fri.


Object editor & macros finished for CompoundObjects.

Meeting with HS & Team:

- MH likes ďbreeding norns for pleasure and profitĒ memo, so weíre all in tune about hobbyist pet breeding, global AL experiment, etc.;

- Current launch date is Feb; ďBlue Sky TeamĒ will be Neil, Peter and Toby (as project manager), but wonít exist until September, so no help in immediate future - programming is thus all down to me, so I might need to be more conservative with my ideas!;

- Huge hassle with HS, who wants to get scientists to write paper detailing life attributes that norns show, even if that means paying them to tell us that I havenít written any code for evolution yet!!! Under such logic I just canít say anything useful, so plan is for Tom to meet with a zoologist at Cambridge, while leaving me out of it. Not a good situation. Not happy.


Started coding again, finally, but fear it wonít last! Working on new Vehicle class & Elevator class for script-driven lifts etc.

Thought not! Only a couple of days coding this week. Michael wanted me to write an article, which Iíve failed miserably to do.

Tom got on well with zoologists. Robotics professor wasnít as negative as feared. Michael likes pet-hobbyist, global experiment, open-ended evolution, etc. ideas.


No better this week: article, demo backdrop etc. got in the way.

New backdrop needs more work for the final thing, which we must do before the modellers get too much further. Lighting too harsh and uneven.

MH/IS/TF meeting with Warners twice this week.

Irritating bug: whole system slows down when cursor moving. True for last demo build too. Not due to processor overload; seems to be caused by WM_MOUSEMOVE messages causing WM_TIMER messages to be blocked. Changing to updating world during OnIdle() didnít help (for same reason). Only idea is to make OnMouseMove() move and redraw the cursor/carried objs, rather than via FastUpdate() - this wonít help world slowdown but will at least make cursor move smoothly. TRY THIS !!!!!!


Canít trace this slowing-down bug. Making OnMouseMove() call MoveWithMouse() didnít help! (presumably even WM_MOUSEMOVE msgs are getting slowed). Added code to count # milliseconds between each WM_TIMER and found that although there are sometimes longer delays, those delays donít seem to correspond to mouse glitches. Decided not to waste more time on this now, but needs looking at in future.

Apparently 2nd meeting with W went well. Top Man liked idea; marketing people saw potential. Would like us to consider voice recognition in mkI. Deal v. likely to go ahead. MH thrashed out contract on 29th - all sounds well.

Vehicles and Lifts now work & can be edited. Lifts will work as cable cars too. Modified Vehicle class to make it possible to define aircraft and subs without needing special case code. Just an odd bug with Ronís feet left, then I can move on to scripted creatures.

Cambridge next Wed, to meet Wís ďexpertĒ for another Spanish Inquisition.


Cambs trip cancelled. Then on again. Then meeting two scientists instead of one.

Scripted balloons now work (just about!). Added annotations to objed forms.

Blackboard class works. BBD editor written. Problem with knowing when a VB tool has stopped editing - made me go back to thinking about the DDE crash-on-quit problem.

Canít solve DDE crash! Someone on CI$ has same problem - Iíve posted a msg there for help. Maybe VB4 will be out soon? Try again later!


Cambridge meetings:John Daugman, computational neurophysiologist at Cambridge, sent by H to grill me; Dave Cliff, lecturer in A-life and evolutionary robotics at COGS, sent by W. Both meetings went well. Hopefully, everyoneís satisfied for a while!

Ian produced schedule for project. No spare time at all! Heads down!

Excellent letter from John Daugman. Also, Dave Cliff emailed to say heíd enjoyed meeting & would like further involvement.

Started writing serialisation code in earnest.


Serialisation part done, but have to move onto writing new form of creature class before can finish. Started this, but a lot of work involved.

New norns from Mitch/Michael - Zoids. Will require more coding for big eyes.

Got copy of project schedule: only two weeks in, and already over a week behind!!! Too much farting around with documents, names, norns and suchlike.

Ann is to do help files. Discussing her idea that biomimetics process was human-driven: Albia was made by hand, piecemeal, in response to evolution of creatures (when they developed legs, we provided land...). Good plot line; may explain something about nornsí looks; explains why world looks as it does; relatively honest.


Converted creatures to use script language. Good improvements in the way objects can override creatureís default behaviour.  Changed pose and animation system for creatures - better for scripts; more power.

Changed object ID mechanism to use objectís family+genus - GetID() still returns a # from 0-39, but Genus determines that #, and therefore all objects with the same family & genus are indistinguishable to a creature. Iím allowing 25 simpleobj genuses, 10 compobj ones and 4 creature ones (plus IDME=0).

Looking into how creaturesí  large data tables will be handled (joints, poses, object-orientation, interestin). May be best to convert goal orientation to neural structure - one neu per ID, dendritesí wts = how much each drive recommends seeking that obj. Table could then be learnable; maybe even heuristics can be neural?

A solid weekís programming, for once!!!!


Object ID changes finished. Improved pointer objectís gesture mechanism, so that other objects can override (eg. balloon can make cursor appear to Ďpull the cordí during activation).

Working on a new model for the brain (flatter concept hierarchy, DNA-programmability, etc.)


Got most of a new brain model designed, and have started to implement it. VERY hard though, and time pressure makes it even harder. May have to chicken out, but I hope not - new method would solve concept space blockage, incorporate goal-direction & learned significance into neunet and be capable of open-ended evolution. Iíll stick with it until next week.


Erk! Iím still working on new brain model, solving all the niggling problems.

Cambridge trip to help Mark sort out enhancing the backdrop & create palette. Looks like night & day will be possible again, but palette will have to be carefully organised. New zoid has been rendered on SG.

Sent installable SFC to Tom for W.

By end of week, brain embryology is mostly done, and most of the problems have been ironed out, but a lot still remains!


Still designing brain II - new mechanism using random reconnections and action-specific concept neus. Tried it using VB and seems to hold promise.


Bank holiday and Cambridge trip will use up practically whole week - made worse by a whole morning spent failing to read my email!

Initiated Neil & Peter into the cult: bare bones intro to structure of Furries code. Not likely to see any work from them for a few weeks though!


working on new brain


working on new brain! Genetics & embryology done; chemical receptors/emitters designed but not yet implemented.



- things donít look good for T, whoís AWOL at the moment

- showed ďGood NornkeepingĒ magazine - MH approves; Ann is to be responsible for ALL textual support now; MH suggested we have context-help for objects (with tooltips even!)

- Neil is tied up with Snowman/FC for at least two weeks!

- W sent voice recog software, but itís DOS; Asked CS for info on Microsoftís voice recog stuff

- Everyone wants ďdog tagsĒ for norns. MH suggests a tabbed-dialogue, as per Win95 ďpropertiesĒ. Seems desirable to have right-button menus as a means of supporting this.

- W want electronic product registration; they are to supply code.

- W want norns to live for > 2 months. Need to have senescence explained to them!

- W US are pro Win95; Europe are anti (due to low takeup in Germany)

- MH suggested user-selectable pointers (and even avatars!). Weíll see.

- MH wants ability to log such things as how much time a norn spends using each object; IS thinks this will make things look duller than userís imagination would.

- I need to think through box design to installation, before W do it!

- KH is available in 2 weeks, but will be doing R&D on blitting etc. first. Mac conversion discussed - looks fairly tricky, because of VB & DDE elements. I suggested Hypercard as a VB substitute; KH needs to consider this and DDE equivalent.

- W are likely to want regular builds every month (to be stalled until end Oct)

- Toby may come in as producer for Furries


Brain model taking shape. Lots of trouble with maths - should it be byte integer, fixed point or mixed 16-bit ints & fracs? Biochemistry largely written, except for reactions.



W meeting - discussed schedule, backdrop & norns. No big worries, except norns are still not universally liked. See minutes.

Brain Group - rearranged tasks between Peter & Neil. Peter is to assume responsibility for the whole graphics system. Neil wonít be starting for at least three weeks.

Artists - saw backdrop with clouds & mountains. Looking very good, but clouds are causing problems. Decided to progress with grendels for now, until norns are agreed. L has finished cutting and scaling 64 objects; animations next. Should get a reasonable selection in time for Novemberís demo version.

Anilís now in the office.


Now Peterís gone off the project again. So far, Iíve had three man-days of help, when I was promised two full-time programmers from the end of August!

At last Iím able to compile the main program again! But only by remming out dozens of Creature functions, which now have to be gently put back together. Language learning is going to be tricky, cos I used to adjust dendrite weights in code and now I canít.

Separated Creature class into Skeleton & derived Creature class, to make it easier for Peter to extract the code he needs for pose editor.

Peter coming here on Friday.

AAARGH!!! Hard disc crashed this week. Because Iíd moved my development software onto drive P: I hadnít been able to continue my incremental backups, and because I was in the middle of a delicate rewrite I didnít dare delete my old backups to leave room for a new full backup. Therefore, my latest local backups were almost a month old! Happily, the bulk of the source was backed up on the server and was only two weeks old; one of those weeks being used up with meetings and thinking time. I was also able to recover most of drive C:. Consequently, Iím only about a week behind. Rewriting code is no fun though!

Peter has finished sprite grabber.


Caught up with where I was before the crash.

Reinstated as much remmed out code as I can. Changed attention-director to use one neu per obj ID (I hope).

First glimmer of consciousness from Ron for months!! His new brain is going to be hell to debug, but so far shows the basic behaviour - the attention lobe responds correctly to stimuli. Shows promise.

Writing biochemical reaction mechanism.

Peter is working on pose editor.


Converted Stimuli & Drives to use biochemistry. Now have object-specified and creature-specific (genetically-determined) stimuli - need to add some general-purpose creature-specific stimuli eventually.

SIGNAL messages are gone. Stimuli are now handled by separate queue. Added SPEECH and WRITING message types as new means of emitting spoken and learnable text.

Wrote some more Serialisation code, but this threw up the fact that creatures are still not constructed from their genomes & dde macros. So, have to do this before can return to load/save.

Creatures can now be constructed from a genome, and they can create their own sprites files (almost - need new sprites before I can finish this) and use attachment tables from disc. They can then express their appearance from genes. Next up is to control poses & anims from genes, then creatures are entirely genetic.


Faffing about in order to get a demo working for next W meeting. Will please everyone else, but isnít really the best sequence for working. Suppose I have to do it. Aiming to get backdrop, some objects & grendels in. However, wonít be able to save document or show completely working brains.

New backdrop is in and working!

Loading & saving are almost completely working, but I now realise that Iím going to have to ditch it and start again! MFC serialisation file format wonít port to the Mac!!!


W meeting went pretty well generally. Demo worked. Seems more likely that release will be September not May, now, but still same design. Backdrop & Norns are still a big issue. Meet W US in first week of December - need really good demo & working brains by then!


Working on gene editor, then rest of brain model.

Anil wants me to meet DC again in December.

VB4 arrived, and Iíve started converting for it

The Gene Editor is taking an uncommonly long time! All week in fact! This is putting me behind for the demo in December.


Still working on gene editor, but nearly done!


Finished Gene Editor at long last, after several attempts in VB3 & C++. Finally did it using new VB4. No chance of getting to where Iíd hoped in time for the next demo.


Worked over weekend on getting concept space & den migration models in place. Had to be much more pragmatic than Iíd have liked, leading to a top-down solution in part.

Initial genome is now in, and things are starting to happen in the brain, but Iíve a fair bit of debugging to do before the creatures are fully back to life.


Didnít get to W meeting cos I was ill, but all seemed to go Ok. Plan is to launch at E3 but not publish until September.

Working on trying to get concept space migration right. Tried pragmatic top-down approaches but they are too processor-intensive.


Converted code to VC++ 4.0. Keith is having trouble with conversion, so we agreed to try the new version of Microsoftís Mac porting tools. May require that I use OLE Automation instead of DDE - Iíve reintroduced OLE support into the app, but will consider automation v. DDE in Jan, once brains are working (Ronís and mine!).

Toby visited. Promised to get him a working version ASAP.

Found a bottom-up pruning technique for concept space - not v. pretty or biological, but is acceptable. Now to find out whether it works!


New concept space is in. Had some really deep problems - unexpected consequences that only emerge once youíve thought very hard about it. However, fundamentally, the theory seems good and the code mostly works. Overall though, the brains still arenít working - learning doesnít happen and con neu duplication is still present. I think these are just bugs though.

Added code for instincts. This will require a rethink of embryology, since instincts cause a noticeable pause in processing at a critical moment - ideally, embryology should proceed step-wise (maybe low numbered switch-on times in genes mean pre-natal expression) WHILE the egg is waiting to hatch, rather than at the moment of birth.

Sent a new executable to server for Anil to take to CES - norns can now act on their own, but donít learn.


Another year. Still no product!

Keith has had success with using old ver of VC cross-compiler, so weíll definitely use that method rather than native code.

RON II LIVES!!! Finally fixed the major bugs in concept space, decision layer and instinct genes, and Ron & Eve look much healthier and a lot more alive. Language nextÖ


Failed to get a better version up to Anil in California for W meeting, despite a second attempt through the internet. Damn shame, because it was more or less working.

Language learning is now largely in place, but my original design wouldnít work - it wasnít possible to add an extra decision layer for feeding in verbs, because this messed up the reinforcement process. So, I had a major revamp, and have reorganised what was the Sensory Lobe to become the Perception Lobe, which now takes a copy of the data from ANY other lobe (as specified by each lobeís gene) to provide a combined input to concept space. Nouns and verbs now go to separate lobes, and the general sensory data have their own lobe. This will allow me to send nouns directly to the attn lobe, but verbs via the perception lobe to concept space, where they can influence actions by means of instincts. Iíve also removed the Goal output lobe and am hoping that goal-directedness can be controlled by detecting attention shifts to unknown objects (ďlook at the carrotĒ when I canít see a carrot means ďdonít shift attention, but stimulate goal-direction heuristics that might lead you to go to where you last saw a carrotĒ).



Hope to get language more or less going by the time I go to Cambridge, but it may not work until instincts are sorted out properly (reinforcement balance is right). Instincts take a long time to process, so I probably have to make them happen during sleep, rather than pre-natally.

Keith now has VC4 & new xcompiler, but they wonít work on his NT system. I recommended moving to Win95.


Experimenting with medium-resolution graphics (hi-res horizontally but low res vertically) - code works except for character set, but seems unlikely that the improvement will satisfy people, so I wonít put any more effort into it.


Still a lot of hoo-ha about the graphics - Michael is gunning for a complete redraw using an SG.

Meeting in Cambridge: Saw first Mac demo. Discussed graphics. Jasonís doing a great job of retouching the model.


Sent Manifesto document, outlining Cyberlife & underlying philosophy.


Worked hard over weekend and ironed out the worst of the brain bugs & theory flaws. There are a few problems left but hopefully soluble.

Desperate rush to get a world ready in time for focus group on 21st.

Object scripts - P hasnít made noticeable progress. MH suggested Ann should do them. P would be better if only heíd pull his finger out. We need a bunch of useful objects in time for the focus group.


Focus group version sent - new backdrop, new norns, multiple eggs, hatchery, OLE, new intro video, new objects from Ann, installerÖ Didnít have much time for brain stuff, but canít do everything!

Plan is now to redo backdrop in a larger size and drop pixel doubling. Objects are being re-scaled.


Well that was worth the effort, wasnít it?! The focus group was ill-thought through and resulted in just the kind of negative, plausible but fallacious claptrap that I would have predicted. Total value of the operation = nothing; total cost = complete demoralisation, renewed calls to cover old ground and turn it into an adventure and another pH point towards my ulcer.

Whole week taken out with meetings in Cambridge (off-site consideration of CL proposals) and at IBM. Time in-between spent working on kit designs and documentation, to ward off focus group panics. Total time spent programming the product = 0.

Mark Humphreys - helping with video. Friend of John Daugman. Working on weighted learning, but a bit mathematical/symbolic AI for my liking.

IBM Research Centre: ST. Evolutionary Art expert. Working on biomorph system for optimising spreadsheet data.


Programming again at last!

Crossing-over written & moderately tested.


Gene switching now works, as does crossing-over. Late-switching genes now overwrite or supplement previous genes according to context.

A birth!!!!!!!!!! Installed chemistry for ovulation and pregnancy, and temporary scripts for sex and egg-laying. Ron and Eve gave birth to the first norn bred in captivity!


That didnít last long! Back to kludging for short-term deadlines. Toby wants version containing new graphics scale & new norns to take to W US. Nose to the grindstone again.


Didnít get new version done in time for Toby, but will hopefully do it later this week. I are apparently wasting our time making us build demo versions in order to find out whether weíre likely to make the E3 deadline  -- whereís the logic in that???

Slight rumpus about norns. Got sent beautifully drawn fox-like norns (the ones I hate), rather than the pixie ones that I like. Feared that the wrong decision had been made. Michael sorted it out and I explained about how variation within a species is what we want, not variation between species. So, now weíre sticking to variants on the pixie theme. Phew! No sign of the object sprites I was promised last week, though.

In return, I promised Michael that Iíd implement change in appearance as creatures age. Pretty hard, but I think I can hack it.

New backdrop and pixie norns look extremely nice Ė exactly what we originally wanted but never got. Was worth the effort of re-writing the blitter and slowing the brains to ľ speed in order to compensate for the extra graphics load.

Howís this for a good title for a paper on human-designed A-Life: ďLife without DarwinĒ?


Ageing successfully implemented. All I need now are norns at different stages.

Big disaster with object graphics. S & L have apparently done almost no work at all in the last four weeks! We were expecting completed re-scaled objects before now but they havenít even been started! Treeemendous!!!


Office visit on Thursday. Filming for video. Met Alima & re-met Peter de Bourcier. GB went away with a hump - he thought norns werenít working at all, but they were produced by the Cheat menu, so were actually busy doing their embryological instinct formation! Hey ho. Not a good day, really.


Bacteria and disease going in.



Sorry, too busy to keep a diary - getting ready for UK and E3 launches!