ESHQ is a mod for Half-Life with its own storyline (not from Half-Life universe). Unknown government spy must steal secret files from the building called “Evil scientists headquarters”. But his job is going to be a bit more difficult and long...

Report RSS Engine specifications for ESHQ / ES:FA

An article contains detailed description of main features of Xash3D engine's adaptation for ESHQ

Posted by on

Subject: Xash3d FWGS engine

Purpose: this engine adaptation created specially for ESHQ mod for Half-Life part 1. Modification based on old (from 2015) version of engine and may contain old bugs. But some new features may be useful for developers with the same aims.

Main features: main changes touch client and server libraries, not engine core and menu.


1. We have fixed some known bugs: non-rotating func_rotating; crashes at killed scientists sentences and bullsquids; invalid behaviour of start-opened 'door_rotating'; some other bugs.


2. We have added entity 'trigger_sound' in addition to 'env_sound'. It works as well as 'trigger_multiple' (with hardcoded 'wait' value - 1 s). We cannot understand, why there was no brush entities to set sound effect. Spherical 'env_sound' has very weird and unpredictable behaviour. And it is difficult to apply it in cases like long narrow building entrances (f.e., partially opened gates, see below). This situation really needs two brushes - before and after the gate - to trigger sound effects.

eshq300002


Application example: map #30 (here and below - numbering for ESHQ mod), road to highway 90, tunnel entrance. One trigger before gate and one after it (there are two different triggers on the picture).
Features: best doors and entrances shapes matching, fully controllable behaviour. Just set type of room.


3. We have returned green blood to some monsters. This feature has been implemented but not activated in client library. This feature also added to 'env_blood' and 'monster_generic'. In case of 'monster_generic' color of blood also determines type of gibs.

Blood color application


Application example: map #31, 'Base 2', samples room.
Features: more flexible monsters differentiation.


4. We have removed from our maps 'cycler_sprite' entity and added 'Non-solid' flag to 'cycler'. Our 'cycler' now have 'Material' field (crowbar and bullets hits sounds depend on it) and two fields that define collision box endpoints (looks like 'Color' setup). 'cycler' and 'env_sprite' entities can also accept 'body', 'skin' and 'sequence' settings and can shoot their targets.

cycler application


Application example: map #2, hotel rooms.
Features: flexible models inclusion.


5. Our doors (momentary, rotating and simple) have different fields for 'Just opened' and 'Just closed' sounds. We are planning to split 'Opening' sound to 'Opening' and 'Closing'. But now it's not necessary. Also we planning to make non-linear speed modes for doors moving.
Also we have fixed some bugs (basically, around 'Starts open' flag) and have expanded list of sounds (not only replaced exist ones). Finally, our doors are not playing 'locked' sounds when opened.

Application example: map #1, openable wooden doors; map #2, vault metal door that closes after going through (for locked sound).
Features: flexible door behaviour.


6. Our 'monster_turret' and 'monster_apache' can trigger something on death.

Application example: map #20, near from metal fortress.
Features: turrets and apaches may be fully included in scenario sequences.


7. Our ambient_generic (and all entities that can sound) has more accurate sound radius. Now you can use 'env_spark' without risk of noise from everywhere.


8. We have added entity 'item_key' in addition to 'item_security'. It can look like a keycard or like a bunch of keys. Also we want to add 'item_generic' (with changeable model) for collectable objects.

Keycard model


Application example: map #33, old hospital.
Features: plausible triggers for doors.


9. We have added 'game_player_set_health' entity. It sets absolute value of health and armour. Applicable when you need to create effect of immediate but controllable damage.

Application example: map #18, after crush; map #26, full health; map #35, falling; etc.
Features: full control for health / armour level; simple healing / damage application.


10. Our grunts, barneys, scientists and zombies got 'burned' state: we can add burned corpses to the map. Also zombie got 'dead' animation.

Burned grunt


Application example: map #8, ESSL, burned desk.
Features: more corpses' types available.


11. Our 'monster_rat' can run and can be smashed (as well as 'monster_cockroach', but with red blood, of course).

Rat


Application example: map #4, metro tunnel.
Features: it's funny.


12. We have added 'Don't reset view angle/speed' flag to 'trigger_teleport' entity. It is useful in case of map space expanding: you can make teleportation almost imperceptible and use it for visual expanding map sizes in single file.

Application example: map #12, metro tunnel; map #39, elevators shafts.
Features: expanding visible map size without changing level.


13. Our weapon_fastswitch is really fast (as it is in HL2). Just press slot button again for next weapon selection.

Features: it's really quick.


14. Our 'game_end' entity works correctly (ends the game). And 'player_loadsaved' can kill player. So you don't need 'trigger_hurt' or some other 'frozing' method when the player's corpse tries to run.

Application example: map #2, underground cave.
Features: correct game ending; frozing player when he fall off or something like this.


15. We have implemented 'trigger_random' entity that allows developer to randomly trigger one target from the specified list at a time. Also you can specify a probability of triggering for every target.

Application example: not presented yet.
Features: no 'env-laser' needed for randomly generated events.


16. 'item_security' and 'item_antidote' are collectable now. You will see how many objects you found. The last object can be used for triggering or ignoring some bonuses (engine controls count of collected objects and can compare it with specified value).

Collectable items


Application example: all maps.
Features: first realization of achievement feature.


Also:
- We have returned human-like gibs and red blood to zombie. We think that zombie is more like a scientist than a bullsquid.
- Breakables can spawn crowbars (why it was not so?) and gauss gun clips.
- Pushables got different sounds (depends on materials).
- Our 'func_illusionary' triggers its textures when get called (as well as 'func_wall' or 'func_button').
- Our gman has 'Killable' flag and two skins.
- Our .357 and crossbow got correct reload sounds.
- Wood, glass, snow, tile and rubber textures got own sounds for player steps and weapons hits.


We work on engine's improvement and with known engine's issues. Hope that our work will be helpful. If you found bugs or have some advices about functionality, please, remind us. Thanks!

Post comment Comments
TonyL
TonyL - - 11 comments

I had noticed most of this and wondered what was going on. Good stuff. The length of the "game" though looses these interesting touches and becomes repetitive and laborious and just too hard to retain interest, so inevitably I had to set some noclip and god keys, I am a player and not a mapper or coder but from 1998 have worked with 3d stuff in many ways and understand stuff, have been playing catch up with Half Life mods over the last few weeks, some good ones, 40 or so in my xash3d folder and similar in my Won. Half-life. As a test for coding and styles of mapping ESHQ is all interesting, for me to look at, dull, as a game in itself I find it hard work to enjoy on a pc. maybe suited to Android though. The dedication that is shown I applaud. To see all these updates and articles is fascinating and educational. Thanks

Reply Good karma Bad karma+1 vote
RD_AAOW_FDL Author
RD_AAOW_FDL - - 288 comments

Hi! Thank you for detailed feedback!

We are still working on mod's weaknesses. And I think we can do ESHQ more interesting in future. Current plot's state is a result of inconsequential (almost spontaneous) experiments with events, characters and technologies. It might look inconsistently. But I really think that we can fix it.

Anyway, if our work can be helpful and/or interesting for you, you are always welcome!

Reply Good karma+2 votes
TonyL
TonyL - - 11 comments

Thank you Nicholas
If I have enjoyed ESHQ I believe it is for that precise reason that it does look like it is developed in a spontanious manner and also with an honest and fun attitude. It seems like a current or present time experiment. Certainly the huge amount of work and time involved is obvious. That the plot or story line moves faster than the visual or artistic aesthetic is my main concern. I still have to pm.a reply have not forgotten.

Reply Good karma Bad karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: