Quake3World.com Forums
     Level Editing & Modeling
        EntityPlus - A single player Q3 mod


Post new topicReply to topic
Login | Profile | | FAQ | Search | IRC




Print view Previous topic | Next topic 
Topic Starter Topic: Re: Here's a wild idea: EntityPlus

Insane Quaker
Insane Quaker
Joined: 16 Sep 2010
Posts: 391
PostPosted: 04-26-2011 11:42 AM           Profile Send private message  E-mail  Edit post Reply with quote


obsidian wrote:
^misantropia^ wrote:
From now on, we will only use image sizes that are powers of one!


Voxels?

id tech 6! :up:

Just looked at the new version. Even though it`s still very early on I think this mod has gone quite far since you first started it, with each update. Also, to Hipshot, Obsidian, and DaEngineer: very snazzy model work!

Dunno if this is tacked down yet, but if you gauntlet a bot (enemy), you still recieve a Humilation medal. I`m not sure if you want to keep this or not, but throwing it in just in case.

It would also be nice to have a message appearing if you don`t have the required key to open the door. It would make it more clear to the player that he was missing the key.

Good job. :up:



_________________
EmeraldProductions
http://emeraldproductions.weebly.com/index.html


Top
                 

Gibblet
Gibblet
Joined: 08 May 2010
Posts: 11
PostPosted: 04-28-2011 01:41 AM           Profile Send private message  E-mail  Edit post Reply with quote


Great project, reminds of Quake1. Been watching this thread closely, hope it goes far :D




Top
                 

Insane Quaker
Insane Quaker
Joined: 08 Jan 2008
Posts: 270
PostPosted: 04-30-2011 08:09 AM           Profile Send private message  E-mail  Edit post Reply with quote


What's exactly the reason why there is no hud or crosshair :)?

Can I control bots so they won't jump or run?



_________________
http://shadowsdomain.wordpress.com/


Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 04-30-2011 10:13 PM           Profile   Send private message  E-mail  Edit post Reply with quote


ShadoW_86 wrote:
What's exactly the reason why there is no hud or crosshair :)?


err, the reason is most likely that you have cg_draw2d set to 0? :paranoid:

ShadoW_86 wrote:
Can I control bots so they won't jump or run?


Not at this time, no. The AI can be made a lot more SP-like, but I really have to sink my teeth in there because AI programming is something have have absolutely zilch knowledge on.




Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 04-30-2011 10:44 PM           Profile   Send private message  E-mail  Edit post Reply with quote


EmeraldTiger wrote:
Dunno if this is tacked down yet, but if you gauntlet a bot (enemy), you still recieve a Humilation medal. I`m not sure if you want to keep this or not, but throwing it in just in case.


Yeah I noticed that the medal awards get kind of annoying, especially when gunning down hordes of enemies and the excellent award just keeps coming. So I removed all awards for single player mode.




Top
                 

Mercenary
Mercenary
Joined: 28 May 2010
Posts: 210
PostPosted: 05-01-2011 02:50 AM           Profile Send private message  E-mail  Edit post Reply with quote


Eraser wrote:
ShadoW_86 wrote:
Can I control bots so they won't jump or run?


Not at this time, no. The AI can be made a lot more SP-like, but I really have to sink my teeth in there because AI programming is something have have absolutely zilch knowledge on.


This is something that could easily be changed by adding new bots with different behaviours to the bot list with the Bot Maker of yours. Of course it won't address the behaviour in general, but at least jumping and running could be fixed.



_________________
Portfolio - My Quake 3 mapping tutorials - My Quake 3 maps


Top
                 

Insane Quaker
Insane Quaker
Joined: 08 Jan 2008
Posts: 270
PostPosted: 05-01-2011 04:22 AM           Profile Send private message  E-mail  Edit post Reply with quote


Eraser wrote:
ShadoW_86 wrote:
What's exactly the reason why there is no hud or crosshair :)?


err, the reason is most likely that you have cg_draw2d set to 0? :paranoid:


Epic fail xP.

About bots - in lower skill modes they tend to not jump or even run (play with Crash on q3dm0 on lowest skill level). Maybe you could use that, and look into bot behaviour files to see why they don't do some things in lower skill levels. I remember there were bot files defining how to behave and what are they weapon preferances.

Also for the future - some kind of bot navigation system would be great :). The best scenario would be if we had new entity (or mybe even use info_bot_roam) with which we could set up simple paths and routes for bots navigation.

Also, there should be a sound when key_entity is used.



_________________
http://shadowsdomain.wordpress.com/


Top
                 

Grunt
Grunt
Joined: 07 Mar 2009
Posts: 65
PostPosted: 05-01-2011 05:32 AM           Profile Send private message  E-mail  Edit post Reply with quote


I have integrated debris in my mod. works well. But i don´t have the smoke trails. Is this set by the mapper in Radiant?

And why you have coded your breakable without launching something? This would be easier as doing the trigger thing with the debrisemitter.



_________________
http://www.per-thormann.de/


Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 05-01-2011 06:09 AM           Profile   Send private message  E-mail  Edit post Reply with quote


Perle wrote:
And why you have coded your breakable without launching something? This would be easier as doing the trigger thing with the debrisemitter.


Explained before in this post.
I will some time look into a solution, but it's not a priority at this moment




Top
                 

Grunt
Grunt
Joined: 07 Mar 2009
Posts: 65
PostPosted: 05-01-2011 10:21 AM           Profile Send private message  E-mail  Edit post Reply with quote


Look at my Q3Rally Code. I have breakables with lauching particles.

http://q3rallysa.svn.sourceforge.net/viewvc/q3rallysa/



_________________
http://www.per-thormann.de/


Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 05-01-2011 12:27 PM           Profile   Send private message  E-mail  Edit post Reply with quote


Sorry if this seems like a dumb question, but where are your G_BreakGlass, G_BREAKWOOD and G_BREAKMETAL functions implemented? Also, I see my func_breakable code is in there. Seems identical to what I have except for calls to the above methods in g_combat.c, but I'm not sure they're related?




Top
                 

Grunt
Grunt
Joined: 07 Mar 2009
Posts: 65
PostPosted: 05-02-2011 10:34 AM           Profile Send private message  E-mail  Edit post Reply with quote


Look in g_misc.c there you can find the following code. :-)
Code:
/*
=================
G_BreakGlass
=================
*/
void G_BreakGlass(gentity_t *ent, vec3_t point, int mod) {
   gentity_t   *tent;
    vec3_t      size;
   vec3_t      center;
    qboolean    splashdmg;
   
   // Lanz: Cleaned up compiler errors.

    // Get the center of the glass
    VectorSubtract(ent->r.maxs, ent->r.mins, size);
    VectorScale(size, 0.5, size);
    VectorAdd(ent->r.mins, size, center);

    // if the health of our glass brush is at 0 we'll break it
    if( ent->health <= 0 ) {
      G_FreeEntity( ent );
   
      switch( mod ) {
         case MOD_GAUNTLET:
            splashdmg = qfalse;
            break;
         default:
            splashdmg = qtrue;
            break;
      }

        // Now we call our EVs(Events) so that cgame can work on it
        switch( splashdmg ){
         case qtrue:
            tent = G_TempEntity( center, EV_BREAK_GLASS );
            tent->s.eventParm = 0;
            break;
         case qfalse:
            tent = G_TempEntity( point, EV_BREAK_GLASS );
            tent->s.eventParm = 0;
            break;
      }
     }
}
  /*QUAKED func_breakwood (1 0 0) (-16 -16 -16) (16 16 16)
    we have breakable wood 
  */
void SP_func_breakwood( gentity_t *ent ) {
  int health;

  // It's a model brush , show it
  trap_SetBrushModel( ent, ent->model );
  // the default health will be set to 25
  G_SpawnInt( "health", "0", &health );
  if( health <= 0 )
   health = 50;

  // set health on the function
  ent->health = health;
  // our function can receive damage
  ent->takedamage = qtrue;
  // that's our new ET(EntityType)
  ent->s.eType = ET_BREAKWOOD;
  // additional brush model
  if ( ent->model2 ) {
      ent->s.modelindex2 = G_ModelIndex( ent->model2 );
  }
  // link the entity ( otherwise nothing will work :) )
  trap_LinkEntity (ent);
}

/*
=================
G_BREAKWOOD
=================
*/
void G_BREAKWOOD(gentity_t *ent, vec3_t point, int mod) {
   gentity_t   *tent;
    vec3_t      size;
    vec3_t      center;
    qboolean    splashdmg;
   
   // Lanz: cleaned up compiler errors.

    // Get the center of the BOX
    VectorSubtract(ent->r.maxs, ent->r.mins, size);
    VectorScale(size, 0.5, size);
    VectorAdd(ent->r.mins, size, center);

    // if the health of our wood brush is at 0 we'll move it
    if( ent->health <= 0 ) {
      G_FreeEntity( ent );
   
      switch( mod ) {
         case MOD_GAUNTLET:
            splashdmg = qfalse;
            break;
         default:
            splashdmg = qtrue;
            break;
      }
       
      // Now we call our EVs(Events) so that cgame can work on it
        switch( splashdmg ){
         case qtrue:
            tent = G_TempEntity( center, EV_BREAKWOOD );
            tent->s.eventParm = 0;
            break;
         case qfalse:
            tent = G_TempEntity( point, EV_BREAKWOOD );
            tent->s.eventParm = 0;
            break;
      }
     }
}

/*QUAKED func_breakmetal (1 0 0) (-16 -16 -16) (16 16 16)
  We have breakable metal in our mod , if you hit it till health 0 it will explode and spawn models
*/
void SP_func_breakmetal( gentity_t *ent ) {
  int health;

  // It's a model brush , show it
  trap_SetBrushModel( ent, ent->model );
  // the default health will be set to 25
  G_SpawnInt( "health", "0", &health );
  if( health <= 0 )
   health = 50;

  // set health on the function
  ent->health = health;
  // our function can receive damage
  ent->takedamage = qtrue;
  // that's our new ET(EntityType)
  ent->s.eType = ET_BREAKMETAL;
  // additional brush model
  if ( ent->model2 ) {
      ent->s.modelindex2 = G_ModelIndex( ent->model2 );
  }
  // link the entity ( otherwise nothing will work :) )
  trap_LinkEntity (ent);
}

/*
=================
G_BreakMetal
=================
*/
void G_BREAKMETAL(gentity_t *ent, vec3_t point, int mod) {
   gentity_t   *tent;
    vec3_t      size;
   vec3_t      center;
    qboolean    splashdmg;
   
   // Lanz: Cleaned up compiler errors.

    // Get the center of the metal
    VectorSubtract(ent->r.maxs, ent->r.mins, size);
    VectorScale(size, 0.5, size);
    VectorAdd(ent->r.mins, size, center);

    // if the health of our metal brush is at 0 we'll break it
    if( ent->health <= 0 ) {
      G_FreeEntity( ent );
   
      switch( mod ) {
         case MOD_GAUNTLET:
            splashdmg = qfalse;
            break;
         default:
            splashdmg = qtrue;
            break;
      }

        // Now we call our EVs(Events) so that cgame can work on it
        switch( splashdmg ){
         case qtrue:
            tent = G_TempEntity( center, EV_BREAKMETAL );
            tent->s.eventParm = 0;
            break;
         case qfalse:
            tent = G_TempEntity( point, EV_BREAKMETAL );
            tent->s.eventParm = 0;
            break;
      }
   }
}



_________________
http://www.per-thormann.de/


Top
                 

Grunt
Grunt
Joined: 07 Mar 2009
Posts: 65
PostPosted: 05-02-2011 10:37 AM           Profile Send private message  E-mail  Edit post Reply with quote


And in cg_effects.c you can find this.
Code:
/*
==================
CG_LaunchShard
==================
*/
void CG_LaunchShard( vec3_t origin, vec3_t velocity, qhandle_t hModel ) {
    int             bounce;
   localEntity_t   *le;
    refEntity_t      *re;

    le = CG_AllocLocalEntity();
    re = &le->refEntity;

    le->leType = LE_FRAGMENT;
    le->startTime = cg.time;
    le->endTime = le->startTime + 30000 + random() * 3000;

    VectorCopy( origin, re->origin );
    AxisCopy( axisDefault, re->axis );
    re->hModel = hModel;

    le->pos.trType = TR_GRAVITY;
    VectorCopy( origin, le->pos.trBase );
    VectorCopy( velocity, le->pos.trDelta );
    le->pos.trTime = cg.time;

    bounce = le->bounceFactor;
   bounce = 0.3;

    le->leFlags = LEF_TUMBLE;
    le->leBounceSoundType = LEBS_BRASS;
    le->leMarkType = LEMT_NONE;
}




/*
===================
CG_BreakGlass

Breaks our brush and generates a few models on launches them all over the map :)
===================
*/

#define   GLASS_VELOCITY   175 //175
#define   GLASS_JUMP      125 //125

void CG_BreakGlass( vec3_t playerOrigin ) {
    vec3_t    origin, velocity;
        int     value;
     int     count = 20; //20
    int     states[] = {1,2,3};
        int     numstates = sizeof(states)/sizeof(states[0]);

    while ( count-- ) {
   
    value = states[rand()%numstates];
    VectorCopy( playerOrigin, origin );
    velocity[0] = crandom() *  165; //165
    velocity[1] = crandom() *  125; //125
   //velocity[2] = 0; //GLASS_JUMP + crandom() * 1; //165
    velocity[2] = GLASS_JUMP + crandom() * 165; //165
   
   switch (value) {
    case 1:
      CG_LaunchShard( origin, velocity, cgs.media.glass01 );
        break;
    case 2:
       CG_LaunchShard( origin, velocity, cgs.media.glass02 );
        break;
    case 3:
       CG_LaunchShard( origin, velocity, cgs.media.glass03 );
    break;
      }
   }
}

  /*
==================
CG_LaunchWood
==================
*/
void CG_LaunchWood( vec3_t origin, vec3_t velocity, qhandle_t hModel ) {
    int             bounce;
   localEntity_t   *le;
    refEntity_t      *re;

    le = CG_AllocLocalEntity();
    re = &le->refEntity;

    le->leType = LE_FRAGMENT;
    le->startTime = cg.time;
    le->endTime = le->startTime + 30000 + random() * 3000;

    VectorCopy( origin, re->origin );
    AxisCopy( axisDefault, re->axis );
    re->hModel = hModel;

    le->pos.trType = TR_GRAVITY;
    VectorCopy( origin, le->pos.trBase );
    VectorCopy( velocity, le->pos.trDelta );
    le->pos.trTime = cg.time;

   bounce = le->bounceFactor;
   bounce = 0.9; //0.3
   //newq3ball   
  /* pm->ps->velocity[2] = -vel * 0.5; //2
   if (pm->ps->velocity[2] <= 0.001) {
    pm->ps->velocity[2] = 0;
*/
//endnew
    le->leFlags = LEF_TUMBLE;
    le->leBounceSoundType = LEBS_BRASS;
    le->leMarkType = LEMT_NONE;
}




/*
===================
CG_BREAKWOOD

Breaks our brush and generates a few (here 1 model) on launches them all over the map :)
===================
*/

#define   BOX_VELOCITY   60 //175
#define   BOX_JUMP      85 //125

void CG_BREAKWOOD( vec3_t playerOrigin ) {
    vec3_t    origin, velocity;
     int     value;
     int     count = 8; //20
     int     states[] = {1,2,3};
        int     numstates = sizeof(states)/sizeof(states[0]);

    while ( count-- ) {
   
    value = states[rand()%numstates];
    VectorCopy( playerOrigin, origin );
    velocity[0] = crandom() *  80; //165
    velocity[1] = crandom() *  125; //125
    velocity[2] = BOX_JUMP + crandom() * 165;  //165
    //velocity[2] = 165;  //165
      //newq3ball   
//  velocity[2] = -velocity[0] * 0.5; //2
// if (velocity[2] <= 0.001) {
// velocity[2] = 0;
// }
//endnew
   switch (value) {
    case 1:
      CG_LaunchWood( origin, velocity, cgs.media.wood01 );
        break;
    case 2:
       CG_LaunchWood( origin, velocity, cgs.media.wood02 );
        break;
    case 3:
       CG_LaunchWood( origin, velocity, cgs.media.wood03 );
    break;
      }
   }
}

  /*
==================
CG_LaunchMetal
==================
*/
void CG_LaunchMetal( vec3_t origin, vec3_t velocity, qhandle_t hModel ) {
    int             bounce;
   localEntity_t   *le;
    refEntity_t      *re;

    le = CG_AllocLocalEntity();
    re = &le->refEntity;

    le->leType = LE_FRAGMENT;
    le->startTime = cg.time;
    le->endTime = le->startTime + 30000 + random() * 3000;

    VectorCopy( origin, re->origin );
    AxisCopy( axisDefault, re->axis );
    re->hModel = hModel;

    le->pos.trType = TR_GRAVITY;
    VectorCopy( origin, le->pos.trBase );
    VectorCopy( velocity, le->pos.trDelta );
    le->pos.trTime = cg.time;

   bounce = le->bounceFactor;
   bounce = 0.9; //0.3

    le->leFlags = LEF_TUMBLE;
    le->leBounceSoundType = LEBS_BRASS;
    le->leMarkType = LEMT_NONE;
}


/*
===================
CG_BREAKMETAL

Breaks our brush and generates a few (here 1 model) on launches them all over the map :)
===================
*/

#define   METAL_VELOCITY   60 //175
#define   METAL_JUMP      85 //125

void CG_BREAKMETAL( vec3_t playerOrigin ) {
    vec3_t    origin, velocity;
     int     value;
     int     count = 8; //20
     int     states[] = {1,2,3};
        int     numstates = sizeof(states)/sizeof(states[0]);

    while ( count-- ) {
   
    value = states[rand()%numstates];
    VectorCopy( playerOrigin, origin );
    velocity[0] = crandom() *  80; //165
    velocity[1] = crandom() *  125; //125
    velocity[2] = METAL_JUMP + crandom() * 165;  //165
    //velocity[2] = 165;  //165
      //newq3ball   
//  velocity[2] = -velocity[0] * 0.5; //2
// if (velocity[2] <= 0.001) {
// velocity[2] = 0;
// }
//endnew
   switch (value) {
    case 1:
      CG_LaunchMetal( origin, velocity, cgs.media.metal01 );
        break;
    case 2:
       CG_LaunchMetal( origin, velocity, cgs.media.metal02 );
        break;
    case 3:
       CG_LaunchMetal( origin, velocity, cgs.media.metal03 );
    break;
      }
   }
}


And they are prototyped in cg_local.h
Code:
void CG_BreakGlass( vec3_t playerOrigin );
void CG_BREAKWOOD( vec3_t playerOrigin );
void CG_BREAKMETAL( vec3_t playerOrigin );



_________________
http://www.per-thormann.de/


Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 05-03-2011 12:57 AM           Profile   Send private message  E-mail  Edit post Reply with quote


Thanks a lot sir. It was basically just this bit of code I needed:
Code:
// Get the center of the glass
VectorSubtract(ent->r.maxs, ent->r.mins, size);
VectorScale(size, 0.5, size);
vectorAdd(ent->r.mins, size, center);


Now there's no longer need for a target_debrisemitter for func_breakable.
I'll leave the target_debrisemitter in there though.




Top
                 

Grunt
Grunt
Joined: 07 Mar 2009
Posts: 65
PostPosted: 05-03-2011 05:51 AM           Profile Send private message  E-mail  Edit post Reply with quote


I also leave it in my code. With other models it could be useful for some other stuff.

EDIT : You credit me in your readme. Nice. Thanks.



_________________
http://www.per-thormann.de/


Top
                 

Mercenary
Mercenary
Joined: 28 May 2010
Posts: 210
PostPosted: 05-06-2011 02:47 PM           Profile Send private message  E-mail  Edit post Reply with quote


*bumping the thread with a new idea you'll might shake your heads over*
In the last time I played Bulletstorm and Borderlands quite a lot. Then I had one of these nostalgic moments and fired up Call of Duty 1. I loaded the last savegame and was right behind a knee-high wall, two foot soldiers and an MG shooting at me. I switched from crouching to standing, was hit, tried to hit the MG myself, failed, switched to crouching, waited for some seconds and tried it again. And I waited for my health to refill. Until I noticed that small bar that had to be green but had changed to dark yellow in the meantime. Right! There was an era of health pickups. Seems I'd forgot that.

After picking off some more enemies (and enyoing the fact that I can understand what both parties yell - being German is really useful sometimes) I found this old energy system slowed down the game quite a lot. There's not so much freedom to try out things. It's always the same F5-try-fail-F9 procedure. If you play a game with energy regeneration on hard difficulties, there's still enough room to fail, but if you don't die, you look for cover, think about why your way of handling the situation was stupid and try it another way.

I know that the entire Quake series uses the old health system. And it's not that I didn't like it when I played the games. But I've come quite used to the health regeneration systems new games have and thought about how it would fit a Quake 3 single player campaign. If this campaign will really exist some day - and I want to contribute at least one level to it, that's for sure - health regeneration could, in my eyes, open the gates for big fights with many foes instead of the old "jeez, these five guys were really mean - where can I get some health now?" question.

What do you think about it? Yes? No? Try it out? Make it optional and let the mapping guys put health pickups everywhere in their maps but add an option to the menu to let the player decide if he wants to use them or let them disappear and use regeneration instead? Or ban my acount for this ignominious thought of adding health regeneration to a Quake game?



_________________
Portfolio - My Quake 3 mapping tutorials - My Quake 3 maps


Last edited by DaEngineer on 05-06-2011 03:43 PM, edited 1 time in total.

Top
                 

Madman Philosophy
Madman Philosophy
Joined: 02 Jan 2008
Posts: 3782
PostPosted: 05-06-2011 03:38 PM           Profile Send private message  E-mail  Edit post Reply with quote


Wow! THAT was a bit manic! :olo: I've, actually seen this question come up before. My own opinion, is to not mess with the health regen at all. I'm with the whole "yer gonna get better" at the game this way. There's still one or two games I never finished because I cannot get past a point without dying. Just my two bits, yah?



_________________
"How do you keep the natives off the booze long enough to pass the test?" Asked of a Scottish driving instructor in 1995.


Top
                 

Immortal
Immortal
Joined: 02 Jun 2006
Posts: 2476
PostPosted: 05-06-2011 03:42 PM           Profile Send private message  E-mail  Edit post Reply with quote


Peenyuh wrote:
I'm with the whole "yer gonna get better" at the game this way.


agree, unless you made it like a global command, set damageregen 1 in worldspawn or something so the mapper can choose...




Top
                 

Immortal
Immortal
Joined: 12 Mar 2005
Posts: 2205
PostPosted: 05-06-2011 04:15 PM           Profile   Send private message  E-mail  Edit post Reply with quote


I personally hate the health regen system. There's no sense of danger with it. You don't actually have to think about the cons of jumping in to a fight or choosing to avoid it. All you have to do is hide behind a cardboard box for a couple seconds and jump back in.

Health pickups actually require you to manage your health and assess the situation instead of just blindly running in rambo style and spraying bullets at enemies while you take shells from tanks, lasers from alien spaceships, and get your face charred from several flamethrowers (but its cool, just hide behind some drying laundry, you'll heal in no time)




Top
                 

Insane Quaker
Insane Quaker
Joined: 05 Nov 2010
Posts: 449
PostPosted: 05-06-2011 04:49 PM           Profile Send private message  E-mail  Edit post Reply with quote


Silicone_Milk wrote:
I personally hate the health regen system.


I don't know why this health system got as popular as it did. The only time I've found it really passable was in Portal. Beyond that, even the way Prey handled life/afterlife seemed kinda silly, and had the same effect on any combat related judgement as you mentioned.




Top
                 

Grunt
Grunt
Joined: 07 Mar 2009
Posts: 65
PostPosted: 05-06-2011 07:47 PM           Profile Send private message  E-mail  Edit post Reply with quote


It could be an option where players can choose. A key in the preferences of health packs an the player can choose what kinda experience of play he would like.



_________________
http://www.per-thormann.de/


Top
                 

Immortal
Immortal
Joined: 12 Mar 2005
Posts: 2205
PostPosted: 05-06-2011 07:54 PM           Profile   Send private message  E-mail  Edit post Reply with quote


Perle wrote:
It could be an option where players can choose. A key in the preferences of health packs an the player can choose what kinda experience of play he would like.


Another point I disagree with - giving the player a wide range of choices on how he'd like to experience a game.

A game designer's job is to design the game to provide a specific experience. Leaving it up to the player is lazy and irresponsible. You really shoot yourself in the foot when you try to play it safe and please everybody by giving them a choice of several mediocre directions rather than sticking to one and providing a single mind-blowing ass-kicking experience.

Might as well be like "well, lets let them choose if they want to play this game as a side-scrolling platformer or an FPS."

Developers need to have the balls to settle on a direction and to cut out options (even if they're great ones) that don't quite fit well with the experience they want delivered to the player imo.




Top
                 

Grunt
Grunt
Joined: 07 Mar 2009
Posts: 65
PostPosted: 05-06-2011 08:26 PM           Profile Send private message  E-mail  Edit post Reply with quote


Okay. Touchdown for you. :-)



_________________
http://www.per-thormann.de/


Top
                 

Insane Quaker
Insane Quaker
Joined: 08 Jan 2008
Posts: 270
PostPosted: 05-06-2011 11:25 PM           Profile Send private message  E-mail  Edit post Reply with quote


Silicone_Milk wrote:
I personally hate the health regen system. There's no sense of danger with it. You don't actually have to think about the cons of jumping in to a fight or choosing to avoid it. All you have to do is hide behind a cardboard box for a couple seconds and jump back in.


THIS.



_________________
http://shadowsdomain.wordpress.com/


Top
                 

Immortal
Immortal
Joined: 02 Jun 2006
Posts: 2476
PostPosted: 05-06-2011 11:26 PM           Profile Send private message  E-mail  Edit post Reply with quote


that is why i said make it a worldspawn key in gtk. the designer can define the game health system.




Top
                 

Mercenary
Mercenary
Joined: 28 May 2010
Posts: 210
PostPosted: 05-07-2011 01:37 AM           Profile Send private message  E-mail  Edit post Reply with quote


Really good arguments. The missing feeling of danger mentioned by Silicone_Milk is why I thought "IF the mod will have the system available, everything else than the hardest difficulty is beyond question for me". Don't get me wrong, I'm not the kind of player who wants to win all of the time, that's boring and equals playing in God mode. I agree that health regeneration in general is too fast in modern games.
But since I posted the question, I thought about it again, read all of your statements and think, you're right about this. Especially this
Silicone_Milk wrote:
A game designer's job is to design the game to provide a specific experience. Leaving it up to the player is lazy and irresponsible

is something that, I have to admit, I didn't think about. Serious Sam is the living example of a shooter with too many enemies to get a foot on the ground and the old health system at the same time. And it works.

---

Another thing came to my mind, concerning health. From time to time, you'll encounter passages in games where you have to try not to fall down abysses and work your way from the top to the bottom of a pit. It's impossible to make such a level with the current health system, as dropping down from a high position will always just deal 10 damage to the player. Nobody would take the long way down if he can jump down the entire 400m pit without dying. Is this something that should be changed or does the player benefit from it in your eyes?



_________________
Portfolio - My Quake 3 mapping tutorials - My Quake 3 maps


Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 05-07-2011 07:02 AM           Profile   Send private message  E-mail  Edit post Reply with quote


Regenerative health doesn't work in Q3 (or entityplus for that matter). It doesn't work with the style of gameplay Quake games offer, both SP and MP. Oh, and taking on 12 cannonfodder bots at once is fun. Trust me, I know, and soon you will too ;-)

As for falling dmg, have to look into that. In the meantime, there's always trigger_hurt for preventing shortcuts into abysses.




Top
                 

Mentor
Mentor
Joined: 12 Mar 2005
Posts: 3958
PostPosted: 05-07-2011 07:50 AM           Profile Send private message  E-mail  Edit post Reply with quote


Eraser wrote:
As for falling dmg, have to look into that. In the meantime, there's always trigger_hurt for preventing shortcuts into abysses.

mod=MOD_FALLING in G_Damage() in game/g_combat.c. Up the damage to something ridiculously high and those pesky players will soon learn to stop jumping off things.




Top
                 

Insane Quaker
Insane Quaker
Joined: 26 Nov 2009
Posts: 341
PostPosted: 05-08-2011 02:05 AM           Profile Send private message  E-mail  Edit post Reply with quote


Maybe this is a bit an utopian idea about the regen system: Only the first difficulty level has health regen but as many enemies as the second. The second difficulty lvl has no health regen but as many enemies as the first. And in the third you don't have health regen, more enemies and even no crosshair.
Maybe the player is willing to learn in the first two difficulty lvls how to deal with the different situtations and the geometry of the level and using it in the third. Also a possibility is to add awards for each difficulty... For me the 100% are a must in a game I like. Hm...

The no crosshair (I know many here don't like the game): In CoD6 there is a mission in the single player campaign in which a EMP bomb detonates. Therefore you can't use the laser pointer on your gun anymore and need to get across the rest of the mission without cross and laser. It still works extremely well, because you learned how to deal with the weapons and the center of the screen in the missions before...

My 2 cents.




Top
                 

This is not Æon!
This is not Æon!
Joined: 20 Jan 2002
Posts: 2222
PostPosted: 05-08-2011 02:20 AM           Profile Send private message  E-mail  Edit post Reply with quote


Don't alter the fall damage too much, remember that you still might wanna rocket jump (miss) and also when you land from JPs, etc.

Uh, I don't think it's a vise idea to alter the health system. It's still Quake - and today it could be considered a strong feature to have health pickups.



_________________
Q3Map2 2516 -> http://www.zfight.com/misc/files/q3/q3map_2.5.16_win32_x86.zip
Q3Map2 FS_20g -> http://www.zfight.com/misc/files/q3/q3map2_fs_20g.rar
GtkRadiant 140 -> http://www.zfight.com/misc/files/q3/GtkRadiantSetup-1.4.0-Q3RTCWET.exe


Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 05-08-2011 02:49 AM           Profile   Send private message  E-mail  Edit post Reply with quote


Yup, I'm not too fond about altering the health system either. As for falling damage, maybe it should scale differently or get rid of the 10 health cap. Wouldn't want to get 50 damage for jumping off a doorstop.




Top
                 

This is not Æon!
This is not Æon!
Joined: 20 Jan 2002
Posts: 2222
PostPosted: 05-08-2011 02:52 AM           Profile Send private message  E-mail  Edit post Reply with quote


Maybe the cap could be extended to 50 or 75 instead of 10, that way you will feel the damage more when you fall longer.

If one really want to restrict the player, lava or whatever should be used.



_________________
Q3Map2 2516 -> http://www.zfight.com/misc/files/q3/q3map_2.5.16_win32_x86.zip
Q3Map2 FS_20g -> http://www.zfight.com/misc/files/q3/q3map2_fs_20g.rar
GtkRadiant 140 -> http://www.zfight.com/misc/files/q3/GtkRadiantSetup-1.4.0-Q3RTCWET.exe


Top
                 

Recruit
Recruit
Joined: 08 May 2011
Posts: 6
PostPosted: 05-08-2011 01:56 PM           Profile Send private message  E-mail  Edit post Reply with quote


here's a patch to get you started with AI waypoints: https://code.google.com/p/entityplus/is ... tail?id=53




Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 05-08-2011 11:31 PM           Profile   Send private message  E-mail  Edit post Reply with quote


Just uploaded vesrsion 0.5.1 of the mod to Google Code. I actually uploaded 0.5 yesterday but noticed there was a problem with some missing assets, but before I could fix it some people had already downloaded, so the 0.5.1 is the one you need.

Here's the list of changes since 0.4:

  • [Added] health key to target_botspawn in entities.def.
  • [Added] entities.def mentioning a wait key of -2 for func_button.
  • [Added] message key to trigger_lock.
  • [Added] target_objective displays "objectives updated" message in screen when triggered.
  • [Added] count key and DARK_DEBRIS spawnflag to func_breakable so it can spew out debris without a target_debrisemitter
  • [Added] New ep_example map which replaces the old entityplus map.
  • [Added] EntityPlus manual for level designers
  • [Fixed] target_print does not display any text in single player
  • [Fixed] entities.def entry for shooter_bfg refers to shooting grenades.
  • [Fixed] Game crashes when bots receive damage from world hazards (lava/slime/cratering/etc).
  • [Fixed] light/color keys on func_ entities for proper use of constantLight
  • [Changed] Suicide no longer subtracts a kill in single player mode.
  • [Changed] Score plums are no longer shown in single player mode.
  • [Changed] Items no longer respawn in single player mode unless a specific value for the 'wait' key was specified.
  • [Changed] Shaders and icons for skeleton keys have been updated
  • [Changed] Awards (humiliation/impressive/excellent) are no longer rewarded in single player mode for improved game immersion.
  • [Changed] Improved description of target_logic in entities.def

It's basically some fixes and tweaks. No real big new features.

However, there's two interesting things. First, there's a manual. I quickly whipped up a document that describes all of the new features and things you need to know to start creating levels for EntityPlus. It's a PDF located in the "docs" folder.

The second is the new example map. It's a redesigned version of an old classic that you'll instantly recognize. I've reworked it into a single player experience. It features enemies, lock and key, breakable walls, objectives, relatively complex trigger systems, alarms, lighting effects and an end-game cinematic. Double click the "entityplus.bat" file that comes with the package and enjoy :)

https://code.google.com/p/entityplus/downloads/list




Last edited by Eraser on 05-08-2011 11:33 PM, edited 1 time in total.

Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44131
PostPosted: 05-08-2011 11:33 PM           Profile   Send private message  E-mail  Edit post Reply with quote


cyr wrote:
here's a patch to get you started with AI waypoints: https://code.google.com/p/entityplus/is ... tail?id=53


That's awesome man. Thanks a lot, I'll take a peek at it soon.




Top
                 
Quake3World.com | Forum Index | Level Editing & Modeling


Post new topic Reply to topic


cron
Quake3World.com
© ZeniMax. Zenimax, QUAKE III ARENA, Id Software and associated trademarks are trademarks of the ZeniMax group of companies. All rights reserved.
This is an unofficial fan website without any affiliation with or endorsement by ZeniMax.
All views and opinions expressed are those of the author.