Discuss programming topics for any language, any source base. If it is programming related but doesn't fit in one of the below categories, it goes here.
Moderator: Inside3D Admins
.qc files do not have anything to do with the engine. The engine files are .c
Engine is written in C (and a bit of C++ for the PSP). This is the "binary" like glquake.exe would be on Windows (on the PSP it would be a pbp file, as I recall).
QuakeC is what makes a progs.dat file, files like weapon.qc, client.qc etc.
The Kurok PSP engine is open source. The QuakeC source (the game logic and so forth) wasn't released.
You can obtain the QuakeC source for Quake at ftp://ftp.idsoftware.com/idstuff/unsup/progs106.zip
Jukki wrote:actuay baker, hate to say. But you are wrong about qc
qc files ARE released
Cool And to think I've been remastering the Kurok QC that MDave gave me quite a while back not knowing quite for sure if it was ok to share the source or not
[Among other things, I've been taking a lot of MDave's interesting innovations that involved non-standard methods and turning them into standardized ways of doing things. MDave implemented maybe 15-20 really interesting things that can't be done "properly" and stepping back and implementing them "properly". Combined with ideas that have tossed around on this board, things that Spirit talks about, some of the RMQ project ideas, things Spike and/or MH keep repeating and a few gems from LordHavoc and some of my experiences with Avirox, stuff that R00k has told me and a bag of my own insights ... eventually I'll find the time to release my pet project .... which is quite an unusual beast. I desperately want to finish it, but I am kind of sidetracked at the moment by "real life demands" that oddly enough I have molded myself to be rather ideally suited for. Go figure. ]
Jukki wrote:heh, any plans to make kurok v0.5?
Kurok is fine as it is, minus the standardization (that being said, MDave put QuakeC in the freakin maps! Sheesh ... how to deal with/expunge that ... sigh). My pet project doesn't recognize there is any difference between Quake or Kurok. It focuses on adding to the tool set available to mod authors without using QuakeC as the sole means to that end. I get perpetually tempted to post screenshots, but my better judgment tells me that it better to wait until I achieve a release state for the "WTF!" factor.
I like the idea of a "WTF!" factor. The weird thing that comes out of seemingly nowhere (nobody pays attention and that's just fine by me ... I kinda prefer the idea of people growing comfortable with the future they expect and introducing a curveball to that idea) and then one day "things have changed."
I'm as multiplatform as I've always been.
The main differences for maintaining a PSP engine:
1. Having to initialize the heap memory, the clock speed, occasionally checking the battery.
2. Having to deal with suspend and resume for files and for the music player
3. Having to support the input controls
4. Differences in rendering and loading textures (I've taken a different approach to rendering than most engines do, which makes this simpler to deal with. The code works more as a "what are you trying to do" rather than "how do you do it", which allows for instance PSPGU equivalents to be stored in a file like renderer_pspgu.c versus say a renderer_opengl.c).
I don't think I'd be willing to stick to a 20 MB limit any more for say the oldy PSP (32 MB - 12 MB overhead = 20 MB). 20 MB is only barely enough for a typical 1996 map and model set. So it would be only for the 64 MB models.
We'll see. But I wouldn't be going back to update the "old" PSP engine, it would be a new one. It wouldn't happen until after a release on other platforms.
That being said, look in ai.qc http://inside3d.com/browse.php in standard Quakem [ and then check the same file in Kurok]
and you'll see this
void() SightSound =
local float rsnd;
if (self.classname == "monster_ogre")
sound (self, CHAN_VOICE, "ogre/ogwake.wav", 1, ATTN_NORM);
else if (self.classname == "monster_knight")
sound (self, CHAN_VOICE, "knight/ksight.wav", 1, ATTN_NORM);
else if (self.classname == "monster_shambler")
sound (self, CHAN_VOICE, "shambler/ssight.wav", 1, ATTN_NORM);
else if (self.classname == "monster_demon1")
sound (self, CHAN_VOICE, "demon/sight2.wav", 1, ATTN_NORM);
else if (self.classname == "monster_wizard")
sound (self, CHAN_VOICE, "wizard/wsight.wav", 1, ATTN_NORM);
else if (self.classname == "monster_zombie")
sound (self, CHAN_VOICE, "zombie/z_idle.wav", 1, ATTN_NORM);
else if (self.classname == "monster_dog")
sound (self, CHAN_VOICE, "dog/dsight.wav", 1, ATTN_NORM);
else if (self.classname == "monster_hell_knight")
sound (self, CHAN_VOICE, "hknight/sight1.wav", 1, ATTN_NORM);
else if (self.classname == "monster_tarbaby")
sound (self, CHAN_VOICE, "blob/sight1.wav", 1, ATTN_NORM);
else if (self.classname == "monster_vomit")
sound (self, CHAN_VOICE, "vomitus/v_sight1.wav", 1, ATTN_NORM);
else if (self.classname == "monster_enforcer")
Which should give you some insight into how to implement that.
Who is online
Users browsing this forum: No registered users and 0 guests