News | Forum | People | FAQ | Links | Search | Register | Log in
Chasm_quake_devkit
I read a lot of toppics about the possibillity of making a chasm quake convertion. As with the discusion about beez it often ends up whith a lot of whisfull thinking.
Here my intention to do make a chasm.quake devkit.

So far I've got the models in Quake running, but only on "notarget" function. If you have any ideas here is a devkit with the results.
There is still a lot to be done before all subroutines are cleaned up. For some I have a solution, but there are a lot of double poses in them.

To be done:
- stripping the frames for double action.
- adding the attack pain and death qc.
- eventually change the weapons and attack.
- adjusting the sound files.
- making maps for it with the chasm.wad
- extracting the cieling/floor parts.

Here's the first part of The Sewer map I'm making to try out the first three monsters Stratos - Faust and Spider.

chasm_quake_dev02

sewer1
sewer2
sewer3

I know it is a rather big chunk of work.
I just do it for fun and have no commercial intrest.
Just my urge to see that bastards run in Quake.
:P
First | Previous | Next | Last
 
The chasm rifle is too weak, takes too many hits to kill even a quake grunt 
No Idea 
It is the same code as the normal gun.
Here is some comparisment with the usual Quake enemies.
They all start an infight.

v2.04 
 
The chasm monsters can infight with the Quake monsters, but they still don't fight each other.

In the Original Chasm, a faust will definitely fight a stratos 
 
when a Faust hits a enforcer, the enforcer will only follow the faust around, so there is still something wrong with the infight code. 
 
But I think the Faust attack speeds is now good.

But the Faust looks noticeably shorter then the enforcer, they should be the same 
Hrmpf 
Something slipped my attention, as the mong-faust and stratos only had a run stand and run pose. Reason why I couldn't attach a path_corner to them.

While correkting it Faust has now its original round look. Don't know why it kept hanging.
Infight is different, although enforcer and stratos stay black sheep when attacked. They won't refire.

So Faust fight Stratos who won't respond.
Mong fights Enforcer who won't respond.

Quake monsters are much more fixed on the player.
Mong almost needs a kick before it wakes up.

dev2.05 
 
haha, just make every monster attack each other, regardless of the fact that they are from Quake or Chasm 
 
The enforcer will infight with a stratos though, perhaps this can offer a clue? 
 
The grunt will also infight with a stratos, so maybe you should check the infight of Chasm flying monster vs chasm ground monster. 
 
But the Stratos stop kicking me again. So check the attack scenes 
 
Did you figure out the infight problem? Maybe you can check the source code of copper quake, that mod makes some changes to infight, maybe it can help you figure out the problem. 
Rounding Up 
The in fight is solved only Stratos stays a bit lame when attacked.
Added the Trooper, Leutenant and Mincer. 
 
A few things then:

Currently, gibbing a monster crashes Aguirre's engine at least, I think this has to do with the Head Gib, please add it.

Make the Mong fire shotgun instead of Laser, more powerful version of Grunt's

Make the Faust's rockets actually explode, and make them homing, the code for this is found in AD's rockeeter. 
Quasm 
I made some small additions.
- Added Leutenant, Captain and Mincer. Attack scenes may be a bit cluympy.
- Captains attack not finished, double flamemouth attack.
- Altered attack scenes Mong Faust and Stratos.
- Sometimes Faust or Mong won't reply to infight attacks.
- Added the h_head function to them.

The Mincer might be too strong with a lavaball.
And for homing rockets then there's no hiding.

dev2.06 
 
When I tested it, the stratos does not respond to infighting at all, so there are still problem with the infight code.

Why does Mincer have a fireball? It was like a Fiend without jumping.

Can you reinsert the grunts and the enforcer to check infighting.

I saw an alien warrior that do not respond to an alien captain's attack. 
 
The lavaball is useful for when you convert the Gross, because he throws rocks. 
 
Sorry, a small error on my part,

The alien warrior will infight with an alien captaim, but they both won't respond to an attack by the mincer. 
Modding 
I didn't add the ladt monsters to the fight
Qc yet. So they don't in fight well.
Mincer is just a try out. 
 
Now I want to see a mincer and a fiend rip each other to pieces lol 
Go 
 
The mincer's corpse disappears.

The mincer only slashes me with its arms, it doesn't bite me. 
Show A Demo 
That's why it had a lava ball. Monsters start attacking immediately, so as soon it is in sight it uses its first attack. In this case it is bite, but as the distance is too wide it has no effect.
All corpses disappear after death. 
 
I am not talking about that, I understand the first bite has no effect, but when you are close to the mincer, the mincer is suppose to both bite and slash. Right now, it only slashes and never bites. 
 
I loaded up chasm in dosbox, and I just saw a mincer trying to bite me from too far away.

so this:
" In this case it is bite, but as the distance is too wide it has no effect."

is actually normal chasm behavior.

Please re enable the mincer's bite attack. 
@madfox 
"Monsters start attacking immediately, so as soon it is in sight it uses its first attack"

Fiends don't attack when they see the player, they start to run and only attacks if they are close enough. Mincer should do the same. 
 
The Alien warrior is really good tho. Just change the laser to Green and it is done. 
Ai Sir! 
Is that the Leutenant or the TrooperCaptain?
The names are a bit confusing and I never joined the draft so I don't know their ranking.

I made the Mincer more like the rottweiler.
It feels as if the quake monsters are not (am)used with the chasm ones.:P

I'm nudging with rain, but for some reason the link in quakespasm is dead.

dev2.08 
 
The lower ranking one with the single laser.

Also what's the deal with the skeleton? Was there some problem converting that model? 
 
The enforcer can infight with a alien warrior (single laser), perhaps this will offer a clue?

And mincer should not jump. 
 
This new mincer looks too small compared to chasm, and that jumping looks really bad. Please get rid of the jumping. 
Sounds 
The deal with SKelton is that I didn't find a proper code for it like zomby yet.

As the readme "not the slightest idea where to look at" covering the infight.

The skinfile of mincer already looks oversized. Making it bigger will make it worst.

I can't find any chasm monster sounds. 
 
would this help?

https://forum.zdoom.org/viewtopic.php?f=37&t=46824

I think the issue is that the mincer looks too small when compared to the alien warrior 
 
 
Would that Zrift mod have the monster sounds? 
Nope 
It is the same file as chasm ambient sound, only one monsterfile: "phbathit.wav". 
Yes 
Found them, although it are ogg.files. 
 
So regarding the infighting, the copper quake source code cannot help you at all? 
Observer 
When playing quake I never cared for infight, I saw it happen but not as a oppertunity to beat the enenemy.

Do you have some qc knowhow? The compiling files are in the progs directory under chasm_quakeqc.zip.
I could go looking in other code but for now I'm just puzling out how to get the entities going.

Here is the file again with some monstersounds and running mincer. Maybe the infight is now more likely? As far as I can see they kill eachother relating health size.

For example, if stratos has less painframes than a stronger opponent he can still win concerning its repeating attack.

dev2.09 
 
One issue first:

The sounds for the Alien warrior is definitely wrong. I checked chasm, the activation sound should be ALISEE2.ogg and ALISEE1.ogg

Yet your alien warrior doesn't sound like that.

You got the monster sounds from
Pan-ZRift_v1.0a.rar, right? 
Names 
I'm sure you're right. The grunt has three sound channels I gave to Stratos fast and mongrunt. The others were a bit harder to trace as you call it an alien warrior but the game has a leutenant captain (1gun) and a captain trooper (2guns). 
 
I think there is a misunderstand here. When I said infight, I didn't mean how often infights happen, or which monster kills which monster. I only meant stuff like when a Faust hits an enforcer, the enforcer won't fire back. I suspects this is due to some Faust code that makes the enforcer not able to target it. This is why I suggest the copper quake code, as it deals a lot with defining targets. 
 
Or maybe look at the difference between the code of the alien warrior (1gun) and the Faust. The enforcer fires back at alien warrior, but not Faust 
So 
When the Alien Captain hits the enforcer it also fights back, like mong and stratos.
Can't find out where it is nestled.
It takes some time before the enforcer responds to The Captain in its painframes.
Maybe it hasn't got time enough to shoot back?

Stratos and Grunt tend the same lack in attacking at first move. 
 
Can you do an experiment? Can a fiend fight back against Faust? 
 
Can a Scrag fight back against a Faust? 
Lame 
You could have searched that out in the dev pack.
Faust will fight a wizard, mongrunt,enforcer, army and stratos but they won't respond.
Faust will fight a demon and ogre and they will fight back.

It looks as if most monsters become astrayed when attacked by Faust. 
 
What about a quake dog? Will that fight the faust? 
 
I know that the chasm spider also has this issue, where is that code from, a quake fiend? 
 
When I started coding the Chasm entities I assumed they were alert enough to fight the player. The idea they would fight eachother wasn't in my viewpoint.

The spider code is the same as the rottweiler without the jump code. It will attack other chasm monsters. 
 
Also check the mincer 
 
Can you test chasm spider vs quake grunt? 
 
The map starts with a grunt and a spider. It isn't that hard to check.
For clearance, quake sodier is monster_army, chasm soldier is monster_mongrunt. 
 
I remember army becoming lame after being attacked by a chasm spider, is this true for you? 
Hmm... 
I never had trouble with infighting since I used AD's classtype system, but the magic should happen within T_Damage...usually located in combat.qc or foght.qc depending on the mod's organization.

Lemme take a look at your dev2.09...be a bit 
 
Bah! It's all pak'ed up. Do you have just the qc files available separately not in a Pak file? I can't open the pak on mobile.

I'm needing to check combat.qc, ai.qc, and monsters.qc and maybe fight.qc. 
@master 
Here is the chasm_quakeqc_dev2.09.zip.
It's also in the included progs file in the pak.

And yes, my Army soldier has no attack against spider.

I changed the fight.qc with the same kind of attacks like the army soldier. So the cause must be there somewhere. 
A Few Things To Check 
For infighting to work make sure that all the new monsters have monster flag FL_MONSTER.

This is the bit in T_Damage:

if ( ((self.flags & FL_MONSTER) && (attacker != world)) ) {

if ( ((self != attacker) && (attacker != self.enemy)) ) {

if ( ((self.classname != attacker.classname) || (self.classname == "monster_army")) ) {

if ( (self.enemy.classname == "player") ) {

self.oldenemy = self.enemy;

}
self.enemy = attacker;
FoundTarget ();

}

}

}

Check to make sure your enemies are actually different classnames.

So for instance for this entity
void monster_chasmthing = { .....

the classname is monster_chasmthing

Two monster_chasmthings won't fight unless you want them too in which case remove the check for if the classnames are the same. 
 
Ah hang on, was typing that before you sent the link, let me look at your source. 
Hrmm 
It all looks good so far. Not seeing anything obvious. FL_MONSTER is getting set in monsters.qc, you aren't doing any weird classname masking, it's a simple classname check too so nothing fancy there in T_Damage in combat.qc, and the enemies you've mentioned all have a walkmonster_start.

Not sure yet...maybe because in ai.qc inside the CheckAnyAttack function you only ever assign the basic CheckAttack? Try adding in your specialized CheckAttacks for the new monsters? 
 
Currently, this issue affects three monsters, spider, mong, and faust. Still need to check whether alien warrior will fight back after being hit by mincer and fiend. 
 
Part of the infighting code works, when a enforcer is hit by a mong, it will turn around and run towards the mong, but it will never fire it weapon. So I guess the more accurate question is: what causes the enforcer to just run in infighting? 
 
All of the monsters that do not respond have ranged attacks, so maybe that has something to do with it as well. 
 
Just checked, mincer has this bug also 
 
Mincer doesn't fire its long range attacks because in progs.src you are compiling mincer.qc and it only has melee. Maybe change to use mincer1.qc since it has a th_missile attack.

Not seeing any reason why the enemies won't shoot back...won't be back home for a couple days so I can't test it myself.

Are the following true??:
Enemy hit by spider will not change enemy
Enemy hit by mong will not change enemy
Enemy hit by faust will not change enemy
Or only enemy with ranged attack hit by spider/mong/faust will not change enemy?
Enforcer hit by spider will change enemy but not attack ever
Enforcer hit by mong will change enemy but not attack ever
Enforcer hit by faust will change enemy but not attack ever
mincer is same as enforcer?
Or Enforcer hit by mincer will change enemy but not attack 
Also... 
Most of the special CheckAttack functions in fight.qc don't ever get used anywhere and all the new enemies default to the basic CheckAttack()...FYI in case their behaviour isn't quite like it should be. 
Solution Re: Lack Of Infighting 
Qmaster's post #116 piqued my curiosity because he already looked at, and ruled out, the sorts of problems I would have expected this to be.

I took a look at the code, and the problem is that the new monsters have unusual-sized bounding boxes.

The CheckAttack function (in fight.qc) contains a test where it does a traceline from the attacker's view_ofs to the target's view_ofs. If the traceline doesn't hit the target, the function returns FALSE and the attacker won't launch an attack:


spot1 = self.origin + self.view_ofs;
spot2 = targ.origin + targ.view_ofs;

traceline (spot1, spot2, FALSE, self);

if (trace_ent != targ)
return FALSE; // don't have a clear shot


There's a similar test in e.g. SoldierCheckAttack() etc.

A monster's view_ofs represents its eye level, and is set in walkmonster/flymonster/swimmonster_start_go(). Walking and flying monsters have it at 25 units above their origin, while swimming monsters have it at 10 units above.

The problem with e.g. the Scorpion, Stratos, and Faust is that their bounding boxes are very "short", and don't extend 25 units above their origin. So their view_ofs ends up outside their bounding box. Consequently, when *CheckAttack() aims a trace at the view_ofs, it doesn't collide with the bounding box, and the check fails.

This can be solved by using regular-sized bounding boxes for the new monsters. For a player-sized bbox:

setsize (self, VEC_HULL_MIN, VEC_HULL_MAX);

... or for a shambler-sized bbox:

setsize (self, VEC_HULL2_MIN, VEC_HULL2_MAX);

Alternatively, you could modify the *monster_start() functions to allow you to specify a custom view_ofs. That way you could keep the current bbox sizes. However, I'm not sure that would be a good idea. I've seen other issues in the past involving moving entities with weird-sized bboxes. It seems less problematic to just stick to player- or shambler-sized bboxes; that way, there's no risk of violating assumptions made by existing code (or the engine). 
 
Dah, that makes sense. For collisions against the world the nearest sized hull is used but for raycasts the actual setsize specified at whatever size is used (might be a limit, not sure). So shooting or sight checks would fail, but collisions for moving stay the same (unless using DarkPlaces hacks but those are horribly buggy). 
 
Chasm contains three boss monsters bigger than Shamblers, will this become an issue once again? 
 
For collisions against the world the nearest sized hull is used but for raycasts the actual setsize specified at whatever size is used

Precisely! An entity that isn't VEC_ORIGIN, VEC_HULL, or VEC_HULL2 sized effectively ends up with two different sizes, one of which is used for hull checks against the world etc., and one of which is used for other types of collisions and traces. Which is evil, and can lead to confusing issues. This is one of the reasons I'd recommend against using unusual bbox sizes for monsters in general.

Chasm contains three boss monsters bigger than Shamblers, will this become an issue once again?

It depends.

Big bosses shouldn't be affected by the infighting problem. As I said above, that was effectively caused by the bbox being too short, so that it didn't contain the view offset. A big bbox shouldn't have that problem.

But IIRC, hull-based collision (e.g. collision with the world) is broken for entities that are larger than shambler-size, because as Qmaster said, the engine uses the closest hull size, which is shambler-size. This is presumably why Chthon and Shub are designed such that they don't move around.

So if the bosses don't need to move around, they should be OK?

Alternatively, if a monster's model is bigger than a shambler, but not too much bigger, a mod can probably get away with using a shambler-sized bbox without this being obvious to the player. IIRC, the Gug (from Quoth) is an example of this.

I don't know if either of the above are applicable to the Chasm bosses (bear in mind I know very little about Chasm.) 
Sure! 
I thought to get away with smaller bboxes to make the aim point a bit stronger, but it seems I got my game breaking up with infight errors.

Thanks yeh1 for making this clear to me and qmaster for tracing the bug down.
Thank to iw the monsters now infight in game works decently, which was something I always wondered about. Your explanation was usefull to my modding witz.
I am already glad a monster appears ingame and has the commen subroutines. No infight escaped my vieuwpoint.

Still things I'm struggling with like the double shotgun launch of the Captain and Stratos.
Only the wizard has sort alike attacks, but I want to get them unstrangled.

I am also not so famaliar with the chasm monsters, I only played the first two maps. What I wanted to see was the helicopter . Scratching my beard how to get in somehow.

dev2.10 
 
Just to clarify, that is the code used by monster_seeker in AD for the double rocket attack.

I also think AD's Zombie knight code will be useful for the Chasm skeleton, and the seeking missile code of the Rockeeter is useful for the Faust.

Perhaps Qmaster can offer some advice on where to track this code down? 
 
an minor issue, now the stratos corpse sinks into the floor 
 
Yes I know. And when I lever it's death pose it won't go up in air. 
 
I think you should improve the melee damage for the Mong, Faust and Stratos, right now, it sometimes takes 7-8 punches from a mong to kill a grunt. Thats too low. The Faust should also have higher health, as they are suppose to wear heavy armor 
Borrowing The Way AD Did It 
You can get the code from either AD or Keep, but the file and organization is the same for most normal projectiles: projectiles.qc

Then of course the calls to launch_projectile are in each monster's qc file: mon_seeker.qc, mon_zombiek.qc, and mon_soldier.qc for the Rocketeer (down near the bottom of the file).

Use notepad++'s CTRL+SHIFT+F to search for the defs for different values (most are in defscustom.qc) for the ALLCAPS_VALUES for damage and speed etc. for each projectile, usually they start with PROJ_


Stratos calls CorpseThink when it dies. I couldn't find it since I donpt habe notepd++ to search on mobile but I assume this fades and sinks the corpse into the ground? 
 
will this help you? madfox, the texture are for Doom, maybe you can convert them to quake? 
 
Wadfile 
Just added the Goblin with its arrow launch.

I recently lost two computers with all doom editors on it so Im glad I could save what was on the net.
The Gldoom editor won't open the file so I'll see what I can do.

I remember spending a few weeks to convert the wad, but then I didn't noticed the whole chasm game isn't made of polygons, but parts of them packed in *.mdl. That must have saved a lot of data those days.
Also the wadfiles are slightly different.

When I compare the skinfiles of the chasm and quake monsters I must say the chasm ones look rather pale. Not to say the army guy gets yellow, but the difference is obvious. 
 
How is the double projectile coming?

I would not worry about the chasm monsters being pale, you can make the mong more green, but the other monsters are fine.

Or make two versions of the mong, one default, one green, one with a laser rifle, the other with a shotgun like in Chasm 
 
Slade will open the doom chasm wad 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2019 John Fitzgibbons. All posts are copyright their respective authors.