The idea that engine choice dictates if a game is good quality or not is incredibly ignorant.
Don't be stupidTwo insults in two replies this day. We are giving oppinions, we are not here to be insulted because of them. We love that anyone could discount our opinions, but beware of insulting someone for giving them.
If you're getting bad framerates, I'd rather say it's your design that pushes things too far. The engine simply isn't made for it. So, you should optimise it.No, it is not about framerates. Some games require the right atmosphere and that could be only achieved through the use of the right engine. The sensations of playing doom 2016 are not the same of playing Doom 1, right? Just that, if you discover that fps are droping is time to optimize, but if your game don´t work as intended with thte minimum elements, maybe is time to jump to another more powerful one, unless you are Solokiller and create your own.
Furthermore, a "masterpiece" can be made in any engine. The idea that engine choice dictates if a game is good quality or not is incredibly ignorant.Eeerrrr... No, if the engine is limited, so are you, at least if you want to do a decent FPS. Even Brutaldoom have had to move from id1 to another ports just because the id1 was weak to show and move what BD has to show .
Well, I can be a bit abrupt sometimesYes , but you help people a lot. That´s what counts in the end.
You shouldn't make any decisions yet, this project is far from complete. I'd suggest checking out tutorials for basic Hello World stuff first, then maybe WPF since it requires the use of many language features.Ok. I´ll finish all the graphics left undone (the code is 99,99% done) and I´ll keepseeing how SL grow and evolves. Thanks Solokiller (as always)
If you want a better engine other than Xash then you'll have to wait.You caught me!! But, If it can load original content like the original HL does I will wait for sure. Also It appears to work without vgui.dll, which´s the major limitation of Xash when it comes to go greenlightened on STEAM, right? , I´m with ZWC for the last 14 years, one more will not harm me.
and i have coded projectile bullets before. based on ar grenadeBetter use hornetgun... But the entity limit is a problem (BIG PROBLEM) as you say. How much entities will support SL at a time before struggling?, also, and remember that I am quite an ignorant in coding, will it depend of the PC specs or this number will adapt itself independently of the system on which SL will run on?
// Particle Burst
MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY );
WRITE_BYTE( TE_TELEPORT );
WRITE_COORD(pev->origin.x);
WRITE_COORD(pev->origin.y);
WRITE_COORD(pev->origin.z);
WRITE_BYTE( 0 );
WRITE_BYTE( 0 );
WRITE_BYTE( 3 ); // life
WRITE_BYTE( 24); // width
WRITE_BYTE( 5 ); // noise
MESSAGE_END( );
I want it to be BIGGER, yes it plays, but is small, I want it to reach a farther distance. I have tried different values for life, width, and noise, but it accelerates the shockwaves, the burst remain the same. Any ideas? count++;
if(count>=6)
{
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]+=25;//Erase if it works!!
if (FBitSet(m_pPlayer->pev->flags, FL_FAKECLIENT)){m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]+=101;}// For Bots Only
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.4;
count=0;// Reset Counter
}
Of course int count is already declared in crowbar code in weapons.h//=====================================================================
// FEMP
// 30-Nov-2018 1er. Intento de que lo usen los BOTS
//=====================================================================
if ((pev->weapons & (1<<WEAPON_FEMP)) )
{
if (
((distance < 100) && (distance > 10 ) && ( fempshot == 0 ))
&& (weapon_choice == 0)
&& (weapon_choice == WEAPON_FEMP)
|| (primary_ammo[WEAPON_TWOHAND] < 10)
|| ( primary_ammo[WEAPON_SHORYUKEN] < 10 )
|| ( primary_ammo[WEAPON_SIEGE] < 10 )
|| ( primary_ammo[WEAPON_MJOLNIR] < 10 )
|| ( primary_ammo[WEAPON_SHREDDER] < 10 )
)
{
if (primary_ammo[WEAPON_FEMP] > 0) // check if the bot has any ammo left for this weapon...
{
if (m_pActiveItem != new_weapon)// check if the bot isn't already using this item...
SelectItem("weapon_femp"); // select the FEMP
pev->button |= IN_ATTACK; // use primary attack (bang! bang!)
f_shoot_time = gpGlobals->time + 10.0 + RANDOM_FLOAT(primary_fire_delay[WEAPON_FEMP][bot_skill][0],primary_fire_delay[WEAPON_FEMP][bot_skill][1]); // set next time to shoot
fempshot +=1; // Damos un fempshot para limitar su uso
return TRUE;
if ( ( pev->health <= 100 ) )
{
pev->button |= IN_ATTACK2;
} // Posicion original del codigo del AUTO-HEALTH
if ( f_shoot_time = gpGlobals->time = 15.0 )
{
fempshot -=1;
}
}
}
}
return FALSE;
}
And this:
//=============================================================================================
// WEAPON URAKEN/CROWBAR I cannot make the bot use this weapon!!! I suck in coding...4-May-2015
// GOT IT!! 24-November-2018 but with Issues...
//=============================================================================================
if (pev->weapons & (1<<WEAPON_CROWBAR))
{
if (
(distance == 0)
&& (weapon_choice == 0)
|| (( fempshot == 1) && ( f_shoot_time = gpGlobals->time == 0.0 ))
&& (weapon_choice == WEAPON_CROWBAR)
|| ( primary_ammo[WEAPON_TWOHAND] ==0 )
|| ( primary_ammo[WEAPON_SHORYUKEN] ==0 )
|| ( primary_ammo[WEAPON_SIEGE] ==0 )
|| ( primary_ammo[WEAPON_MJOLNIR] ==0 )
|| ( primary_ammo[WEAPON_SHREDDER] ==0 )
)
{
new_weapon = weapon_ptr[WEAPON_CROWBAR];
{
if (m_pActiveItem != new_weapon)// check if the bot isn't already using this item...
SelectItem("weapon_crowbar"); // select the crowbar
pev->button |= IN_ATTACK; // use primary attack (whack! whack!)
f_shoot_time = gpGlobals->time + 4.0 + RANDOM_FLOAT(primary_fire_delay[WEAPON_CROWBAR][bot_skill][0],primary_fire_delay[WEAPON_CROWBAR][bot_skill][1]);
return TRUE;
}
}
}
//========================================================================================
Well. What I obtained is that the Bots now "seem" to act differently: some of them use one weapon and others use a different weapon, but, if one or two of them are slightly close to each ohter, they tend to use the same weapon. For them to use a diferent weapon the distance must be much bigger i.e: one in the outer circle and the ohter in the third farthest of the bridges. void CBot::Spawn( )
{
char c_skill[2];
char c_index[3];
CBasePlayer::Spawn();
pev->flags = FL_CLIENT | FL_FAKECLIENT;
// set the respawn index value based on key from BotCreate
strcpy(c_index, GET_INFO_KEY_VALUE(GET_INFOBUFFER(edict( )), "index") );
sscanf(c_index, "%d", &respawn_index);
bot_respawn[respawn_index].pBot = (CBasePlayer *)this;
// get the bot's name and save it in respawn array...
strcpy(bot_respawn[respawn_index].name, STRING(pev->netname));
bot_respawn[respawn_index].state = BOT_IDLE;
pev->ideal_yaw = pev->v_angle.y;
pev->yaw_speed = BOT_YAW_SPEED;
// bot starts out in "paused" state since it hasn't moved yet...
bot_was_paused = TRUE;
v_prev_origin = pev->origin;
f_shoot_time = 0;
fempshot = 0;// Nuevo para la IA del BOT y que use el FEMP
// get bot's skill level (0=good, 4=bad)
strcpy(c_skill, GET_INFO_KEY_VALUE(GET_INFOBUFFER(edict( )), "skill") );
sscanf(c_skill, "%d", &bot_skill);
bot_skill--; // make 0 based for array index (now 0-4)
f_max_speed = 42;
// pick a wander direction (50% of the time to the left, 50% to the right)
if (RANDOM_LONG(1, 100) <= 50)
wander_dir = WANDER_LEFT;
else
wander_dir = WANDER_RIGHT;
f_pause_time = 0;
f_find_item = 0;
if (g_pGameRules->IsTeamplay()) // is team play enabled?
{
strcpy(model_name, g_pGameRules->GetTeamID(this));
}
else
{
strcpy(model_name, GET_INFO_KEY_VALUE(GET_INFOBUFFER(edict( )), "model") );
}
CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pev);//NEW
bot_model = 0;
if (strcmp( model_name, "abbadon" ) == 0)
{
bot_model = MODEL_ABBADON;
}
else if (strcmp( model_name, "manheym") == 0)
{
bot_model = MODEL_MANHEYM;
}
else if (strcmp( model_name, "blitzkrieg") == 0)
{
bot_model = MODEL_BLITZKRIEG;
}
else if (strcmp( model_name, "berserk") == 0)
{
bot_model = MODEL_BERSERK;
}
f_pain_time = gpGlobals->time + 5.0;
f_weapon_inventory_time = 0;
f_dont_avoid_wall_time = 0;
pBotEnemy = NULL;
pBotUser = NULL;
switch(RANDOM_LONG(1,4))
{
case 1:pPlayer->BotTeam( pPlayer, TEAM1_NAME );pPlayer->m_class = 1;break;//NEW
case 2:pPlayer->BotTeam( pPlayer, TEAM2_NAME );pPlayer->m_class = 2;break;//NEW
case 3:pPlayer->BotTeam( pPlayer, TEAM3_NAME );pPlayer->m_class = 3;break;//NEW
case 4:pPlayer->BotTeam( pPlayer, TEAM4_NAME );pPlayer->m_class = 4;break;//NEW
}
}
Sorry if I did not posted it before.