Talk:Simulated Bullets: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(31 intermediate revisions by 2 users not shown)
Line 4: Line 4:
[snip]
[snip]


I was thinking that too...I put a constructor and deconstructor in the manager that prints warnings saying created and destroyed...I'll see if it's destroying it too soon then&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 19:19, 27 Nov 2005 (PST)
[snip2]


Ok...I made it so it creates the manager when it does the clientshared thing...haven't tried restarting the server and seeing if it's still intact yet tho...what I did b4 was made it when the clientdll initialized WHICH ISN"T GOODZ!&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 19:32, 27 Nov 2005 (PST)
Wait, maybe I'm talking about something else... You said that in <code>CUtlMemory<T>::operator[]( int )</code> you found <code>m_pMemory</code> to be null. ''Where'' in the function were you? I assumed (foolishly) that you meant at the second line. If you were checking as you first entered the function, though, then it's OK, because <code>m_nAllocationCount</code> will be zero and therefore the <code>Assert</code> will fail. If <code>CUtlMemory<T>::operator[]( int )</code> is being called when <code>m_nAllocationCount</code> is zero, though, then the calling code is at fault for using an illegal index. &mdash;'''[[User:Maven|Maven]]''' <sup>([[User talk:Maven|talk]])</sup> 17:57, 3 Dec 2005 (PST)


Now it fails <code>Assert( !"CreateNoSpawn: only works for CBaseEntities" );</code>.
I don't see why it's doing what it's doing...I'm so lost; I'm just gonna make the linked list global...that should solve it&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 18:30, 3 Dec 2005 (PST)


server.dll!CBaseEntity::CreateNoSpawn(const char * szName=0x22a8b92c, const Vector & vecOrigin={...}, const QAngle & vecAngles={...}, CBaseEntity * pOwner=0x00000000)  Line 2451 + 0x69 C++
As I thought...it works marvelously now..time to move on to other errors&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 18:37, 3 Dec 2005 (PST)
server.dll!CBaseEntity::Create(const char * szName=0x22a8b92c, const Vector & vecOrigin={...}, const QAngle & vecAngles={...}, CBaseEntity * pOwner=0x00000000)  Line 2436 + 0x15 C++
server.dll!CGameRules::CreateStandardEntities()  Line 552 + 0x16 C++
server.dll!CHL2MPRules::CreateStandardEntities()  Line 183 C++
server.dll!CWorld::Precache() Line 605 C++
server.dll!CWorld::Spawn()  Line 513 C++
server.dll!DispatchSpawn(CBaseEntity * pEntity=0x0bd13400)  Line 1727 C++
server.dll!MapEntity_ParseAllEntities(const char * pMapData=0x118cf1d8, IMapEntityFilter * pFilter=0x00000000, bool bActivateEntities=false)  Line 329 + 0xc C++
server.dll!CServerGameDLL::LevelInit_ParseAllEntities(const char * pMapEntities=0x118cf040)  Line 27 + 0xd C++
server.dll!CServerGameDLL::LevelInit(const char * pMapName=0x0de1fb10, const char * pMapEntities=0x118cf040, const char * pOldLevel=0x00000000, const char * pLandmarkName=0x00000000, bool loadGame=false, bool background=false) Line 700 C++


szName "bullet_manager" const char *
:Erm, OK... I hope that that fixed the bug rather than just hiding it. It will be ''well'' worth your time to learn strong debugging skills, though. &mdash;'''[[User:Maven|Maven]]''' <sup>([[User talk:Maven|talk]])</sup> 12:48, 4 Dec 2005 (PST)
vecOrigin {x=0.00000000 y=0.00000000 z=0.00000000 } const Vector &
vecAngles {x=0.00000000 y=0.00000000 z=0.00000000 } const QAngle &
pOwner 0x00000000 CBaseEntity *


&mdash;'''[[User:Maven|Maven]]''' <sup>([[User talk:Maven|talk]])</sup> 20:10, 27 Nov 2005 (PST)
I'm currently revamping part of it to use the tempent system...it'll be better!&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 19:45, 4 Dec 2005 (PST)


well I did LINK_ENTITY_TO_CLASS...do you have that?&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 20:30, 27 Nov 2005 (PST)
Revert highlights:
[http://developer.valvesoftware.com/w/index.php?title=Simulated_Bullets&diff=0&oldid=18448] & [http://developer.valvesoftware.com/w/index.php?title=Simulated_Bullets&diff=18448&oldid=18447]&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 19:59, 4 Dec 2005 (PST)


I solved it not thinking on the client...but now it's giving me an assert when <code>SetNextClientThink( TICK_NEVER_THINK );</code> in <code>RemoveBullet</code> is done&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 20:53, 27 Nov 2005 (PST)
I want to reimplement this so there's a DrawModel function for the bullets...the problem is I only change the origin every centisecond...
 
My question is how should I go by doing this?
* Should I instead simulate the bullet every frame
* Should I make the DrawModel move at the same speed through the centisecond
** This requires direction * speed * time & could look jittery when penetration occurs
If I also made the CSimulatedBullet into an interface with this DrawModel addition, it'd be possible to show how to reimplement the crossbow so the bolts are predicted.
 
Sampley:
<pre>class ISimulatedBullet
{
public:
virtual bool StartSolid(trace_t &ptr, Vector &vecNewRay) = 0;
virtual bool AllSolid(trace_t &ptr) = 0;
virtual bool EndSolid(trace_t &ptr) = 0;
#ifdef CLIENT_DLL
virtual bool SimulateBullet(void) = 0;
#else
virtual void EntityImpact(trace_t &ptr) = 0;
virtual bool SimulateBullet(float flLagCompensation=-1) = 0;
#endif
};</pre>&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 06:03, 5 Dec 2005 (PST)
 
New bugs:
* Multiplayer crashy stuff (Game crashes on quit command issued)
* GetTargetTick doesn't work (Tested only on localhost)
&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 19:30, 5 Dec 2005 (PST)
 
Maven...uncomment this:
The bullets will know when they're being fired so in <code>CHL2MP_Player::WantsLagCompensationOnEntity</code>
{| style="background: transparent;"
| Comment out || <pre> if ( !( pCmd->buttons & IN_ATTACK ) && (pCmd->command_number - m_iLastWeaponFireUsercmd > 5) )
return false;</pre>
|}
&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 19:33, 5 Dec 2005 (PST)
 
if someone'd like to assist me in totally revamping this with a CAutoGameSystem, contact me&mdash;'''[[User:Ts2do|ts2do]]'''&nbsp;<sup>([[User talk:Ts2do|Talk]]&nbsp;|&nbsp;[mailto:tsdodo@gmail.com @])</sup> 01:17, 30 Dec 2005 (PST)

Latest revision as of 02:17, 30 December 2005

I'd really like assistance with this if anyone can do any implementation of this or any fixes to the bullet simulator... implementation includes making the gun shoot them out, making the bullets hurt, and making clientside effects... I have a feeling that other mods WILL want to use timed bullets, and this code will do the trick... I just need help (or plenty of time) getting it finished first and then it will be available to everyone!—ts2do (Talk | @) 23:06, 20 Nov 2005 (PST)

Yes ts2do (you went away before i came back), the myth was busted, best to contact Wrayith at Nightfall mod for more info. He was interested, and was implementing something like this with the quake 2 code, and was going to port it to hl2 latter. MSN wraiyth@gmail.com --Amckern 01:07, 21 Nov 2005 (PST)

[snip]

[snip2]

Wait, maybe I'm talking about something else... You said that in CUtlMemory<T>::operator[]( int ) you found m_pMemory to be null. Where in the function were you? I assumed (foolishly) that you meant at the second line. If you were checking as you first entered the function, though, then it's OK, because m_nAllocationCount will be zero and therefore the Assert will fail. If CUtlMemory<T>::operator[]( int ) is being called when m_nAllocationCount is zero, though, then the calling code is at fault for using an illegal index. —Maven (talk) 17:57, 3 Dec 2005 (PST)

I don't see why it's doing what it's doing...I'm so lost; I'm just gonna make the linked list global...that should solve it—ts2do (Talk | @) 18:30, 3 Dec 2005 (PST)

As I thought...it works marvelously now..time to move on to other errors—ts2do (Talk | @) 18:37, 3 Dec 2005 (PST)

Erm, OK... I hope that that fixed the bug rather than just hiding it. It will be well worth your time to learn strong debugging skills, though. —Maven (talk) 12:48, 4 Dec 2005 (PST)

I'm currently revamping part of it to use the tempent system...it'll be better!—ts2do (Talk | @) 19:45, 4 Dec 2005 (PST)

Revert highlights: [1] & [2]ts2do (Talk | @) 19:59, 4 Dec 2005 (PST)

I want to reimplement this so there's a DrawModel function for the bullets...the problem is I only change the origin every centisecond...

My question is how should I go by doing this?

  • Should I instead simulate the bullet every frame
  • Should I make the DrawModel move at the same speed through the centisecond
    • This requires direction * speed * time & could look jittery when penetration occurs

If I also made the CSimulatedBullet into an interface with this DrawModel addition, it'd be possible to show how to reimplement the crossbow so the bolts are predicted.

Sampley:

class ISimulatedBullet
{
public:
	virtual bool StartSolid(trace_t &ptr, Vector &vecNewRay) = 0;
	virtual bool AllSolid(trace_t &ptr) = 0;
	virtual bool EndSolid(trace_t &ptr) = 0;
#ifdef CLIENT_DLL
	virtual bool SimulateBullet(void) = 0;
#else
	virtual void EntityImpact(trace_t &ptr) = 0;
	virtual bool SimulateBullet(float flLagCompensation=-1) = 0;
#endif
};

ts2do (Talk | @) 06:03, 5 Dec 2005 (PST)

New bugs:

  • Multiplayer crashy stuff (Game crashes on quit command issued)
  • GetTargetTick doesn't work (Tested only on localhost)

ts2do (Talk | @) 19:30, 5 Dec 2005 (PST)

Maven...uncomment this: The bullets will know when they're being fired so in CHL2MP_Player::WantsLagCompensationOnEntity

Comment out
	if ( !( pCmd->buttons & IN_ATTACK ) && (pCmd->command_number - m_iLastWeaponFireUsercmd > 5) )
		return false;

ts2do (Talk | @) 19:33, 5 Dec 2005 (PST)

if someone'd like to assist me in totally revamping this with a CAutoGameSystem, contact me—ts2do (Talk | @) 01:17, 30 Dec 2005 (PST)