Jump to content

Recommended Posts

On the Mission Accomplished/Mission failed thing: they're not an image; it's an actual font in the game. Might be easiest to just screenshot it.

 

As for the death sounds: Well, basically, all the others are randomly used. Just the burning one is specific. I CAN give you all the random sequences used for infantry reporting though. Keep in mind though, these are v00/v01/v02/v03 sounds. As you can see in the sounds.ini comments, vehicles use the .v00/.v02 variety, while infantry uses .v01/.v03. On top of that, the game assigns one specific voice set to each unit, meaning, if you click on a soldier and it responded with a v03 voice, you will NEVER hear that specific soldier use a v01 voice. The voice set is actually saved in the ingame unit.

 

 

Well, took some time to put this together. This is mostly taken from the actual game code.

For the deaths sound, it literally randomly selects a number from 83 to 86, and takes that sound ID as death scream. After seeing this code, I'm suddenly very tempted to change the upper value to 91, to make it play the unused death screams :D

 

Anyway, here's the list. Note that the "Inf" series here are the defaults. Anything not specified in the others uses the "Inf" defaults. Multiple sounds on one line indicate one of them is randomly chosen. If the same sound appears multiple times on one line, it means it'll have a higher chance of getting played.

 

Inf_Select=Ackno,Report1,Report1,Yessir1,Yessir1,Ready,Await1

Inf_Move=Movout1,Movout1,Movout1,Roger,Ritaway,Ugotit,Affirm1,Affirm1

Inf_Attack=Ritaway,Affirm1,Affirm1,Ugotit,Noprob,Yessir1,Yessir1,Yessir1

Inf_Die=Nuyell1,Nuyell3,Nuyell4,Nuyell5

Inf_Die_Burn=Yell1

 

MOEBIUS_Select=Myes1,Mcomnd1,Mhello1,Mhmmm1

MOEBIUS_Move=Mcourse1,Myesyes1

MOEBIUS_Random=Mplan3,Mtiber1

 

RMBO_Report=Rokroll1

RMBO_Select=Yeah1,Yes1,Yo1

RMBO_Move=Gotit1,Onit1,Noprblm1

RMBO_Attack=Noprblm1,Gotit1,Noprblm1,Onit1

RMBO_Bomb=Bombit1

RMBO_Kill=Tuffguy1,Keepem1,Laugh1,Lefty1

RMBO_Random=Cmon1

RMBO_Die=Ramyell1

RMBO_Die_Burn=Ramyell1

 

CivMale_Select=Guyyeah1

CivMale_Move=Guyokay1

CivMale_Attack=Guyokay1

 

CivFemale_Select=Girlyeah

CivFemale_Move=Girlokay

CivFemale_Attack=Girlokay

 

Note that the "Random" voices are handled by the same code that does the infantry's Idle animations ;)

Share this post


Link to post

Cool thanks for the sound mappings...

 

Any way I can extract the font files and convert them to a windows TTF file or something? Googled around, but didn't find anyone who has tried something like it....

 

Screen capture might not work too well :( .. Besides when I add scores and stuff, I need to start using the original fonts....

Share this post


Link to post

Fonts are a bit of a mystery in C&C... there's no publicly released editors for it, and barely any documentation on the format or how the game uses it.

 

All I know about it is that the actual font is a 16-colour format, into which the game somehow feeds the colours it wants it to use. No idea how.

 

Your best bet is probably looking into the XCC Mixer code, since XCC does have a viewer for the format (but its font display colours are horrible and, AFAIK, not customizable).

 

roundhouse kick, face hit 1,2,3, gut hit 1,2,3, hop punch????

 

WTF.. They have enough moves to make mortal kombat....

 

Why would any idiot punch when his opponent has a gun?

Well, no idea why, but yes, C&C has full hand-to-hand sequences for all infantry. And I think you just gave the reason why it was cut from the game :P

Share this post


Link to post

btw, don't know if you saw, but I also added structure animations into the folder :)

Share this post


Link to post

BTW,

 

The die-1 to die-5 in the infantry animation don't seem to coincide with the warhead infantry death indexes

 

As far as I can tell , the infantry animations in the file are

"die-normal":1

"die-explode":2

"die-fling-1":3

"die-fling-2":4

"die-fire":5

 

As per the INI file,

; Infantry death animations: 0=normal, 1=frag, 2=explode, 3=fire, 6=eaten

; (used for carnivorous dinosaur healing). The values 4 and 5 are used by

 

.... So not sure how they map :)

Share this post


Link to post

The warhead deaths are actually death logics, not just animations. For example, the difference between 0 and 6 is the fact it heals the unit that did the attack, if that unit is a dinosaur.

 

[edit]

Woah! I figured out what Warhead 6 and 7 are! Looking at the code, they use animation sequence 17 and 20 respectively for their death animation. That's "FaceHit3" and "GutHit3", meaning the warheads are probably "Kick" and "Punch"! :o

Warheads ini (and list below) are updated :)

[/edit]

 

Warhead death to infantry sequence would give:

0=Die1

1=Die2

2=Die4

3=Die5

4=FaceHit3

5=GutHit3

6=Die1

 

Looking at the death animation code, Die3 doesn't seem to be used at all.

 

[edit]

Did some ini updates:

anims.ini: Changed header name to "Animations", and corrected some errors with duplicate names.

infantry.ini: Changed the "ShotsBeforeReload" key to "Ammo", as it is in the other inis.

weapons.ini: changed the MuzzleFlash IDs to animation string names instead.

Share this post


Link to post

Finally... Got splash damage working, correct unit death sounds and animations and vehicle destruction sounds and animations....

And the mission accomplished sign and sound....

A good days work :)

 

 

This is how I store em...

 

 

var weapons = {

list:{

'chaingun':{

name:'chaingun', // Guard Tower/Apache machinegun

damage:25,

rateOfFire:50,

range:4,

sound:'gun8',

muzzleFlash:'minigun',

projectile:'invisibleheavy'

},

 

 

var bullets = {

type:'bullets',

list:{

'invisible':{

name:'invisible',

explosion:'piff',

warhead:'smallarms',

rotationSpeed:0,

bulletSpeed:undefined,

innacurate:false,

smokeTrail:false,

image:undefined

},

 

 

 

var warheads = {

'smallarms':{

name:'smallarms',

spread:2,

wood:false,

walls:false,

infantryDeath:'die-normal',

damageVersusArmor:[100,50,56.25,25,25,0]

Share this post


Link to post

Neat :)

 

I changed the warhead versus values to parts of 256 now for my ini (easier to handle in the game), but I left the old file with the percentages in the old/ folder. If you want to use ints for storing them, though, maybe you should use the /256 values too, to prevent having floats in there. Your choice of course :)

 

Note that bulletSpeed=-1 isn't actually "undefined"; -1 is commonly used as "infinite" in the game data, which, in this case, means instant hit. The value is also used in the same way for the "Ammo" (shots before reload delay) values of units and infantry.

Share this post


Link to post

I use undefined the same way - A non numeric value to indicate an immediate hit.

 

In my code, speed = -1 would make the bullet go in the opposite direction very slowly :)

 

I'll switch over to the /256 values next time I add some weapons..

 

For now have to get the barracks working to make troops... Also want to add the 2 barracks = 1/2 production time and the select primary building ability....

Share this post


Link to post

This could also be handy: a graph I once made that shows the build speed in relation to the power percentage, in case of low power.

 

lowpower.png

 

I don't know the actual function it uses, though. This is all from ingame testing. The value on 0% power was 22.5 times the original build time.

Share this post


Link to post

Just added aircraft.ini. Guess I got all the basic types now. Now it's just a matter of hunting down more elusive data like the firing offsets of weapons, and the turret placement on tanks.

Share this post


Link to post

This could also be handy: a graph I once made that shows the build speed in relation to the power percentage, in case of low power.

 

lowpower.png

 

I don't know the actual function it uses, though. This is all from ingame testing. The value on 0% power was 22.5 times the original build time.

 

Which values are you sure about?

 

100% = 1

0% = 22.5

Share this post


Link to post

This is what I generated the table from :P

http://nyerguds.arsaneus-design.com/cncstuff/lowpower.xls

 

First table are my actual values, timed ingame, and then made relative to the original build time with some rounding to make up for manual measurement errors. The associated power values are the same as below, namely 100, 87.5, 75, 62.5, 50, 37.5, 25, 12.5 and 0. IIRC I changed the power production and usage values to time this, so the power percentages I tested this on should be perfectly correct.

 

Below that are the same values, with some corrections for the fact the game seems to round the factors up to multiples of 0.5. I chose better in-between values that made the graph smoother, since this was my attempt to find a function from it.

 

I think the lowest table and graph were a failed experiment to try to put it into a function. Best to ignore that.

Share this post


Link to post

I've released a new version of my game... Its still a WIP. I sent you a message via FB... let me know if you are able to access the URL...

 

Would you have any info on the AI algorithm? I know C&C had a pretty basic algo, attack units in range, some scripted stuff, and rebuilding destroyed buildings... Would you have details?

Share this post


Link to post

I'm sorry, I never looked into that. Maybe CCHyper has more information on it.

 

I don't see any messages on Facebook... but I don't really use fb, to be honest. If you want to tell me something, just send it to my gmail. (simply my nickname at gmail.)

Share this post


Link to post

Emailed you the link :) Still working on the game, I want to add a few more elements to the two levels (1 GDI & 1 NOD) and clean it up before I start adding more levels....

Share this post


Link to post

Looking good so far :)

 

I emailed you my thoughts on the new version.

 

Oh, there is one more thing... I'm not sure if your units actually still use the normal cells and sub-cells for their movement, but normally 5 soldiers of the same side can never get in each other's way. If 4 infantry units are on one cell, a fifth of that side can always still walk through them. In your GDI mission 1, I had 3 minigunners totally blocking the opening needed to get to the last turret, with the other 2 trying to get past them and failing.

Share this post


Link to post

It's been a long time since I last gave an update on my HTML5 C&C recreation. (http://www.adityaravishankar.com/projects/games/command-and-conquer/)

 

I updated the weapons, sounds, animations and created 2 levels each for both GDI & NOD... While not perfect, I think I have got pretty close...

 

I added game options, save game/load game/ audio options/ game speed etc. etc..

I even added the cutscene videos :D

 

The pathfinding is still my own code so it isn't perfect (can't get five infantry in one block) but it's reasonably decent

 

I also added multiplayer with two maps using Node.js as a server...

 

Still a long way to go... Would appreciate feedback from the forum members and their thoughts on what features I should add next....

 

Maybe I should start a thread on this forum somewhere to ask for feedback??

Edited by adityars

Share this post


Link to post

Yeah, might be worth its own thread. This one turned into a mix of my research and your progress reports, lol :)

Share this post


Link to post

Just added aircraft.ini. Guess I got all the basic types now. Now it's just a matter of hunting down more elusive data like the firing offsets of weapons, and the turret placement on tanks.

Any chance you were able to find this data (the offsets and turret placements)??? Edited by adityars

Share this post


Link to post

Sorry, haven't had a chance to look into that yet.

 

Another interesting bit of information turned up, though. It seems that the unit speed is different for each movement type. Bittah (from the Dawn of the Tiberium Age mod project for Tiberian Sun) tested that, and figured out the ratios.

 

As mentioned in the units ini file, The movement types are:

0=Foot

1=Tracked

2=Harvester (unused, leftover from Dune II)

3=Wheeled

4=Winged (another Dune II leftover, though it may be used for aircraft internally)

5=Hover

6=Boat

 

 

From Bittah's tests, these speeds are equivalent:

 

track | wheel | foot

.120. | . 80 .. | ??

..60. | . 40 .. | 32

..30. | . 20 .. | 16

..18. | . 12 .. | 9

..36. | . 25 .. | 19

..54. | . 36 .. | ??

..46. | . 31 .. | 25

 

So basically, to get the same speed as an infantry unit with speed 16, a tracked vehicle needs to get speed value 30, and a wheeled vehicle needs speed value 20.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×