[ Login | Register ]

The Shining Source

Show Posts

Pages: 1 2 3 [4] 5 6 ... 10

46   Re: Dark Resurrection 3D
I finally got around to one of the niggles that bothered me from the start.
The way all the screentext was displayed , was adjusted manually.
And boy, is that boring or what ?

So now I have rewritten the code in such a way that it will take care of it automatically.

1) you need a sentence.(of course  Grin)
2) It counts how many words (including the length of these words) there are in that sentence.
3) Set the maximum length of the string.
4) Start with an empty string.
5) Update the empty string by copying the next letter from the sentence.
6) If the program encounters an empty space, then it will add the length of the NEXT word to the current length of the string.
7) And if the sum of the previous two lengths exceeds the maximum-length then it will
simply start a new line.

Very simple really. Cheesy

I'm almost finished with a BloodBorne Model. The model itself looks nice . but the textures look a bit bland.  Undecided
And the head (or rather: Skull  Grin ) looks a bit naff. So I searched for Skull references on the Intarweb, and I found some great examples. So, when the skeleton is complete , I'll post some screenies , ok ?

One thing that IS finished, is a carriage. When in the game, I can make a few copies of the carriage and attach them to the train.
(I made a small movie of this train a few months back.)
I'll make a few screenies of the carriage.

It's safe to say that the carriage looks very good, even if I do say so myself  Smiley   

See Ya  Wink

47   Re: Dark Resurrection 3D
Hi Guys,  Embarrassed

I'm back. Sorry for the delay. It was impossible for me to work on Dark Resurrection
for a (very) long time for a number of reasons. A few are Real-Life related (very hard to dodge these ones.) The other ones are related to the game.

I have to admit that there is very little to do at the moment in the game.
There are no battles , no characters and there's very little interaction.
That's why I didn't upload stuff. Embarrassed

More time was/is needed.

As stated earlier: I simply had no spare time to work on it. Fortunately I'm now starting to get some [spare time] very soon.  Smiley
Lucky for me , I commented all of my code. So, catching up should pose no problem!

As for the characters - I'm gonna start with a number of enemies from SFIII ep. 1.
Once I get a feel on how to model these, I add some chars of my own.
Pseudo AI-code was already finished. So reworking it in real code should be a piece of cake (hmmm ....cake....  Cheesy )

Anyway ,  Dark Resurrection is back on track ... finally !
Stay tuned for more info very soon.
 
     

48   Re: Dark Resurrection - Beta Test
WALL-COLLISION-SYSTEM

Just finished the WallCollision-system. This system is meant for outside-areas and indoor-areas where there are no walls present. 
With this I can setup referencepoints up to a maximum of 99. When all points are set , a mesh is created, along with a surface.
After that, the vertices are added, along with the triangles. All this data is stored in a file.

When the file is opened, the program reads the first number (the "REFcount").
It then creates a custom-type and keeps generating and positioning the referencepoints until the counter reaches the "REFcount".

The X-Y-Z-coordinates for each referencepoint are read from the same file. Simply put, all these points are grouped into two rows.
The top row and the bottom row.

Now, only the 'coords' of the bottom row are stored because the top row shares the 'coords'
of the bottom row.

The only difference is that they have a different height.
The height is always a fixed variable and therefore it is set by the program.       

If the end of the file is not reached, the program simply adds another type and goes through the entire procedure again.

So, if you have 40 maps then you have no more than 40 files with "wall-data".
Each file contains data to create multiple walls for a map.
Each wall has up to 99 referencepoints (less than 99 is possible too)

SAVING AND LOADING
Saving data seems to work ok too   Huh?
I have a DAT-file and a TXT-file. Both files share the same data, except the size for the DAT-file is 18 Kb and the size of the TXT-file is 65 Kb.

The TXT-file is made for debugging purposes only.
This way the testers can figure out (hopefully Wink ) which number belongs to what variable.

part of TXT data-file:
Code:
 promotion--: 0
level------: 0
experience-: 0
hp---------: 0
mp---------: 0
hp-max-----: 0
mp-max-----: 0
attack-----: 0
defence----: 0
agility----: 0
movement---: 0
weapon-----: 0
ring-------: 0
spell1 type: 0
spell1 levl: 0
spell2 type: 0
spell2 levl: 0
spell3 type: 0
spell3 levl: 0
spell4 type: 0
spell4 levl: 0
kills------: 0
defeat-----: 0
weapon_eqp-: 0
ring_eqp---: 0
mental sts-: 0
terraintype: 0
class------: 0
EMPTY------: 0
item slot 1: 0
item slot 2: 0
item slot 3: 0
item slot 4: 0
gridnumber-: 0
mental-----: 0
mental_sts-: 0
tile-defens: 0
mithril----: 0
mithril_ctr: 0
EMPTY------: 0

Now I have to figure out how to dissect the data.
 
The two EMPTY ones are for future expansions.
One is reserved for the LUCK-variable.

Hopefully the other one can be used for the "BUDDY" system (featured in SFIII)
I'll work this one out when I start working on the code for the battles 


Well, one step closer to the final test.  Smiley
Stay tuned Grin

49   Re: Dark Resurrection (Screenshots) updated: february 19th 2007
Here's a screenie of a scorpion. As you can see, it's made in Gamespace, and it is past it's modelling stage.

The green cylinders represent the bones. The yellow cubes are the joints.
The skin [of the model] is already attached to the bones. Currently busy with adjusting DoF (Degrees of Freedom) of the joints. This is basically the "maneuverability" of the joints.

Things left to do:

1) Tweaking the vertices, so that you have "nice" mesh deformation. This tweaking is done by manipulating the joint , so that you can see which vertices are connected to what bone.

By attaching the skin to the skeleton, Gamespace automatically attaches a vertex to the nearest bone. While this takes a lot of work out of my hands, it is recommended to check everything manually.

2) Setting up the model for animation.

This is the tricky part. I already had a complete low-poly version of the scorpion.
This version was already animated. Now, to make this model work in Blitz3D, first I must load it with LoadAnimMesh. I experimented with this model, such as exporting it as a B3D-file , X-File , 3Ds-File and Md2-file, exporting bones/not exporting bones , exporting animation (naturally Smiley )

From all these tests , the B3D-extension works the best. There is ( I think ) one limitation. The model must be one single mesh or else it will not work. Also it is possible to add animation sequences to a model (something to do with that most meshes/models have one single animation sequence, or something like that.)

This means that I must create multiple files of the same model, and each file has a different animation sequence. This also means that I need to write down a lot of info ( type of model , how many animation-files the model has, filename in B3D , filename in Gamespace (for backup)

A handy feature of GameSpace is, that it is possible to save each skeleton I create. (including animation !!)

This way I can:
- Create a skeleton
- Tweak the joints
- Copy the skeleton a number of times for different animations
- Tweak each copy for a certain animation.
- Create a model and plunk in a skeleton
- Load model in Blitz3D and add necessary animation-sequences.

I'll post some more info when time permits. ....and don't worry, I'm still working on a test-version. It's just that I like to work on a couple of things at a time.  ... Keeps me sharp Cheesy

That's all for now Smiley


50   Re: Dark Resurrection - Beta Test
Nearly there,... I've written a separate file for all the global variables (over 30 variables just for all the furniture) Adding the variables for the Ship, Locomotive, AirFortress , ZepFish

(     (Huh?Huh?.... what's a ZepFish ? ) erm.... It's a model I'm working on. It's one part Zeppelin and one part Gondola , shaped like a fish. The rudder looks like (and moves like) the tailfin of a fish. You can see this model when you test the program. Smiley    )     

I've also made a last-minute change to my editor. At first I just created a custom type for every piece of furniture. This custom type is now split into two different ones. One is for furniture you can't search for items. And the other one is for furniture you CAN search for items and other stuff. (figures). I have done it this way because of the following reason.

Let's assume you have a scene where you have 25 pieces of furniture. And you can only search 5 of them. Now, with the split custom type , I only have to search 5 of the entire 25. 

I've also included a FrameTimer. This FrameTimer takes care of the number of frames (per second ( or FPS ) each time the program goes through the loop. I've programmed it in such a way, so you can preset the FPS at the options screen, where the settings are automatically saved,  OR you can use the F1-F4 buttons to temporarily set the FPS in a different setting (not saved)

I think this function is very handy because of all the different PC-configurations. (I'm also thinking about adding a "disable Frametimer" setting , so you can check how it fast/slow it runs without the FrameTimer)

A small question: could someone take a look at what the VICAR is saying , BEFORE when you're asked to save your progress ? (So I don't have to dig up my old Sega MegaDrive Cheesy )

I'll keep adding more stuff for the first beta-test. So stay tuned Smiley 
             

51   Re: Dark Resurrection (Screenshots) updated: february 13th 2007
Thanks everyone,

I'll do my best.   Grin

While I'm at it, here's another video. When I started Dark Resurrection (when it was still 2D ) I always wanted to include a battle on the train (just like the one in SFIII. )
One of the problems was how to move the train and keep using the same scenery throughout the battle. I started working on a system where tiles moved from left to right, and when a row of tiles left the right side of the screen, it was put on the left of the screen (naturally outside of the screen). Alas, when I switched from 2D (DIV) to 3D (Blitz)
the problem returned  Roll Eyes .

I soon started working on a train in 3D. The train itself has changed quite a bit.  The result  is what you see here.

I also solved the aforementioned problem. Although you see the wheels rotating, the train itself doesn't really move. It's the groundtexture and the tracks that are moving!!! Quite a neat trick, yes ?  Grin

I've already shown the vid to a number of people, and they all thought that the train was moving  Smiley. So, I'd like to think that I've succeeded !!!


52   Re: Dark Resurrection (Screenshots) updated: february 7th 2007
Heyy Elv,

I made a (very small) movie BEFORE I read your e-mail  Grin Grin



I noticed that the two sails in front (and the one in the rear ) move a bit funny  Embarrassed
back to the drawing board

53   Re: Dark Resurrection (Screenshots) updated: february 5th 2007
Hi,

Just a quickie this time:

 



   

The ship is a little over 3100 tris. The sails move in tandem with the movement of the ship.

54   Re: Dark Resurrection - Beta Test
Quote
No character name variable, or is that substituted into "char" or something?

When I want to create a character for a battle , I just do this:

Create_Fighter ( 0 , Bowie ,x,y,z )

or

Create_Fighter ( 31 , Arch_Demon , x,y,z)
Create_Fighter ( 65 , Arch_Demon , x,y,z)

Quote
What about model/picture variables, (or if you get complicated) voicetype variables for any soundeffects on speech etc

Since all characters are unique, I only need the character-constant to display the picture

(part of code)
Code:
;------------------------------------------------------------------------------------------------------
; character-names
;------------------------------------------------------------------------------------------------------

Const bowie  =  1 , sarah   =  2 , chester=  3 , jaha  = 4  , kazin   = 5
Const slade  =  6 , kiwi    =  7 , peter  =  8 , may   = 9  , gerhalt = 10
Const luke   = 11 , rohde   = 12 , rick   = 13 , elric = 14 , eric    = 15
Const karna  = 16 , randolf = 17 , tyrin  = 18 , janet = 19 , higins  = 20
Const taya   = 21 , skreech = 22 , frayja = 23 , jaro  = 24 , gyan    = 25
Const sheela = 26 , zynk    = 27 , claude = 28 , chaz  = 29 , lemon   = 30


Quote
I'm guessing you're using char data 12 and 13 to identify what weapon the character is able to use rather than a class reference?
Otherwise I don't see the need for them.

part of code

Code:
;------------------------------------------------------------------------------------------------------
; weapon-names
;------------------------------------------------------------------------------------------------------

Const achilles_sword =  1 , assault_shell  =  2 , atlas_axe      =  3 , battle_axe     =  4
Const battle_sword   =  5 , brass_knuckles =  6 , broad_sword    =  7 , bronze_rod     =  8
Const buster_shot    =  9 , buster_sword   = 10 , chrome_lance   = 11 , counter_sword  = 12
Const critical_sword = 13 , dagger         = 14 , dark_sword     = 15 , demon_rod      = 16
Const evil_axe       = 17 , evil_knuckles  = 18 , evil_lance     = 19 , evil_shot      = 20
Const flail          = 21 , freeze_staff   = 22 , giant_knuckles = 23 , gisarme        = 24
Const goddess_staff  = 25 , grand_cannon   = 26 , great_axe      = 27 , great_rod      = 28
Const great_shot     = 29 , great_sword    = 30 , ground_axe     = 31 , guardian_staff = 32
Const halberd        = 33 , hand_axe       = 34 , heat_axe       = 35 , heavy_lance    = 36
Const holy_lance     = 37 , holy_staff     = 38 , hyper_cannon   = 39 , indra_staff    = 40
Const indra_stick    = 41 , iron_arrow     = 42 , iron_ball      = 43 , iron_knuckles  = 44
Const iron_rod       = 45 , javelin        = 46 , katana         = 47 , knife          = 48
Const leather_glove  = 49 , levanter       = 50 , large_axe      = 51 , long_sword     = 52
Const mage_staff     = 53 , middle_sword   = 54 , mist_javelin   = 55 , misty_knuckles = 56
Const mystery_staff  = 57 , nazca_cannon   = 58 , ninja_katana   = 59 , power_axe      = 60
Const power_glove    = 61 , power_spear    = 62 , power_stick    = 63 , robin_arrow    = 64
Const rune_axe       = 65 , short_axe      = 66 , short_knife    = 67 , short_rod      = 68
Const short_spear    = 69 , short_sword    = 70 , steel_arrow    = 71 , steel_lance    = 72
Const steel_sword    = 73 , supply_staff   = 74 , taros_sword    = 75 , thieves_dagger = 76
Const valkyrie       = 77 , wish_staff     = 78 , wooden_arrow   = 79 , wooden_rod     = 80
Const wooden_sword   = 81 , wooden_stick   = 82 , bronze_lance   = 83 , force_sword    = 84
Const middle_axe     = 85


Errr, yes no. 12 is to check what kind of weapon you have. If it bigger than 0 (zero) then you have that weapon, or if it IS zero then you do not have a weapon. Also checked against nr 24:

Warray ( Bowie , 12 ) = achilles_sword , Warray ( Bowie , 24 ) = 0

actually means:

Bowie has the weapon achilles sword , and he hasn't equipped it.


or

Warray ( Lemon  , 12 ) = broad_sword , Warray ( Lemon  , 24 ) = Warray ( Lemon  , 12 )

means:

Lemon has the broad sword AND he has equipped it.



Quote
Also I have no idea what the mithril things are for.

Let's assume Bowie can handle the Levanter.

Bowie has the Levanter -> Warray ( Bowie  , 12 ) = Levanter
Bowie has equipped it   ->  Warray ( Bowie  , 24 ) = Warray ( Bowie  , 12 )
Levanter is made of Mithril -> Warray ( Bowie  , 38 ) = Warray ( Bowie  , 12 )
Bowie can use the Levanter 12 times before it breaks -> Warray ( Bowie  , 39 ) = 12

So, if Bowie uses the levanter in a battle, it's:

IF (weapon made of mithril = true )
  IF  ( Warray ( Bowie , 39 ) > 0 )      ; has some uses left
     Warray ( Bowie , 39 ) = Warray ( Bowie , 39 ) - 1
 Else
     Warray ( Bowie , 39 ) = 0          ; weapon is broken
    Warray ( Bowie , 24 ) = 0           ; no longer equipped
   Warray ( Bowie ,  12 ) = 0          ; weapon gone
  endif
endif

this also means that the item-slot the weapon was in , is now freed up.

Quote
There's no "add gold" var on monsters.

Actually , there is .. it's this one -> Warray ( MonsterNumber ,  2 ) =   Monster_data ( Monster ,  2 )   ; value   Wink

Quote
There are several "mental states" cursed, confused, poisoned, silenced.  Have you created a mental state for every combination rather than having each one as an individual attribute - or simply made it so you can only have one at a time?

I have thought about this: In Blitz you can load a texture with "flags"

excerpt from Blitz-manual:

LOADTEXTURE

Load a texture from an image file and returns the texture's handle.

The optional flags parameter allows you to apply certain effects to the texture. Flags can be added to combine two or more effects, e.g. 3 (1+2) = texture with colour and alpha maps.

See CreateTexture for more detailed descriptions of the texture flags.

Something to consider when applying texture flags to loaded textures is that the texture may have already had certain flags applied to it via the TextureFilter command. The default for the TextureFilter command is 9 (1+8), which is a coloured, mipmapped texture. This cannot be overridden via the flags parameter of the LoadTexture command - if you wish for the filters to be removed you will need to use the ClearTextureFilters command, which must be done after setting the graphics mode (setting the graphics mode restores the default texture filters).

flags (optional) - texture flag:
1: Color (default)
2: Alpha
4: Masked
8: Mipmapped
16: Clamp U
32: Clamp V
64: Spherical environment map
128: Cubic environment map
256: Store texture in vram
512: Force the use of high color textures



So......
cursed = 1
confused = 2
poisoned = 4
silenced = 8
etc etc

This means you can have multiple mental states (cursed AND confused =  1 + 2).
I may be stretching this a bit too far, and maybe one mental status is enough, I'm not sure.
(one mental status, meaning, if you are silenced and you are attacked by a creature with poison. then Poisoned (as status) will replace silenced.   

I've updated this post on February 1st.
Last night I discovered that I already worked on Model-Placement (both in my Editor-program AND by the computer). This was aeons ago.  Shocked
Funny, that most of the code still stands Smiley
I think I will have no trouble adjusting the code to "today's standards".
 

55   Re: Dark Resurrection - Beta Test
WARNING: VERY LONG POST AHEAD

@ Elvenfyre, well spotted  Cool , I will add a path-search To the "help the buddy"-section.

@ QPRman, If you have a computer that is a bit different than the others have, Then you're welcome To test. Smiley

And... erm.. Ty... Did you manage To "set aside" a section where I can upload my stuff ?

In general: I've programmed 4 more functions.

Function 1: copy the character-Data To the work-array ( the work-array is where all the Data For all characters And monsters is stored (monster-Data only during battles)

Code:
Function Copy_CharData_To_Warray( Char )

Warray ( Char ,  1 ) = Char_data ( Char ,  1 )   ; promotion
Warray ( Char ,  2 ) = Char_data ( Char ,  2 )   ; level
Warray ( Char ,  3 ) = Char_data ( Char ,  3 )   ; experience
Warray ( Char ,  4 ) = Char_data ( Char ,  4 )   ; hp
Warray ( Char ,  5 ) = Char_data ( Char ,  5 )   ; mp
Warray ( Char ,  6 ) = Char_data ( Char ,  6 )   ; hp-max
Warray ( Char ,  7 ) = Char_data ( Char ,  7 )   ; mp-max
Warray ( Char ,  8 ) = Char_data ( Char ,  8 )   ; attack
Warray ( Char ,  9 ) = Char_data ( Char ,  9 )   ; defend
Warray ( Char , 10 ) = Char_data ( Char , 10 )   ; agility
Warray ( Char , 11 ) = Char_data ( Char , 11 )   ; movement
Warray ( Char , 12 ) = Char_data ( Char , 12 )   ; weapon
Warray ( Char , 13 ) = Char_data ( Char , 13 )   ; ring
Warray ( Char , 14 ) = Char_data ( Char , 14 )   ; spell 1 type
Warray ( Char , 15 ) = Char_data ( Char , 15 )   ; spell 1 level
Warray ( Char , 16 ) = Char_data ( Char , 16 )   ; spell 2 type
Warray ( Char , 17 ) = Char_data ( Char , 17 )   ; spell 2 level
Warray ( Char , 18 ) = Char_data ( Char , 18 )   ; spell 3 type
Warray ( Char , 19 ) = Char_data ( Char , 19 )   ; spell 3 level
Warray ( Char , 20 ) = Char_data ( Char , 20 )   ; spell 4 type
Warray ( Char , 21 ) = Char_data ( Char , 21 )   ; spell 4 level
Warray ( Char , 22 ) = Char_data ( Char , 22 )   ; kills
Warray ( Char , 23 ) = Char_data ( Char , 23 )   ; defeat
Warray ( Char , 24 ) = Char_data ( Char , 24 )   ; weapon equip -> see 12 - takes up item slot
Warray ( Char , 25 ) = Char_data ( Char , 25 )   ; ring equip   -> see 13 - takes up item slot
Warray ( Char , 26 ) = Char_data ( Char , 26 )   ; mental status
Warray ( Char , 27 ) = Char_data ( Char , 27 )   ; terraintype
Warray ( Char , 28 ) = Char_data ( Char , 28 )   ; class
Warray ( Char , 29 ) = -1 ; EMPTY
  Warray ( Char , 30 ) = Warray ( Char , 12 ) ; item slot 1
  Warray ( Char , 31 ) = Warray ( Char , 13 ) ; item slot 2
  Warray ( Char , 32 ) = medical_herb              ; item slot 3
  Warray ( Char , 33 ) =  0 ; item slot 4
Warray ( Char , 34 ) =  0 ; gridnumber
Warray ( Char , 35 ) = -1 ; mental
Warray ( Char , 36 ) = -1 ; mentalno
  Warray ( Char , 37 ) =  0 ; tile defense
Warray ( Char , 38 ) =  0 ; mithril 
Warray ( Char , 39 ) =  0 ; mithrilctr
Warray ( Char , 40 ) = -1 ; EMTPY 


End Function

The CHAR - parameter is the name of the character, And since there are 30 characters , you have 30 names, which are all unique.

Function 2 is a bit like the First one, except this one's For the bad guys.

Code:
Function Copy_MonsterData_To_Warray ( MonsterNumber , Monster )

Warray ( MonsterNumber ,  1 ) = Monster_data ( Monster ,  1 ) ; type
Warray ( MonsterNumber ,  2 ) = Monster_data ( Monster ,  2 ) ; value
Warray ( MonsterNumber ,  3 ) = Monster_data ( Monster , 13 ) ; add exp 13
Warray ( MonsterNumber ,  4 ) = Monster_data ( Monster ,  3 )   ; hp
Warray ( MonsterNumber ,  5 ) = Monster_data ( Monster ,  4 )   ; mp
Warray ( MonsterNumber ,  6 ) = Monster_data ( Monster ,  5 )   ; hp-max
Warray ( MonsterNumber ,  7 ) = Monster_data ( Monster ,  6 )   ; mp-max
Warray ( MonsterNumber ,  8 ) = Monster_data ( Monster ,  7 )   ; attack
Warray ( MonsterNumber ,  9 ) = Monster_data ( Monster ,  8 )   ; defend
Warray ( MonsterNumber , 10 ) = Monster_data ( Monster ,  9 )   ; agility
Warray ( MonsterNumber , 11 ) = Monster_data ( Monster , 10 )   ; movement
Warray ( MonsterNumber , 12 ) = Monster_data ( Monster , 11 )   ; weapon
;13 add exp -> moved to section 3
Warray ( MonsterNumber , 14 ) = Monster_data ( Monster , 13 )   ; spell 1 type
Warray ( MonsterNumber , 15 ) = Monster_data ( Monster , 14 )   ; spell 1 level
Warray ( MonsterNumber , 16 ) = Monster_data ( Monster , 15 )   ; spell 2 type
Warray ( MonsterNumber , 17 ) = Monster_data ( Monster , 16 )   ; spell 2 level
Warray ( MonsterNumber , 18 ) = Monster_data ( Monster , 17 )   ; spell 3 type
Warray ( MonsterNumber , 19 ) = Monster_data ( Monster , 18 )   ; spell 3 level
Warray ( MonsterNumber , 20 ) = Monster_data ( Monster , 19 )   ; spell 4 type
Warray ( MonsterNumber , 21 ) = Monster_data ( Monster , 20 )   ; spell 4 level
Warray ( MonsterNumber , 22 ) = Monster_data ( Monster , 25 ) ; kills
Warray ( MonsterNumber , 23 ) = Monster_data ( Monster , 26 ) ; defeat
Warray ( MonsterNumber , 24 ) = -1 ;24 n/a ; weapon equip
Warray ( MonsterNumber , 25 ) = -1 ;25 n/a ; ring equip
Warray ( MonsterNumber , 26 ) =  0 ;26 ; mental status
Warray ( MonsterNumber , 27 ) = Monster_data ( Monster , 27 ) ; terraintype
Warray ( MonsterNumber , 28 ) = -1 ; class
  Warray ( MonsterNumber , 29 ) = -1 ; EMPTY EMPTY EMPTY
Warray ( MonsterNumber , 30 ) = Monster_data ( Monster , 21 )   ; item slot 1
Warray ( MonsterNumber , 31 ) = Monster_data ( Monster , 22 )   ; item slot 2
Warray ( MonsterNumber , 32 ) = Monster_data ( Monster , 23 )   ; item slot 3
Warray ( MonsterNumber , 33 ) = Monster_data ( Monster , 24 )   ; item slot 4
Warray ( MonsterNumber , 34 ) =  0 ; gridnumber
  Warray ( MonsterNumber , 35 ) = -1 ; mental
  Warray ( MonsterNumber , 36 ) = -1 ; mentalno
  Warray ( MonsterNumber , 37 ) = 0 ; tile defense
  Warray ( MonsterNumber , 38 ) = -1 ; mithril 
  Warray ( MonsterNumber , 39 ) = -1 ; mithrilctr
  Warray ( MonsterNumber , 40 ) = -1 ; ????? 

End Function

You probably noticed I juggled a bit with the numbers here Cheesy
That's because monsters do Not promote , do Not have levels (For leveling up reasons), do Not own mithril-weapons , don't need To check If their weapon is equipped. etc etc.
And characters do Not use the "add experience" variable. 

Also, there are two parameters: Monster And Monsternumber . The Monster-variable is the Type of the monster.

In Shining Force 2, there are 85 different monsters. In most battles there are multiple enemies of the same race ( 5 smokes , 6 rats etc etc). So, this makes them Not unique. This is where the Monsternumber comes in.

Each monster in a battle is numbered from 31 upwards (why 31 ? Because there are 30 characters, that's why  Angry )
This way Each monster keeps his/her/its "uniqueness" .

Function 3: The Default-chest-content-checklist (try saying this 10 times with a set of False teeth  Grin )

Somewhere in the bowels of the game, there is a spot reserved where the Progress-Genie keeps track which chests ,  you , the player , have opened And which Not.

Well , there has To be a Default-list Right ? Riiiiiight . Roll Eyes

So, when you start a New game, the game reads the Default-list , And puts the contents in the Progress-Field: Chest_Contents[nChests] (what does "nChests" mean ? answer: The total number of Chests you can open in the game.)

Code:
Function Copy_Default_Chest_Contents_To_Progress()

P.Progress = First Progress

If ( P <> Null )

For T = 0 To 87
P\Chest_Contents[ T ] = Chest_Contents( T )
Next

Else
RuntimeError "could not copy default chest contents to PROGRESS TYPE (CoDeChCoToPr-function)"
EndIf

End Function


Code:
Function Read_Chest_Contents()

Restore ChestData
Read Number_of_Contents

For T = 0 To Number_of_Contents

Read Content

Chest_Contents( T ) = Content
Next

End Function

Function 4: this one works in tandem with Function 3 And checks If the contents of Function 3 are ok. It's just a fail-safe.


Well, now this one's nearly finished. When I link the Work-Array with the SAVING and LOADING (and I really do hope that this works from the word GO  Undecided ) I am (or rather.... WE ARE.... ) one step closer to testing.

Left to do: write a function for model-placement in the maps I've made. One for the editor , and one for the final version. This function MUST include X , Y & Z position , X , Y & Z rotation , model-number (1=tree , 2=fence , 3=chest , 4=torch , 5=lamp , etc. etc. )
entityscale for X , Y & Z ( and maybe a few other things ? )

I'm very close to a brain-fry (opposite of brain-freeze  Cheesy )

   

56   Re: Dark Resurrection 3D
The movement for the oars is controlled by the computer via an algorithm.

It keeps adding one degree to the current angle-variable until it is over 360 degrees, after that keeps resetting itself.

The rotation point for the oars is in the area where the oar touches the main section of the airship. Actual rotation is done by adding the SIN (sinus) of the angle to the X-axis of the oar , and the COS (cosinus) of the angle to the Z-Axis to that same oar. Naturally, this applies to all the oars. Smiley

To achieve the caterpillar-effect, I linked the movement for each set of oars.

Section 1 : Oars on the front-left & on the front-right
Section 2 : Oars on the middle-left & on the middle-right
Section 3 : Oars on the rear-left & on the rear-right

Now add an extra 60 degrees to the angle to section 1 and an extra 30 degrees to the angle  to section 2.
That's basically all there is to it Smiley 

The movement of the airship was done by me.   Because I had very little time , I just copied the code from my Airwolf-model, and tweaked it a bit.
However , once the ship is in the game , all movement will done by the computer.  Grin       

Initially I started with a simple waypoint-system but it evolved in something much bigger. Each waypoint contains info for triggers for stopping/starting events, id-numbers for other waypoints( for getting from A to B ) and switch-counters.

The switch-counter is basically the time it takes for waypoint 1 to "switch" direction from waypoint 2 to waypoint 3, and when the time is up, it simply switches back to WP 2.

When I steer the Airship left or right (it depends how long you press the left/right cursor key)
then the ship will bank automatically left/right.

I programmed a function that takes care of banking, by models that are controlled by the computer. This is done by creating a temporary reference-point , then the model will keep on rotating until it (the model) is pointing in the direction of the reference-point. If you combine this with forward motion and a take-off sequence then you will get some awesome movement. Cheesy

Just out of curiosity:.... did you notice the shine coming off the oars and the glass of the cockpit ?
This was done by creating a second texture-layer and treating it as a pre-computed cubic-environment map. Basically this is a mini-version of a skybox.       


57   Re: Dark Resurrection 3D
Here is my latest movie:




58   Re: Dark Resurrection - Beta Test
Yes..... if buddy A wants to help buddy B , first thing to do is to check if he has a healing item  (perform a check from slot 4 , then 3 , then 2 and finally slot 1 )

This could be a sub-function:
It should return a 1 if "having a healing-item" is true , else it should return a zero .

 I can also apply this function for checking healing-spells, by adding a extra parameter.
This parameter will instruct the function whether to search the 4 item-slots or the 4 spell-slots.

(That 2 search jobs in one function.... neat  Grin )   

Thanx Elv.
 

59   Re: Dark Resurrection 3D
@ Viper : thanks for signing up (the more the merrier  Smiley )

---------------------------------------------------------------------------------------------------

@ Job , Elvenfyre , Solmyr , Newts & Ty  (and our latest addition:  Viper )

I started a new topic:  Dark Resurrection - Beta Test
( topic number 4  Roll Eyes )

The first post has some "homework" for you to take a look at.
 


60   Dark Resurrection - Beta Test
For those of you who volunteered to test for Dark Resurrection.

Below you will find a flowchart with decisions to be made by the computer.
I made it some time ago and added/removed sections over a long period of time.

It is still not perfect though Smiley .
I may (or may not) add a section that takes care of casting healing arts by a character,
that is in "idle"-mode, by checking his/her surroundings to see if someone is in need of help.

It would be great if you could take a look at this chart and see if it makes sense in its
current state and if other useful things should be added.


In short:
1) In the meantime, I'll put together the test-environment.
2) When that's done I'll upload the stuff.
3) You guys, test the program in its current state.
4) I'll start working on the AI
5) I'll look into pathfinding with the D-extra library (by some Russian Guy)

Thanks   


 


Pages: 1 2 3 [4] 5 6 ... 10

Powered by SMF 1.1.21 | SMF © 2013, Simple Machines