Today I reached a personal milestone – and I am using the opportunity to start writing some more about my Vectorblade thoughts.
The milestone I defined for myself which I reached (and which I wanted to get to the day befor yesterday – well not everything works out as well as one wishes) – was something I call “single attack patterns for enemies”.
More on that later.
First I would like to summarize what my current plans/thoughts are:
– “galaga” type of game
– levels with enemies entering the screen in attack patterns
– levels have “waiting” positions of enemies
– from these “waiting” positions the enemies can attack the player
– enemies that are destroyed can “drop” things
– Bonus like
speed, more shots, better shots, money, shield, “sucker”
– Mali like
lose shot, lose speed,inverse steering etc
– after a level is done player “warps” to new zone
– each x zones a “shop” appears, where one can by things with money
– each y zones a “boss” appears and one must fight a boss
– 100 levels planned, about 5 boss fights
– there might be extra levels like “warp disfunction” -> asteroid belt etc
– game will be “saveable” and a involve a “meta” game (perhaps -maybe…)
– player will be able to fire single, double, tripple, quadro shots (possible with different “strength”), I am thinking about a chargeble weapon but nothing definite yet
– I am thinking about a “sucker” bonus, where a player can capture up to two enemies, that than fight along “WITH” the player – but that depends how much cycles I have to spare
– up to 20 enemies on screen*
– up to 10 enemy bullets on screen*
– up to 10 bonus on screen*
– player and message board*
– up to 10 player shots (max *4 since quadro shots)*
– sound – but no in game music*
– starfield background
– game should play in 50Hz
Player and enemy positions are kept in 16bit coordinates – that allows for smoother movement and more control over speed.
Positionings are done with scale $80, (nearly) all drawings are done with “smart lists” (see Vide blog) – for that I enhances the last Vide version to be able to create smart lists (and smart animations).
All game objects are kept in “linked” lists, which call the next object via stack puls. In the main “draw” loop no subroutines are used, since I use the stack (S) for keeping track of my linked list(s) and the user stack (U) to stack-call the smart lists.
I have 4 seperate linked lists for:
– enemies (and explosions) [21*20]
– enemy shots [6*10]
– player shots [9*10]
– bonus [10*10]
670 bytes of RAM to keep track of the objects – I am already in trouble RAM wise!
A level (as of now) is defined like:
Intro pattern is a (zero terminated) list of “intro patterns” – how the enemies fly into the screen.
Following code definition:
The entry pattern for a level is defined as 0 terminated list of “single” patterns. Each single pattern defines for how many enemies it should be used for, some delay values and a list of coordinates gotten from good old excel.
Enemies can enter the screen using “patterns”. Such a pattern can be defined via Excel. The current only defined “intro” attack pattern (which you see in the above video) is defined as:
It uses three coordinates (vectrex scale $80) as cornerpoints.
– start at 64, 127 (3/4 up and complete right of screen)
– than the enemies move to -48, 0 (with an angle of 228°), and 16bit add (y) -596 and -676 (x) adds
– than to the final destination 32,-128 (left side of screen)
– where they disappear and randomly reapear at the top
Is simply a list of coordinates where each (numbered) enemy has its waiting position. (up to 20 positions)
Is simply a list of enemy definition pointers. (up to 20 pointers – twenty different enemies per level possible)
I have for now only 2 enemies defined. (The list consists at the moment only of a couple of pointers to “sprite” definitions and animation lists).
In game (waiting) enemies can start “attack” patterns. The attack patterns will be kept in a 0 terminated list and will probably be randomly determined. As of now only one “complete” attack pattern is defined:
The attack pattern is a 0 terminated list of lines defines as:
The current implemented attack pattern as full “featured” list looks like:
Each “line” of an attack pattern can have one of three types:
a) absolut pattern
the enemy should move to an absolut screen position (line 2 above moves the enemy to coordinates 0,0)
b) target pattern
the enemy should do an “kamikaze” attack to the current position of the player
c) relative pattern
follow the “relative” position path given by a sub pattern.
Each subpattern entry defines a relative coordinate pair to move to (again defined in excel).
The above “singleLoopingRelativePattern” performs a looping starting at the current position and than does a straight done “speed” attack.
The excel sheet for these definitions also looks a little bit “involved”:
Long post – short meaning…
I am now able to define all kinds of enemies and attack patterns.
The program is able to “excute” those patterns and make use of them now more or less “automatically”.
– scrolling background
– more bonus
– attack patterns with more than one enemy
– first boss fight
After that the main “hurdles” will have been done – end the rest will be lots of boring rotuine work…
Sorry if this was “boring” – the documentation is partly done for myself.
Next time there will be less “talk” and more code.