Announcement

Collapse
No announcement yet.

IQ reprised.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ezzetabi
    started a topic IQ reprised.

    IQ reprised.

    IQ site check the site for a list of features.
    To download click on ``Download Lastest'' on the top bar.

    I wanted to continue the Entar work on IQ, the idea is doing small modifications to Quake that change (hopefully in a way you like more) the game experience.
    The original Entar code is always available as [8cd6d02e55] check-in.

    Everything is freely usable, if you like a piece of code a function or anything, just use it. Credit is welcome, but no way necessary.

    To have more precise informations use the site: click on ``Timeline'', click on a check-in you are curious about and finally click on ``show side-by-side diffs'' to see exactly what has been done. I try to push only one change for check-in to make this operation the most possible expressive.
    Last edited by ezzetabi; 05-31-2013, 02:10 PM.

  • Seven
    replied
    Hello ezzetabi,

    Redeclaring does not do any harm.
    All "self.th_xxx" declarations are done in main monster spawn function.

    It should not do any harm if you would, lets say redeclare the exact same things in all 1st animation functions. As long as you dont change them of course

    The reason for the ghosting seems to be directly depending on the lack of a AI declaration, because you do not spawn the monster at map start, but during a map and therefore the walkmonster_start(); and walkmonster_start_go(); are not called like they are at map start.
    (please excuse my bad english, I hope you understand me).

    Anyhow, it proved to help if you redeclare the "stand" and "walk" functions in the 1st frame of these functions itself.

    So, to stay with the demon example:
    I can only say how the original qc looks, you added "self.angles_x = 0;" yourself.

    Change "void() demon1_stand1" to look like:
    Code:
    void()	demon1_stand1	=[	$stand1,	demon1_stand2	] {ai_stand();
    	self.th_stand = demon1_stand1;
    	self.th_walk = demon1_walk1;
    };
    And Change "void() demon1_walk1" to look like:
    Code:
    void()	demon1_walk1	=[	$walk1,		demon1_walk2	] {
    self.th_stand = demon1_stand1;
    self.th_walk = demon1_walk1;
    if (random() < 0.2)
        sound (self, CHAN_VOICE, "demon/idle1.wav", 1, ATTN_IDLE);
    ai_walk(8);
    };

    It looks odd I know and it also looks unnecessary, but hey, if it helps
    I hope very much that it helps you too.

    If it doesnt help, then at least *try* to add ALL "self.th_xxx" declarations to these to functions and test again.

    Code:
    void()	demon1_stand1	=[	$stand1,	demon1_stand2	] {ai_stand();
    	self.th_stand = demon1_stand1;
    	self.th_walk = demon1_walk1;
    	self.th_run = demon1_run1;
    	self.th_die = demon_die;
    	self.th_melee = Demon_MeleeAttack;
    	self.th_missile = demon1_jump1;
    	self.th_pain = demon1_pain;
    };
    
    
    and:
    
    
    void()	demon1_walk1	=[	$walk1,		demon1_walk2	] {
    self.th_stand = demon1_stand1;
    self.th_walk = demon1_walk1;
    self.th_run = demon1_run1;
    self.th_die = demon_die;
    self.th_melee = Demon_MeleeAttack;
    self.th_missile = demon1_jump1;	
    self.th_pain = demon1_pain;
    if (random() < 0.2)
        sound (self, CHAN_VOICE, "demon/idle1.wav", 1, ATTN_IDLE);
    ai_walk(8);
    };

    Best of luck,
    Seven

    Leave a comment:


  • ezzetabi
    replied
    Lets see if I understood correctly, let see the Fiend for example.
    In the demon1_walk1 function is a reset of th_stand:
    Code:
    void()  demon1_walk1    =[  $walk1,     demon1_walk2    ] {
        self.th_stand = demon1_stand1;
    [...]
    So I should also put a redefinition of walk in stand?

    Like, now it is:
    Code:
    void()  demon1_stand1   =[  $stand1,    demon1_stand2   ] {
        self.angles_x = 0;
        ai_stand();};
    And it should be:
    Code:
    void()  demon1_stand1   =[  $stand1,    demon1_stand2   ] {
        self.th_walk = demon1_walk1;
        self.angles_x = 0;
        ai_stand();};
    ?

    Leave a comment:


  • Seven
    replied
    Originally posted by ezzetabi View Post
    It seems the ghost monster issue is still there... just more rare.
    Hello ezzetabi,

    First of all, sorry that we stole your time again and reinfected you with the Quake virus
    But I am happy that you are here again.

    Regarding the ghost issue:
    To be sure that you tear out the rest of this bug, please redeclare more "self.th_" lines in the monsters 1st idle and walk animation frames.

    As I mentioned in my old post, I only encountered the issue with your walking/patrolling monsters.
    So what you want to do is redeclaring at least both (self.th_stand and self.th_walk) in the monsters idle and walk animation function.

    I also did this for the spider, besides some other reason, and the "ghosting" never happened again (independent to its animation status). You can look through spider code if you want (it is in v4.25).

    Best of luck ezzetabi,
    Seven

    Leave a comment:


  • ezzetabi
    replied
    Another small update, in the final phase of Horde if a whole minute passes without killing the level is over even if the minimum number of killings has not been reached.

    It seems the ghost monster issue is still there... just more rare.
    Last edited by ezzetabi; 06-09-2013, 11:36 AM.

    Leave a comment:


  • ezzetabi
    replied
    Would anyone re-write e1m7 so it starts with a room full of equipment like "The Gauntlet" Scourge or Armagon map?
    At the moment the player enters the main lava room the door slams and you are in the familiar map. (Of course it should openable from the other side for eventual coop players)

    https://www.youtube.com/watch?v=ZmA4z0NCkGA

    Leave a comment:


  • Syluxguy28O3
    replied
    progress is good!

    Leave a comment:


  • Seven
    replied
    Hello ezzetabi,

    Good to have you back.
    Thank you for your quick response and your update.
    Looking forward to see some new things from you...

    Best wishes,
    Seven

    Leave a comment:


  • gdiddy62
    replied
    Love this! Thanks for updating!

    Leave a comment:


  • ezzetabi
    replied
    Long delayed update:

    I fixed the ghost monsters bug using Seven's idea;
    I changed rules of Horde a little. Monster are a little stronger than before (90% of normal health instead of 75%) and spawn point can also be underwater.
    Underwater there are few spawning points as there are usually only few items and monsters, still I think it is an improvement because in the previous version when situation was difficult taking a bath was a easy-way-out. Now a bath is still a good idea, but it is not as safe as before. Some maps, like The Grisly Grotto (e1m4), have a totally different feeling in horde now.

    After all, as the manual states: "Safe enough unless you stay under so long you start to drown. Come up for air periodically to prevent this."
    It says: "Safe enough," not "Very safe".

    Leave a comment:


  • golden_boy
    replied
    Good luck with your phd, I think it will turn out more helpful to you than quake modding, tbh.

    Quake modding is a lonely job and pretty unrewarded unless you do graphical enhancements.

    Perhaps you'll look into more recent game technologies one day and rediscover your modding side. Who knows.

    Good luck man.

    Leave a comment:


  • ezzetabi
    replied
    It is some time I do not work on iq anymore.
    A little for the lack of interest, a little because I started my phd in computer science and so I am working full time for the university, and finally because iq is actually fairly useless as far too many user maps are already partial conversion and so it is difficult to use iq with them. (virtually impossible if there is not the code)

    Anyhow, thanks.
    Last edited by ezzetabi; 11-25-2012, 03:27 AM.

    Leave a comment:


  • Seven
    replied
    Hello ezzetabi,

    I tried to simulate your issue and could reproduce it.
    After that, I tried to find the root-cause for it and fortunately found it.

    Details:
    Some monsters, which are placed in a map with walking animation, are only affected by your/this "ghost"-issue.
    The standing monsters all work fine.

    That brought me to the idea, that the 'infected' walking monsters, might have no declared self.th_stand and/or self.th_run function.
    Because those infected walking monsters do not see the player/enemy. Nor can they be shot. They keep on walking their beat... independently what happens around them.


    The solution was:
    Redeclare the self.th_stand function in the first frame of the walking animation function.

    So for the soldier as an example:
    Add this:
    self.th_stand = army_stand1;
    into the first walking animation function:
    void() army_walk1 =
    After I did this, the "ghost" issue was gone and I could not reproduce it anymore.


    That "ghost" issue only happens, when you spawn additional monsters into a map, as you noticed.
    It is really weird why that happens, because the inital main-function:
    void() monster_army =
    is always called for the 'new' soldiers as well.
    And that declares all "self.th_*" functions...

    Anyway, that fixes it.
    I ran into the same issue with my current project.
    That is why I dived deeper into it.

    Best wishes,
    Seven

    Leave a comment:


  • Seven
    replied
    Hello ezzetabi,

    Did you find the root cause for the "ghost" monsters in the meantime.
    I am interested where it comes from...

    Kind regards,
    Seven

    Leave a comment:


  • ezzetabi
    replied
    I know your point, the point was: do anyone uses iq and not use darkplaces?

    It seems that the answer is no. So I guess I can go darkplaces eventually without problems.

    Leave a comment:

Working...
X