[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4787: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4789: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4790: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4791: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
InsideQC Forums • View topic - Question regarding making a "CSQC-game"

Question regarding making a "CSQC-game"

Discuss programming in the QuakeC language.

Moderator: InsideQC Admins

Question regarding making a "CSQC-game"

Postby Urre » Sun Jan 24, 2010 9:30 pm

I was once a Quake modder
User avatar
Urre
 
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon

Re: Question regarding making a "CSQC-game"

Postby Spike » Mon Jan 25, 2010 12:46 am

- What's the minimum SVQC I need to do in order to create a singleplayer game entirely in CSQC?

You need a compatible progs. All it needs to do is sit there and do nothing, basically. System functions need to be stubs. You probably want to stub the spawn functions too. Just empty functions.

- Can CSQC read map objects and spawn them like SVQC?

FTE yes, DP no.
The csprogs does the parsing itself.

- Does PVS work the same in CSQC?

Not entirely sure in what regard.
PVS is technically an optimisation rather than a specific feature.
Only pvs-visible ents are sent to clients, unless its set to send all ents. So yes, you can get ents removed and readded as the player moves around.
inside the csprogs, pvs is invisible to the csprogs. The engine just doesn't draw stuff that cannot be visible.

- What about savegames?

csqc doesn't save games.
The data needs to be fully replicatable. Stats and visible ents. Newly visible ents can have specific flags to send stuff if needed.

- Am I missing some important points regarding making a singleplayer game using as little SVQC and as much CSQC as possible?

You will need to implement movetypes yourself. Other than that, there's no reason that you cannot.
You cannot save the game in csqc unless you make your own save game function, or if you replicate the data to the server to. You can make your own save function though.
.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Postby Urre » Mon Jan 25, 2010 2:03 am

What about reading input for movement? How crazy complicated is it? I'm guessing this is kind of tying in with clientside prediction of movement :P

I actually meant pvs like monsters seeing you or not, gameplay related stuff basicly.

Bmodels are collideable and can push stuff?
I was once a Quake modder
User avatar
Urre
 
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon

Postby Spike » Mon Jan 25, 2010 2:11 am

- What about reading input for movement? How crazy complicated is it? I'm guessing this is kind of tying in with clientside prediction of movement :P

Prediction works thusly: The client generates input frames in a list. Its a ring buffer, basically. You grab the frames from 'acknowledged' to 'current' and apply those input packets to the state of the player. The result is your predicted player.
In a server-less environment you can use the same builtin, but go from 'last frame' to 'current', then save off current as last frame so as to avoid duplicates. (normally acknowleged increases in jumps or so).


- I actually meant pvs like monsters seeing you or not, gameplay related stuff basicly.

There's an fte extension builtin which will give a quick pvs success/fail result if really needed. Its not specifically csqc.
monster's sight is traditionally implemented using tracelines, not pvs.

- Bmodels are collideable and can push stuff?

bmodels are solid, but in the base csqc spec they do not push (this is because there is no .movetype support in the base csqc spec - and thus no think/nextthink either, although that's not always an issue - it was meant to be a followup extension as the engine needs a lot of code, and I wanted a spec that was remotely plausable without rewriting the entire engine from scratch straight off).
.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Postby LordHavoc » Mon Jan 25, 2010 3:22 am

LordHavoc
 
Posts: 322
Joined: Fri Nov 05, 2004 3:12 am
Location: western Oregon, USA

Postby Spike » Mon Jan 25, 2010 3:32 am

movetype_push has slightly different nextthink semantics from other movetypes. and without movetypes, those semantics cannot be fully honoured, hence no thinks.
but yeah, you can emulate it in predraw just fine, even if its never drawn, so I never saw this as a major issue.
DP supporting it might be, but mneh, better to get on with full movetypes support.
.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Postby Urre » Mon Jan 25, 2010 3:36 am

Checking pvs before doing a traceline can be a useful optimization, just saying.

But yes, I'm not entirely sure how to interpret the pusher-stuff. Can I or can I not have doors and lifts? Is it done somehow different from SSQC?

DP really should add the ability to load mapobjects.
I was once a Quake modder
User avatar
Urre
 
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon

Postby LordHavoc » Mon Jan 25, 2010 11:22 am

LordHavoc
 
Posts: 322
Joined: Fri Nov 05, 2004 3:12 am
Location: western Oregon, USA

Postby Spike » Mon Jan 25, 2010 11:49 am

.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Postby LordHavoc » Mon Jan 25, 2010 11:49 am

LordHavoc
 
Posts: 322
Joined: Fri Nov 05, 2004 3:12 am
Location: western Oregon, USA

Postby LordHavoc » Mon Jan 25, 2010 11:50 am

LordHavoc
 
Posts: 322
Joined: Fri Nov 05, 2004 3:12 am
Location: western Oregon, USA

Postby Urre » Mon Jan 25, 2010 12:03 pm

I was once a Quake modder
User avatar
Urre
 
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon

Postby Spike » Mon Jan 25, 2010 12:41 pm

.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Postby LordHavoc » Mon Jan 25, 2010 12:46 pm

LordHavoc
 
Posts: 322
Joined: Fri Nov 05, 2004 3:12 am
Location: western Oregon, USA

Postby Urre » Mon Jan 25, 2010 10:32 pm

Looks very, very interesting, although it seems to me like the rotational pushing is either incomplete or I'm missing something? I'm having trouble following how pushstartforward and those actually work, and am suspecting those do the magic, really. You say they're not being set, and I don't really see how they'd be set, making this code hard for me to base anything on. Otherwise awesome stuff!
I was once a Quake modder
User avatar
Urre
 
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon

Next

Return to QuakeC Programming

Who is online

Users browsing this forum: No registered users and 1 guest