Announcement

Collapse
No announcement yet.

HEXEN II community work and discussion

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Spike
    replied
    if you are using fteqcc, you should be able to completely omit the array length number within the array definition, on the condition that its initialised.
    it should also accept formulas for the array size so long as each part is a constant (and you're not using -O0), this includes constants specified within enums.

    if you still have compile issues after following seven's advice regarding the comma stuff, stick your code into a pastebin or something and I'm sure someone will take great pleasure in trying to spot the issue before anyone else can.

    Leave a comment:


  • webangel
    replied
    Nice to see some work on the HeXen front!

    Leave a comment:


  • Seven
    replied
    Hello Mathuzzz,

    Do not worry, you and me and we both together will manage it somehow

    First of all: Thank you for the link. Yes, I knew Sitters page before.
    You maybe want to look here for some more interesting links: click



    Now let us fight this error in your compiler together

    I assume you are using the HC source 1.12a as your base ?
    Please check if you did these points:
    1.) You added your new model _ENTS floats in spawn.hc ?
    Example:
    Right below this line you have to add your new _ENTS floats:
    float ENT_DRAGLION = 91; // this is the last model from portals
    I just tested it and added these as placeholders/samples:
    float ENT_MATHUZZZ = 92;
    float ENT_SEVEN = 93;
    float ENT_QUAKEONE = 94;

    2.) Now the next function you have to edit is:
    float entity_spawnvalues[570] =
    I added only 3 new ENTS, that is why I changes the value from 552 to 570
    Formula is: 6 * (float of your highest ENT + 1) = 6 * (94 + 1) = 570

    2.a)Next is to add the 3 lines at the end of this function
    So, as a placeholder I added 3 identical lines at the end of float entity_spawnvalues:

    This is the last line in original function:
    100, 200, 0, 3, 1, 1 // ENT_DRAGLION
    You MUST edit it to:
    100, 200, 0, 3, 1, 1, // ENT_DRAGLION
    Pay attention to the last "," !
    Now add our 3 new lines:
    100, 200, 0, 3, 1, 1, // ENT_MATHUZZZ
    100, 200, 0, 3, 1, 1, // ENT_SEVEN
    100, 200, 0, 3, 1, 1 // ENT_QUAKEONE
    Pay attention that the very last value has NO ",".

    I think this was the root cause for the error you received when compiling

    3.) Do the same for the function
    vector entity_box[184] =
    We added 3 ENTS in this example, so you would have to change it from "184" to "190"
    Formula is: 2 * (float of your highest ENT + 1) = 2 * (94 + 1) = 190

    3.a) Do not forget to add a "," behind the last original value.
    Then add your 3 new lines and do NOT add a "," after the very last value.


    That is the necessary syntax for these functions.
    I think, now you can compile your new code.
    It compiled for me without errors.

    By the way:
    Do you use the FTEQCC compiler ?

    Please pay attention if the spiders are still killable when using the new progs.dat.
    There seem to be a bug in original Hexen2 that causes this.
    I had this bug, when using a new compiled source 1.12a (without any changes !) with FTEQCC.

    Please do not forget your map screens

    Best wishes,
    Seven

    Leave a comment:


  • Mathuzzz
    replied
    Well, thank you for such a helpful reply, Seven

    I mostly did exactly what you wrote except the thing with
    float entity_spawnvalues[552] =
    vector entity_box[184] =
    That may be the problem. I havenīt touched those values.

    I created entity function in object.hc, than I have put the necessary values into spawn.hc, but it came up with the error, something like "expected }, found 200", where 200 is one of the values for the new entity.

    I will look at it tomorrow and post my results.

    About the models.

    There is the known site, Iīm sure you came across
    Untitled Page

    Models are md2, but there are plenty of programs which can easily convert between md2 and mdl.
    There are packs with various models, mostly modern, but there are great egyptian themed models, some dungeon themed and interesting pack with trees/bushes, which I especially find useful.

    In the past I found even better model packs, but I was not able to find them now.

    Also, Heretic 2 had some nice models.

    EDIT: I tried it again today, with modified values, but still same error "spawn.hc(206) : expected }, found 100". I donīt know what else Iīm missing.
    Last edited by Mathuzzz; 07-24-2013, 11:51 AM.

    Leave a comment:


  • Seven
    replied
    Hello Mathuzzz,

    Great news, that you managed to compile your map

    You mentioned that you found fitting Hexen2 models.
    Could you please share the link, where you found them ?
    Because I always search for these kind of models too.
    Thank you.


    Regarding the question to bring new models into H2:
    I am a bloody beginner with .hc
    But I also was playing around with .hc recently and I think I can help you.
    Of course, if Spike can jump in and explain it, it would even be better

    1.) It all starts with calling the models via its specific function in your .bsp:
    Let us follow the procedure with the regular model:
    chair.mdl
    This is how it could look in the mapīs ent file:
    {
    "classname" "obj_chair"
    "origin" "1050 1722 144"
    "scale" "1.4"
    }

    2.) With that, your map calls the specific entity function (in our case the regular chair)
    It is inside object.hc:
    Code:
    void obj_chair()
    {
    	precache_model("models/chair.mdl");
    
    	CreateEntityNew(self,ENT_CHAIR,"models/chair.mdl",chunk_death);
    
    	self.touch	= obj_push;
    	self.flags	= self.flags | FL_PUSH;
    }

    3.) The CreateEntityNew line calls the universal "entity-Spawner" function together with all necessary arguments for that special entity (in your case the chair).
    The function CreateEntityNew is inside spawn.hc


    4.) Inside the universal CreateEntityNew function, the given arguments are used to call the 2 important functions:
    - entity_spawnvalues
    - entity_box

    (both are also inside spawn.hc)
    Several other things are also done, but that is not so important in our case.


    5.) The entity_spawnvalues function contains the necessary values for the chair.
    There are 6 spawn-value fields for each entity !
    The function knows (because of the given arguments), that it is ENT_CHAIR, so it uses this line (with its given values) for the chair.


    6.) The entity_box function contains the necessary values for the chairīs bbox size.
    There are 2 fields for each entityīs bbox !
    The function knows (because of the given arguments), that it is ENT_CHAIR, so it uses this line for its values.



    That is the regular precedure from .bsp to in-game spawning of entities.
    If you want to add new entities, you have to create new functions and lines where necessary.

    ATTENTION:
    Hexen 1.11 has theses values for its functions:
    float entity_spawnvalues[456] =
    vector entity_box[152] =
    Hexen 1.12a has theses values for its functions:
    float entity_spawnvalues[552] =
    vector entity_box[184] =
    The mission pack uses more models and needs therefore more values in both spawn functions !
    There is a comment in HC source 1.12a that tells you the formular for these values.
    You MUST modify the values, if you add additional models into your map/hc:

    Formulars are:
    - for entity_spawnvalues: 6 * (float of your highest ENT + 1)
    - for entity_box: 2 * (float of your highest ENT + 1)

    Original Hexen2 uses 75 models + world = 76
    Portals uses 91 models + world = 92


    Example:
    If you want to add 2 new models into original Hexen2, your function must look like this:
    float entity_spawnvalues[468] =
    vector entity_box[156] =
    Dont forget to add the 2 new lines with the models values in both functions.


    Beside the extension of these 2 functions inside spawn.hc, you must also add the specific model functions in object.hc.
    Remember, the one for the chair was: void obj_chair ()
    These new functions for your model will be used/called inside your map (.bsp).
    You have to bring them somehow into your mapping tool (or add it via .ent files is a dirty solution), because the mapping tools doesnt know your new models...


    As mentioned before, I am a bloody beginner with .hc, but I think that is what you need to edit when you want to put new models into your map.

    Cant wait to see some screenshots of your map

    All the best,
    Seven

    Leave a comment:


  • Mathuzzz
    replied
    Originally posted by Rino View Post
    @ Mathuzzz
    I would hate touch the complex brushes, made ​​by me, to which I have devoted a lot of time and effort, to insert models.

    Alternatively I suggest, decrease the polygons, in some areas of the map, where the detail is not necessary, in replacement with use of Textures made ​​ad hoc.
    What I had in mind were especially environmental models, like rocks, which usually eat a lot of brushes and I mostly had to remove them.

    Leave a comment:


  • Rino
    replied
    @ Mathuzzz

    I'm glad that you were able to solve!. : D

    Regarding the models, I use the ones in the game, or PoP.

    I would hate touch the complex brushes, made ​​by me, to which I have devoted a lot of time and effort, to insert models.

    Alternatively I suggest, decrease the polygons, in some areas of the map, where the detail is not necessary, in replacement with use of Textures made ​​ad hoc.

    Leave a comment:


  • Mathuzzz
    replied
    @ Rino
    If I will ever be able to run my map, then I will make some screenshots . Unfortunately, my last two days of removing brushwork and covering all the remaining brushwork in clip brushes didnīt help.

    EDIT
    Great! I finally managed to kill the error for now.

    I found large amount of useful models, so I was thinking I would try to work with them, reducing the number of complicated brushes. However there is one problem. I have to compile them into progs.dat. I tried that last night, but spawn.hc had compile errors, even though I just copied the formula from other decorative entities. Have you ever adding some simple decorative stuff to the game?
    Last edited by Mathuzzz; 07-21-2013, 03:44 AM.

    Leave a comment:


  • Rino
    replied
    @Rino
    Iīm having a problem with MAX_MAP_CLIPNODES, which is BSP limit. In other words, my map is too big, I will have to either remove most of the details or cut it to pieces.

    @ Mathuzzz
    Hello, if your map has reached the limit, (a castle with soil I think), you should cut into sectors.
    I think Seven has already suggested this, (I'm talking about single player)
    Do not remove the details, you can add, then you split it in 2/3 maps.

    Between one slice and the other, you may create a changelevel, for example, the portal main entrance of the castle, so as to divide the outer area, from the inner zone, for example, map1 outdoor area all, with only perimeter walls castle, and the"drawbridge" with changelevel, entry to map2 and return.
    You can delete the entire interior, rooms, etc., lightening the BSP.
    In map2 you can delete all the exterior (soil, trees, etc.), you can keep the main door from the inside (where you will appear from changelevel of map1).

    At this point if the BSP works, it could be a solution, otherwise divide in planes (or in rooms, groups), the internal area, with other changelevel, map2 to map3 and vice versa, as if you're thinking about the architecture of a house,
    example, ground floor, first floor etc..

    Naturally, your map will need to organize it in a different way, from how it is made currently.
    There will be delays in loading map (as they have already said) in singleplayer is not big problem.

    I hope I have helped,
    when you're ready I'd be curious to see some shot, good mapping!

    I greet all
    Rino

    Leave a comment:


  • Spike
    replied
    you can find fte's built-in particle scripts here: FTE QuakeWorld / Code / [r4417] /trunk/engine/partcfgs (inside h2part.cfg, for the hexen2-specific ones)
    I tried using namespaces with it (which sidesteps the whole 'select preset' issue), so the effects you replace will need a name like 'h2part.ce_foo' inside your custom particle config and it should override 'ce_foo' inside h2part.cfg.

    Leave a comment:


  • Seven
    replied
    Hello Mathuzzz,

    Veirdoīs Mage weapon pack was designed and developed for the Doomsday engine.
    Veirdo is a professional and works in gamedev industry as vfx artist.
    Particle effects and dynamic simulations are his everyday duty.
    So, dont expect it to be too easy to create effects like he did...

    The Doomsday engine and Spikeīs FTE engine use a basically similar way of creating particles and bringing them into the game.
    - You have the predefined game effects which you can replace/edit
    - You can create totally custom/new efects names and call them at specific situations
    - You can use as many different particle textures as you want.
    - ...

    Especially the last point makes FTE and Doomsday superior to Darkplaces particles system, as you can only use 64 - 1 = 63 textures in DP. 63 is an awefully small amount, if one is "effect-hungry" like you are (and others in this forum )


    Haze is/was a real master in creating FTE particle effects.
    Spike linked his work here recently.
    If you are like me (I need examples to learn/study new things) you will take a look at his work and see and understand how it works. The linked WIKI will do the rest


    Back to Veirdoīs effects:
    Dont let them confuse you, he mixed texture particles together with real small models and light effects.
    The ice shards and other small things are real models.
    You can do this of course in FTE too, but this would need some "QC" edits (if you can call Hexen2 mechanics "QC"...).

    But you are absolutely correct:
    I never saw such beautiful particle effects in a Quake-type game of this age before.
    But no wonder, Veirdo is a professional vfx artist and works with this stuff everyday


    Doomsday is such an advanced engine and it is also developed regularly.
    It can stand in 1 line with the Quake engines FTE and DP in this manner.

    Have fun creating particles for your weapons.
    Seven

    Leave a comment:


  • golden_boy
    replied
    FTE runs Hexen 2 and has a particle system, so that would be possible. I'm not sure about other H2 engines. Here's a bit of a log where Spike talks about FTE particles:

    03:29 <Spoike> the console command r_exportbuiltinparticles will write out a few .cfg files
    03:29 <Spoike> can can then just exec them directly in order to test them
    03:30 <Spoike> but the proper way to use them is to set r_particledesc $FOO and put them as quake/$GAMEDIR/particles/$FOO.cfg
    03:32 <Spoike> note that 'built-in' effects cannot be loaded from the filesystem as a cheat prevention measure (actually, I can relax that a bit, its just a little lazy)
    03:32 <Spoike> so if you load them via that cvar, you'll need to rename them first
    I use FTE particles in SJ, so far I made rain (hurrah). Basically you need to fire off a TE_something effect in the QC, and make a custom particle to suit it!

    Try the different particle settings FTE comes with (they work in Quake at least, not sure about H2).

    The FTE wiki also has something about it:

    http://www.fteqw.com/wiki/index.php?...edParticleSets

    erm, this seems to be the more relevant part of the wiki:

    http://www.fteqw.com/wiki/index.php?title=R_part
    Last edited by golden_boy; 07-02-2013, 09:55 AM.

    Leave a comment:


  • Mathuzzz
    replied
    What I meant was whether I can enrich Hexen 2 weapons with some nice looking particle effects with available engines?

    Leave a comment:


  • talisa
    replied
    yeah Zdoom can run both heretic and hexen

    Leave a comment:


  • golden_boy
    replied
    Quake engines? FTE has a particle system that allows you to do all kinds of things. DP has particlefonts for example, too. The Doom 3 engine has great particles.

    With Hexen 1, perhaps look into ZDoom, which is an advanced Doom 1 engine and I think it plays Hexen 1 as well, though I'm not sure.

    Leave a comment:

Working...
X