You can subscribe to this list here.
1999 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(535) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2000 |
Jan
(1127) |
Feb
(362) |
Mar
(529) |
Apr
(752) |
May
(487) |
Jun
(329) |
Jul
(190) |
Aug
(115) |
Sep
(53) |
Oct
(52) |
Nov
(345) |
Dec
(203) |
2001 |
Jan
(240) |
Feb
(317) |
Mar
(212) |
Apr
(57) |
May
(151) |
Jun
(70) |
Jul
(82) |
Aug
(23) |
Sep
(56) |
Oct
(35) |
Nov
(22) |
Dec
(60) |
2002 |
Jan
(33) |
Feb
(21) |
Mar
(16) |
Apr
(14) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2003 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Seth G. <sga...@li...> - 2002-01-04 19:19:16
|
I've got the high precision model rendering working in software, but only by not using the special case functions for non-clipped models. These are supposed to be more optimal because the transformation matrix is scaled down by "1/2**32": // do the scaling up of x and y to screen coordinates as part of the transform // for the unclipped case (it would mess up clipping in the clipped case). // Also scale down z, so 1/z is scaled 31 bits for free, and scale down x and y // correspondingly so the projected x and y come out right // FIXME: make this work for clipped case too? if (trivial_accept) { for (i = 0; i < 4; i++) { aliastransform[0][i] *= aliasxscale * (1.0 / ((float) 0x8000 * 0x10000)); aliastransform[1][i] *= aliasyscale * (1.0 / ((float) 0x8000 * 0x10000)); aliastransform[2][i] *= 1.0 / ((float) 0x8000 * 0x10000); } } I see three options: * Drop this optimization * Implement this optimization in the other functions * Implement this optimization for both cases (as the FIXME suggests) I couldn't figure out how to do either of the second two options __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2002-01-04 16:41:36
|
Taniwha has suggested that GL_GetAliasFrameVerts could be used by the software renderer to get interpolated animation ("lerp"d or "tween"d so the animation looks smooth instead of choppy) on .mdls It could also simplify implementation of high precision model rendering, since this function also converts the byte coordinates to floats for GL rendering. I like this idea, but it could prove tricky: The software renderer DOES convert coordinates from bytes (all frames stored in memory this way) to floats (temporarily for rendering and clipping), but then it turns them into ints for rendering. So far, so good, but the software renderer splits into two paths when converting it's vertices depending on whether the model is clipped. (look for "trivial_accept" in sw_ralias.c and sw32_ralias.c) In the case where clipping is not needed, there is an assembler version of the function that converts the bytes to floats to ints (in sw_ralias.c, but not sw32_ralias.c) I think we'll have to drop that assembler function (or at least make it conditional) to get either interpolation or high precision models. How big of a difference does this assembler function make? Comments? Suggestions? __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Andreas H. <sta...@ho...> - 2002-01-03 09:52:54
|
HI! just a question .. what will happend to quakeforge? will you start using the quake2 engine or? /A _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com |
From: Andreas H. <sta...@ho...> - 2002-01-03 09:52:47
|
HI! just a question .. what will happend to quakeforge? will you start using the quake2 engine or? /A _________________________________________________________________ Join the worlds largest e-mail service with MSN Hotmail. http://www.hotmail.com |
From: Robert E. <ed...@ro...> - 2002-01-02 22:21:54
|
where can these models be found? all the download links on http://www.planetquake.com/gg/fmp/model.html link to a planetquake server that gives an HTTP 500 error message. thanks -- Robert Edmonds ed...@ro... |
From: Seth G. <sga...@li...> - 2002-01-02 20:39:44
|
The Quake 2 source doesn't include all the Quake 2 utilities like qbsp3 qrad, whatever the new modelgen is and so forth, does it? Has anyone asked? It would be nice to be able to hack the utilities under a real free license like the engine. __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2002-01-02 20:30:57
|
I have started implementing the high precision model format system in QuakeForge, but I only got the loading part done before I started to feel the full goshawful nastiness of Red Hat 7.2. (freezing up probably caused by the 2.4.7 kernel, even making it difficult to correctly install a new kernel.) So if you try using a 16 bit precision model like the one found at http://www.planetquake.com/gg/v_rock2a.zip it will just look like a regular model in software, and every odd frame will look like junk in OpenGL (The extra precision data is stored and loaded like extra frames) Any suggestions for what Linux distribution to try next? I tried Debian but it's really too difficult to install with my limited understanding of these machines, so far I've had the most success with - get this - Corel Linux :-\ I'm thinking about trying SuSE. One way or the other I should have things up and running soon and make the high precision model rendering happen. __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Adam O. <rh...@d2...> - 2001-12-31 00:49:28
|
On Mon, Dec 31, 2001 at 10:33:22AM +1000, Darrin Mison wrote: > For the sake of sanity I'm trying to migrate as many programs as possible to > using /opt instead of the apparantly standard /usr/local mess. This includes > quakeforge. > > With the few programs which I have already done it was a simple matter of > changing one line (prefix=/opt/package-name) after running configure but with > packages such as quakeforge there are several makefiles to modify. > > I have only a rudimentary knowledge of the GNU build system and was curious > as if there was a config file somewhere which I could modify to make the > system default to using /opt? Or am I barking up the wrong tree and have to > do it on a package by package basis? And if so what is the quickest way to > do it in regards to quakeforge? ./configure --prefix=/opt Also see ./configure --help so all sorts of fun options. -- Adam Olsen, aka Rhamphoryncus |
From: Darrin M. <st...@ya...> - 2001-12-31 00:35:51
|
For the sake of sanity I'm trying to migrate as many programs as possible to using /opt instead of the apparantly standard /usr/local mess. This includes quakeforge. With the few programs which I have already done it was a simple matter of changing one line (prefix=/opt/package-name) after running configure but with packages such as quakeforge there are several makefiles to modify. I have only a rudimentary knowledge of the GNU build system and was curious as if there was a config file somewhere which I could modify to make the system default to using /opt? Or am I barking up the wrong tree and have to do it on a package by package basis? And if so what is the quickest way to do it in regards to quakeforge? Thanks for all the great work by the way. -- Darrin Mison All generalisations are false Homepage/PGPkey : http://members.fortunecity.com/darien/ |
From: <lo...@ou...> - 2001-12-30 04:45:05
|
Thanks alot.... that did the trick and I was able to get things up and running. Cheers, Lonnie :) Quoting Bill Currie <bi...@ta...>: > On Sat, Dec 29, 2001 at 02:21:08PM -0500, lo...@ou... wrote: > > Hello All, > > > > I have installed the Quake1 onto my Windows machine for testing into > > > the "QUAKE_SW" directory and have copied the pak0.pak into the > quakeforge > > directory but am still getting this error about unable to locate the > gfx.wad > > file. > > pak0.pak needs to be in the id1 directory within the quakeforge > directory. > > Btw, running qf with +set developer 1 on the command line will cause qf > to > spew a lot of info including where it is looking for files. > > Bill > -- > Leave others their otherness. -- Aratak > |
From: Bill C. <bi...@ta...> - 2001-12-30 04:35:24
|
On Sat, Dec 29, 2001 at 02:21:08PM -0500, lo...@ou... wrote: > Hello All, > > I have installed the Quake1 onto my Windows machine for testing into > the "QUAKE_SW" directory and have copied the pak0.pak into the quakeforge > directory but am still getting this error about unable to locate the gfx.wad > file. pak0.pak needs to be in the id1 directory within the quakeforge directory. Btw, running qf with +set developer 1 on the command line will cause qf to spew a lot of info including where it is looking for files. Bill -- Leave others their otherness. -- Aratak |
From: Jarred B. <jp...@ya...> - 2001-12-29 17:05:28
|
First put the path to your Quake2 .so files in /etc/quake2.conf, i.e, /usr/local/games/quake2/ (I put '.' in mine, and just run the binary from the Q2 dir) --- Seth Galbraith <sga...@li...> wrote: > Just out of curiousity I tried compiling the quake2 > source from QF CVS. > I'm using RedHat 7.2. When I try to make all I get > this confusing error: > > gcc -Dstricmp=strcasecmp -march=i686 -O6 -ffast-math > -funroll-loops > -fomit-frame-pointer -fexpensive-optimizations > -malign-loops=2 > -malign-jumps=2 -malign-functions=2 -fPIC -o > releasei386/game/g_ai.o -c > ../../quake2/game/g_ai.c > gcc -Dstricmp=strcasecmp -march=i686 -O6 -ffast-math > -funroll-loops > -fomit-frame-pointer -fexpensive-optimizations > -malign-loops=2 > -malign-jumps=2 -malign-functions=2 -fPIC -o > releasei386/game/p_client.o > -c ../../quake2/game/p_client.c > ../../quake2/game/p_client.c: In function > `ClientThink': > ../../quake2/game/p_client.c:1744: Insn does not > satisfy its constraints: > (insn:TI 1943 1713 1944 (parallel[ > (set (mem:HI (plus:SI (reg:SI 6 ebp) > (const_int -274 > [0xfffffeee])) 0) > (fix:HI (reg:SF 8 st(0)))) > (clobber (mem:SI (plus:SI (reg:SI 6 ebp) > (const_int -272 > [0xfffffef0])) 0)) > (clobber (mem:HI (plus:SI (reg:SI 6 ebp) > (const_int -274 > [0xfffffeee])) 0)) > (clobber (reg:SI 6 ebp)) > ] ) 97 {*fix_trunchi_1} (insn_list 1715 > (insn_list:REG_DEP_ANTI > 1934 (insn_list:REG_DEP_ANTI 568 > (insn_list:REG_DEP_ANTI 560 > (insn_list:REG_DEP_ANTI 562 (insn_list:REG_DEP_ANTI > 564 > (insn_list:REG_DEP_ANTI 1935 (insn_list:REG_DEP_ANTI > 1793 > (insn_list:REG_DEP_ANTI 1796 (insn_list:REG_DEP_ANTI > 577 > (insn_list:REG_DEP_ANTI 1691 (insn_list 1799 > (insn_list:REG_DEP_ANTI 1690 > (insn_list:REG_DEP_ANTI 1937 (insn_list:REG_DEP_ANTI > 1938 > (insn_list:REG_DEP_ANTI 1694 (insn_list:REG_DEP_ANTI > 1695 > (insn_list:REG_DEP_ANTI 1939 (insn_list:REG_DEP_ANTI > 1940 > (insn_list:REG_DEP_ANTI 1698 (insn_list:REG_DEP_ANTI > 1709 > (insn_list:REG_DEP_ANTI 1941 ( > insn_list:REG_DEP_ANTI 1942 (insn_list:REG_DEP_ANTI > 1713 > (insn_list:REG_DEP_ANTI 1714 > (nil)))))))))))))))))))))))))) > (expr_list:REG_DEAD (reg:SF 8 st(0)) > (nil))) > ../../quake2/game/p_client.c:1744: confused by > earlier errors, bailing out > > If I do "make -k all" I get the following additional > error: > > /tmp/ccd3L42i.s: Assembler messages: > /tmp/ccd3L42i.s:598: Warning: indirect jmp without > `*' > ../../quake2/ref_gl/gl_image.c: In function > `GL_InitImages': > ../../quake2/ref_gl/gl_image.c:1514: warning: > passing arg 2 of pointer to > function from incompatible pointer type > ../../quake2/ref_gl/gl_model.c: In function > `Mod_ForName': > ../../quake2/ref_gl/gl_model.c:227: warning: passing > arg 2 of pointer to > function from incompatible pointer type > ../../quake2/ref_gl/gl_rmain.c: In function > `GetRefAPI': > ../../quake2/ref_gl/gl_rmain.c:1651: warning: > assignment from incompatible > pointer type > ../../quake2/ref_gl/gl_rmisc.c:246:1: warning: no > newline at end of file > > When I try to run linux/releasei386/quake2 I get > this error: > > Illegal instruction > > When I try to run linux/debugi386/quake2 I get this > error: > > ------- Loading ref_softx.so ------- > LoadLibrary("ref_softx.so") failed: can't open > /etc/quake2.conf (required > for location of ref libraries) > Refresh failed > recursive shutdown > Error: Couldn't fall back to software refresh! > __ __ _ _ > __ __ > _/ \__/ \__/ Seth Galbraith "The Serpent Lord" > \__/ \__/ \_ > \__/ \__/ \_ sga...@kr... #2244199 on ICQ > _/ \__/ \__/ > _/ \__/ \__/ http://www.planetquake.com/gg > \__/ \__/ \_ > > > -- > QuakeForge Development [ > qua...@li... ] > https://lists.sourceforge.net/lists/listinfo/quake-devel ===== |-| |-| |-| ___ |-| |-| \-\ /-/ | | | | | | || | | | | \ \/ / | |____ | | | | || | |___| | / /\ \ |______| |_| |_| || \_______/ / / \ \ /_/ \ \ The box said "Requires Windows 95 or better", so\_\ I installed Linux. __________________________________________________ Do You Yahoo!? Send your FREE holiday greetings online! http://greetings.yahoo.com |
From: Bill C. <bi...@ta...> - 2001-12-28 19:12:25
|
On Sun, Dec 23, 2001 at 11:39:06PM -0600, Dwayne C. Litzenberger wrote: > Can qw-client-* take commands from a fifo? No, but it can take them via udp. In qw-client-*, set localid to something (eg, foo) then in a terminal: echo -ne '\377\377\377\377Becho bwahaha;quit\000foo' | nc -u 127.0.0.1 27001 > Should I make a wishlist instead of posting every wish I encounter to the > list? :-) Easier to discuss individual items this way :) Bill -- Leave others their otherness. -- Aratak |
From: Seth G. <sga...@li...> - 2001-12-28 16:07:31
|
Yes I know software rendering is what folks might call "legacy" support and a good argument could be made for improving it as little as necessary, but I am curious to find out if anyone thinks it would be worthwhile to implement some of the basic software rendering enhancements found in Quake2 in the Quake1 based QuakeForge engine. Specifically I am thinking of transparent water and skyboxes, since these being OpenGL-only features complicates the art path of future games using the Quake engine (which is what I'm working on.) I can't dismiss the need for software rendering because I just happen to have one of those graphics cards which does not have freeware or open source 3d acceleration drivers (I think commercial drivers are more expensive than the card itself now and I don't know how well they work) Would the Quake2 source have any useful code for implementing these features, or are the engines just too different? __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2001-12-28 01:26:09
|
On Wed, 26 Dec 2001, BFGalbraith wrote: > "He had a broad face and a round little belly, > That shook when he laughed, like a bowl full of jelly" > > Yes, I am mocking the Quake 1 format again. > Are we working on something else yet? I have added a new option to the modelgen utility (at openquartz.sf.net) which creates a high precision non-skeletal, non-bolton model format. In other words it's the simplest possible precision enhancement: an extra byte of precision, which doubles model size, but looks much better. http://www.geocrawler.com/lists/3/SourceForge/856/25/7254677/ http://www.geocrawler.com/lists/3/SourceForge/856/25/7286464/ I don't know if it would be better to identify the new model format by a different "magic" number (which I am doing currently) or a different alias_version within the model, or both? This model format might also be useful for Quake2, allowing more detailed characters like monsters with individually modeled sharp fangs etc. Of course it currently has skins inside the model, so maybe the Quake2 version would be a little different (same hack applied to md2 generation.) BTW - are there any GPL Quake2 utilities? Any plans for them? __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2001-12-28 01:08:06
|
Just out of curiousity I tried compiling the quake2 source from QF CVS. I'm using RedHat 7.2. When I try to make all I get this confusing error: gcc -Dstricmp=strcasecmp -march=i686 -O6 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fPIC -o releasei386/game/g_ai.o -c ../../quake2/game/g_ai.c gcc -Dstricmp=strcasecmp -march=i686 -O6 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fPIC -o releasei386/game/p_client.o -c ../../quake2/game/p_client.c ../../quake2/game/p_client.c: In function `ClientThink': ../../quake2/game/p_client.c:1744: Insn does not satisfy its constraints: (insn:TI 1943 1713 1944 (parallel[ (set (mem:HI (plus:SI (reg:SI 6 ebp) (const_int -274 [0xfffffeee])) 0) (fix:HI (reg:SF 8 st(0)))) (clobber (mem:SI (plus:SI (reg:SI 6 ebp) (const_int -272 [0xfffffef0])) 0)) (clobber (mem:HI (plus:SI (reg:SI 6 ebp) (const_int -274 [0xfffffeee])) 0)) (clobber (reg:SI 6 ebp)) ] ) 97 {*fix_trunchi_1} (insn_list 1715 (insn_list:REG_DEP_ANTI 1934 (insn_list:REG_DEP_ANTI 568 (insn_list:REG_DEP_ANTI 560 (insn_list:REG_DEP_ANTI 562 (insn_list:REG_DEP_ANTI 564 (insn_list:REG_DEP_ANTI 1935 (insn_list:REG_DEP_ANTI 1793 (insn_list:REG_DEP_ANTI 1796 (insn_list:REG_DEP_ANTI 577 (insn_list:REG_DEP_ANTI 1691 (insn_list 1799 (insn_list:REG_DEP_ANTI 1690 (insn_list:REG_DEP_ANTI 1937 (insn_list:REG_DEP_ANTI 1938 (insn_list:REG_DEP_ANTI 1694 (insn_list:REG_DEP_ANTI 1695 (insn_list:REG_DEP_ANTI 1939 (insn_list:REG_DEP_ANTI 1940 (insn_list:REG_DEP_ANTI 1698 (insn_list:REG_DEP_ANTI 1709 (insn_list:REG_DEP_ANTI 1941 ( insn_list:REG_DEP_ANTI 1942 (insn_list:REG_DEP_ANTI 1713 (insn_list:REG_DEP_ANTI 1714 (nil)))))))))))))))))))))))))) (expr_list:REG_DEAD (reg:SF 8 st(0)) (nil))) ../../quake2/game/p_client.c:1744: confused by earlier errors, bailing out If I do "make -k all" I get the following additional error: /tmp/ccd3L42i.s: Assembler messages: /tmp/ccd3L42i.s:598: Warning: indirect jmp without `*' ../../quake2/ref_gl/gl_image.c: In function `GL_InitImages': ../../quake2/ref_gl/gl_image.c:1514: warning: passing arg 2 of pointer to function from incompatible pointer type ../../quake2/ref_gl/gl_model.c: In function `Mod_ForName': ../../quake2/ref_gl/gl_model.c:227: warning: passing arg 2 of pointer to function from incompatible pointer type ../../quake2/ref_gl/gl_rmain.c: In function `GetRefAPI': ../../quake2/ref_gl/gl_rmain.c:1651: warning: assignment from incompatible pointer type ../../quake2/ref_gl/gl_rmisc.c:246:1: warning: no newline at end of file When I try to run linux/releasei386/quake2 I get this error: Illegal instruction When I try to run linux/debugi386/quake2 I get this error: ------- Loading ref_softx.so ------- LoadLibrary("ref_softx.so") failed: can't open /etc/quake2.conf (required for location of ref libraries) Refresh failed recursive shutdown Error: Couldn't fall back to software refresh! __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: BFGalbraith <bga...@kr...> - 2001-12-27 04:12:09
|
I have reason to suspect that Clement Moore (author of "A visit from St. Nicholas") may have met Santa in a Quake conversion, for in his poem he writes: "He had a broad face and a round little belly, That shook when he laughed, like a bowl full of jelly" Yes, I am mocking the Quake 1 format again. Are we working on something else yet? Also, howsabout 32 bit texture support? I've been working on some artwork for use with the Quake one engine, and with the level of detail I'm allowed I feel like I'm working on a TRS-80 or Atari 2600 game... or mabey just a text/ascii game. ------------ - - ------------ --- ---- - - -- - - --- ------- ---- ----- Oh, woops, too much detail on that texture/model. At least we have 'tweening :) -BFGalbraith Hack and Slash Project Manager bga...@kr... Here's what's up: www.planetquake.com/gg |
From: <42...@in...> - 2001-12-26 23:05:09
|
New FX system coded by me from scrach for TomazQuake. Static FX: a very small "particle" that store a "enviromental" decal FX, ( like fire, snow, rain,...) Higly configurable and easy to expand.. etc. Fire & Forget. (will run in client forever (or with timer,..) without more net traffic ) Man in Work (this code will change), here only for phun. check this shots: qbism.telefragged.com/tei/staticfx333.jpg qbism.telefragged.com/tei/staticfx334.jpg qbism.telefragged.com/tei/staticfx335.jpg qbism.telefragged.com/tei/staticfx336.jpg qbism.telefragged.com/tei/staticfx337.jpg qbism.telefragged.com/tei/staticfx338.jpg code: <pre><tt><code><xmp> /* Copyright (C) 1996-1997 Id Software, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "quakedef.h" // Generated from scrach by Tei #define SFX_EXPLOFIRE 1 #define SFX_FIRE 2 #define SFX_SMOKE 3 #define SFX_EXPLOWAVE 4 #define SFX_ZRINGS 5 #define SFX_LIGHT 6 #define LF_FOREVER 1 #define LF_WILLDIE 2 #define LF_SCALE 3 #define LF_SCALEFAST 4 #define LF_ONLYONCE 5 typedef struct { int type; // entity number int typelife; float scale; float dead; vec3_t origin; vec3_t endpos; qboolean present; int key; } prj_t; #define MAX_PRJ 640 int cl_prj_num = 0; prj_t cl_prj[MAX_PRJ]; ///////////// // // FX // void R_FireExplo (vec3_t origin, float scale); void R_FireFlama (vec3_t origin, float scale); void R_ExploRing (vec3_t origin, float scale); void R_ZRing (vec3_t origin, float scale); void CL_AddLight( vec3_t pos, float scale ); /////////// // // Parsing the PRJ // void CL_ParsePRJ () { vec3_t start, end; prj_t * ent; int i; int type; int typelife; float scale; float dead; int key; int proto; /* Reading the net cfg data */ proto = MSG_ReadByte (); if (proto != 1 ) // Only support for proto=1 { Sys_Error ("StaticFX proto unsuported version %d \n", proto); return; } start[0] = MSG_ReadCoord (); // Origin start[1] = MSG_ReadCoord (); start[2] = MSG_ReadCoord (); end[0] = MSG_ReadCoord (); // Origin2... end[1] = MSG_ReadCoord (); end[2] = MSG_ReadCoord (); type = MSG_ReadByte (); // Fire, smoke, magic, rays.. etc.. typelife = MSG_ReadByte (); // Temporal, static, etc.. dead = MSG_ReadByte (); // cl.time + deadclock dead (if type need) scale = MSG_ReadByte () * 0.01; // key = MSG_ReadByte (); // Key for delete and change /* Search for a free slot. */ i = 0; while ( cl_prj[i].present && i<MAX_PRJ ) i++; if ( cl_prj[i].present || i>=MAX_PRJ) { // TODO: write a subst code Con_Printf ("OVERFLOW: PRJ flood\n"); return; } /* Cfg the slot. */ ent = &cl_prj[i]; memset (ent, 0, sizeof(*ent)); ent->origin[0] = start[0]; ent->origin[1] = start[1]; ent->origin[2] = start[2]; ent->endpos[0] = end[0]; ent->endpos[1] = end[1]; ent->endpos[2] = end[2]; ent->scale = scale; ent->typelife = typelife; ent->type = type; ent->key = key; ent->dead = cl.time + dead; //Con_Printf ("PRJ %f time, %f dead\n",cl.time, ent->dead); ent->present = true; //Con_Printf ("PRJ generated\n"); return ; } void CL_ClearPRJ() { memset (cl_prj, 0, sizeof(cl_prj)); } ////////////// // // Running the prj // void CL_RunPRJ() { int i; prj_t *prj; float deltat, x; for (i=0 ; i< MAX_PRJ ; i++) { prj = &cl_prj[i]; if ( prj->present ) { //Con_Printf ("PRJ:%d\n", prj->key); /* Type work */ switch ( prj->type ) { case SFX_EXPLOFIRE: R_FireExplo (prj->origin, prj->scale); break; case SFX_FIRE: R_FireFlama (prj->origin, prj->scale); break; case SFX_EXPLOWAVE: R_ExploRing (prj->origin, prj->scale); break; case SFX_ZRINGS: R_ZRing (prj->origin, prj->scale); break; case SFX_LIGHT: //CL_AddLight( prj->origin, prj- >scale ); R_RailTrail (prj->origin, prj->endpos, prj->endpos); break; default: break; } /* Life work */ switch ( prj->typelife ) { case LF_WILLDIE: if (prj->dead < cl.time ) { //Con_Printf ("PRJ:deleted!\n"); prj->present = false; } break; case LF_SCALE: deltat = abs(cl.time - prj->dead); x = ( prj->scale ) / (deltat + 0.001f); prj->scale -= x; if (prj->scale < 0.1) { prj->present = false; break; } break; case LF_SCALEFAST: prj->scale -= 0.1f; if (prj->scale < 0.1) { prj->present = false; break; } break; case LF_ONLYONCE: prj->present = false; break; case LF_FOREVER: default: break; } /* Continue */ } } } </xmp></code></tt></pre> Example of work: void (vector org, vector end, float type, float typelife, float dead, float fxscale, float key ) StaticFX = { /* start[0] = MSG_ReadCoord (); // Origin start[1] = MSG_ReadCoord (); start[2] = MSG_ReadCoord (); end[0] = MSG_ReadCoord (); // Origin2... end[1] = MSG_ReadCoord (); end[2] = MSG_ReadCoord (); type = MSG_ReadByte (); // Fire, smoke, magic, rays.. etc.. typelife = MSG_ReadByte (); // Temporal, static, etc.. dead = MSG_ReadCoord (); // cl.time + deadclock dead (if type need) scale = MSG_ReadCoord (); // 0.1 -- 4 key = MSG_ReadByte (); // Key for delete and change */ WriteByte (MSG_BROADCAST, SVC_TEMPENTITY); WriteByte ( MSG_BROADCAST, 49 ); WriteByte ( MSG_BROADCAST, 1 ); // Static TempEntity protocol 1.0 WriteVec ( org ); WriteVec ( end ); WriteByte ( MSG_BROADCAST, type ); WriteByte ( MSG_BROADCAST, typelife ); WriteByte ( MSG_BROADCAST, dead ); WriteByte ( MSG_BROADCAST, fxscale * 100 ); WriteByte ( MSG_BROADCAST, key ); }; // HERE! // TODO: export SFX_ & LF_ names. StaticFX( self.origin + '0 0 -20', self.origin, 2,4,143,2,4); Generate a small fire puff 1 saludo Tei --------------------------------------------- This message was sent using Endymion MailMan. http://www.endymion.com/products/mailman/ |
From: Seth G. <sga...@li...> - 2001-12-26 16:59:10
|
On Wed, 26 Dec 2001, Jeff Teunissen wrote: > "Dwayne C. Litzenberger" wrote: > > > > Does it exist yet? > > No, and there's some disagreement on how/if it should be done. What are the issues or arguments? The sooner there is consensus about that, the sooner we can start arguing about who will do it when :-) __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Jeff T. <de...@d2...> - 2001-12-26 16:20:23
|
"Dwayne C. Litzenberger" wrote: > > Are other people having these (related) problems with the GL renderer? > > 1. When entering or leaving water, the sky becomes visible for some > reason GL near clipping issues, can't really be solved completely AFAIK. > 2. Shadows cast onto water look like the sky Render order issue, I think. > 3. Edges of the world (including ammo boxes) will show the sky, > depending on the viewing angle. Not sure about this. -- | Jeff Teunissen -=- Pres., Dusk To Dawn Computing -=- deek @ d2dc.net | GPG: 1024D/9840105A 7102 808A 7733 C2F3 097B 161B 9222 DAB8 9840 105A | Core developer, The QuakeForge Project http://www.quakeforge.net/ | Specializing in Debian GNU/Linux http://www.d2dc.net/~deek/ |
From: Jeff T. <de...@d2...> - 2001-12-26 16:16:25
|
"Dwayne C. Litzenberger" wrote: > > Does it exist yet? No, and there's some disagreement on how/if it should be done. -- | Jeff Teunissen -=- Pres., Dusk To Dawn Computing -=- deek @ d2dc.net | GPG: 1024D/9840105A 7102 808A 7733 C2F3 097B 161B 9222 DAB8 9840 105A | Core developer, The QuakeForge Project http://www.quakeforge.net/ | Specializing in Debian GNU/Linux http://www.d2dc.net/~deek/ |
From: Seth G. <sga...@li...> - 2001-12-26 01:07:36
|
On Tue, 25 Dec 2001 42...@in... wrote: > stuffcmd(self,"fov 20");//BUG, becausse you get "fov 20+forward" stuff in > console and you can not move... stuck the client > > stuffcmd2(self,"fov 20");//WORK! you can dinamycally change client witout > errors... dont interfere players movements. Wait, shouldn't you do stuffcmd (self, "fov 20\n"); to make sure that the next command is seperated by a newline and that the command is executed immediately? __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2001-12-26 00:59:25
|
On Fri, 21 Dec 2001, Ulrich Galbraith wrote: > I think it's important to note that id software didn't do the port to N64 > themselves. Just so you're not suprised when you get a big "wha...?" from > teh quaek pappies. Does the Quake2 code have any hints at how to implement split-screen? I didn't notice any N64 code folder in the Q2 source release :-) __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: <42...@in...> - 2001-12-25 01:47:02
|
I am newbie engine codding. I am fixing the most of the Sys_Crash limits. I am adding historical modders needed features. Check my code for phun.. and fix then if you want. I think this code can crash a good engine, but will be a good start for doing the righ thing. 1 saludo Tei - - - - //From TomazQuake: void SCR_DrawCenterString (void) { char *start; int l; int j; int x, y; int remaining; float fade; glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); // the finale prints the characters one at a time if (cl.intermission) remaining = scr_printspeed.value * (cl.time - scr_centertime_start); else // Tei typewriter centersprint { if ((scr_centerstring[0]=='/') && (scr_centerstring[1]=='T')) { // typewriter remaining = scr_printspeed.value * (cl.time - scr_centertime_start); } else remaining = 9999; } // Tei typewriter centerprint scr_erase_center = 0; start = scr_centerstring; if (scr_center_lines <= 4) y = vid.height*0.35; else y = 48; do { // scan the width of the line for (l=0 ; l<40 ; l++) if (start[l] == '\n' || !start[l]) break; x = (vid.width - l*8)/2; if (!cl.intermission && centerfade.value) { if (cl.time - scr_centertime_start < 1) fade = (cl.time - scr_centertime_start); else fade = -(cl.time - scr_centertime_start) + 2; } else fade = 1; for (j=0 ; j<l ; j++, x+=8) { if (!cl.intermission && centerfade.value) glColor4f(1,1,1,fade); // Tei h centerprint if (scr_centerstring[0]=='/' && scr_centerstring[1] =='Y') //INVERSE { if (j>1) Draw_Character (y, x, start[j]); } else if (scr_centerstring[0]=='/' && scr_centerstring[1] =='D') //Alternative DDOOUUBBLLEE { if (j>1) Draw_CharacterQ3 (j * 16 + 20, y + vid.height*0.40, start[j], 8, 16); } else if (scr_centerstring[0]=='/' && scr_centerstring[1] =='A') //Alternative { if (j>1) Draw_Character (j * 8 + 20, y + vid.height*0.40, start[j]); } else if (scr_centerstring[0]=='/' && scr_centerstring[1] =='H') //Alternative HIGHINT { if (j>1) Draw_CharacterQ3 (j * 8 + 20, y + vid.height*0.40, start[j], 16,8); } else if (scr_centerstring[0]=='/' && scr_centerstring[1] =='N') //Expecify { if (j>3) Draw_Character (j * 8 + vid.width * ((scr_centerstring[2] - '0')*0.1) , vid.height * ((scr_centerstring[3] - '0') *0.1), start[j]); } else { if (scr_centerstring[0]=='/' && scr_centerstring [1]=='T') { if (j>1) Draw_Character (x, y, start[j]); } else Draw_Character (x, y, start[j]); } // Tei h centerprint if (!remaining--) { glColor4f(1,1,1,1); return; } } y += 8; while (*start && *start != '\n') start++; if (!*start) break; start++; // skip the \n } while (1); glColor4f(1,1,1,1); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); } spec: /Atext print text in altern pos /Ttext print text with letterbox fx .. etc... - - - In cl_parse.c: // Tei rexec case svc_rexec: Cmd_ExecuteString (MSG_ReadString(),src_command); break; // Tei rexec In pr_functions.c: // Tei rexec good // Tei stuff good void Host_ClientCommands2 (char *fmt, ...) { va_list argptr; char string[1024]; va_start (argptr,fmt); vsprintf (string, fmt,argptr); va_end (argptr); MSG_WriteByte (&host_client->message, svc_rexec); MSG_WriteString (&host_client->message, string); } // Tei stuff good void PF_stuffcmd2 (void) { int entnum; char *str; client_t *old; entnum = G_EDICTNUM(OFS_PARM0); if (entnum < 1 || entnum > svs.maxclients) PR_RunError ("Parm 0 not a client"); str = G_STRING(OFS_PARM1); old = host_client; host_client = &svs.clients[entnum-1]; Host_ClientCommands2 ("%s", str); host_client = old; } // Tei rexec good In cl_autocrosshair.qc: if (trace_ent.classname == "player"){ if (self.myfov < 50 ) self.myfov = self.myfov + 1; if (self.autocross) stuffcmd2(self,"crosshair 10");//8//5 if (self.autozoom) SetFov(self, 90 - self.myfov); tmp =trace_ent.netname; centerprint2 ( self,"/A",tmp); if (self.wavetime2 < time ) { sound (self, CHAN_VOICE, "fx/drone6.wav", 1, ATTN_NORM); self.wavetime2 = time + 2; } //centerprint(self,hvstring(trace_ent.netname)); //bprint(); } else { if (self.myfov > 0 ) self.myfov = self.myfov - 1; if (self.autozoom) SetFov(self,90 - self.myfov); if (self.autocross) stuffcmd2(self,"crosshair 6");//1 } // WHY? // // stuffcmd(self,"fov 20");//BUG, becausse you get "fov 20+forward" stuff in console and you can not move... stuck the client stuffcmd2(self,"fov 20");//WORK! you can dinamycally change client witout errors... dont interfere players movements. Uses: dinamical crosshair MaxPayne Nightmare FX server-client dialogs ... - - - Our final Array support: // Tei setarray void PF_SetArray (void) { char *s1, *s2; ddef_t *key; int l,i,val, val2,len; float ret; char *p, *d, *valstring; char tmp[200]; d = pr_string_temp; memset(d, 0, 127); p = G_STRING(OFS_PARM0); val = floor(G_FLOAT(OFS_PARM1)); valstring = G_STRING(OFS_PARM2); len = strlen(p); Q_strncpy(pr_string_temp, p, len); d[len+0 ] = (val/ 10)%10 + '0'; d[len+1] = (val )%10 + '0'; d[len+2] = 0; //ED_FindGlobal (new) key = ED_FindGlobal (d); if (key!=NULL) ret = ED_ParseEpair ((void *)pr_globals, key, valstring); G_FLOAT(OFS_RETURN) = (key!=NULL); } // Tei array // How work?: // for float var01; float var02; float var03; float var04; SetArray("val",3,nume); will be *evaluated* to val03=nume; - - - SkyBox suck because TGA/PCX hare BIG files, this new func change "standard" quake beavieor to a realistic one: //From TomazQuake engine void EmitSkyPolys (msurface_t *s) { glpoly_t *p; float *v; int i; float r, t; vec3_t dir; float length; glBindTexture (GL_TEXTURE_2D, solidskytexture); // Tei slow sky //speedscale = realtime*8; speedscale = realtime;//1 // Tei slow sky speedscale -= (int)speedscale & ~127; for (p=s->polys ; p ; p=p->next) { glBegin (GL_POLYGON); for (i=0,v=p->verts[0] ; i<p->numverts ; i++, v+=VERTEXSIZE) { VectorSubtract (v, r_origin, dir); //Tei More flat sky dir[2] *= 16; // flatten the sphere //Tei More flat sky length = 378/Length (dir); // Tomaz - Speed dir[0] *= length; dir[1] *= length; r = (speedscale + dir[0]) * (0.0078125); // Tomaz - Speed t = (speedscale + dir[1]) * (0.0078125); // Tomaz - Speed glTexCoord2f (r, t); glVertex3fv (v); } glEnd (); } glBindTexture (GL_TEXTURE_2D, alphaskytexture); // Tei slow sky //speedscale = realtime*16; speedscale = realtime*2;//2 // Tei slow sky speedscale -= (int)speedscale & ~127; for (p=s->polys ; p ; p=p->next) { glBegin (GL_POLYGON); for (i=0,v=p->verts[0] ; i<p->numverts ; i++, v+=VERTEXSIZE) { VectorSubtract (v, r_origin, dir); dir[2] *= 3; // flatten the sphere length = 378/Length (dir); // Tomaz - Speed dir[0] *= length; dir[1] *= length; r = (speedscale + dir[0]) * (0.0078125); // Tomaz - Speed t = (speedscale + dir[1]) * (0.0078125); // Tomaz - Speed glTexCoord2f (r, t); glVertex3fv (v); } glEnd (); } } // SKYBOXES SUCK // // The original ID code for sky is too "lovercraft nightmare" centric, and maybe, you need a realistic one, this hack change the beavier.... // I think is best to have a console cvar to control this "alternate sky beavior" (will code later.. // With this you never need skyboxes (IMHO) // High sky looks far in a realisti manner, the whole sky move slow (not fast like id code). // TODO: make this a cvar trigger? - - - - // EF_DECAL support & fix for "ED_Alloc: no free edicts" crash with more than 8192 entitis // // HOW: // Mark as ED_DECAL these Decals entitys, if the engine need new entitys will delete these. edict_t *ED_Alloc (void) { int i, flags; edict_t *e; for ( i=svs.maxclients+1 ; i<sv.num_edicts ; i++) { e = EDICT_NUM(i); // the first couple seconds of server time can involve a lot of // freeing and allocating, so relax the replacement policy if (e->free && ( e->freetime < 2 || sv.time - e->freetime > 0.5 ) ) { ED_ClearEdict (e); return e; } } if (i == MAX_EDICTS) { //Tei try to avoid syserror on no_free edicts // Retry 1 with relaxed rules for ( i=svs.maxclients+1 ; i<sv.num_edicts ; i++) { e = EDICT_NUM(i); // the first couple seconds of server time can involve a lot of if (e->free && ( e->freetime < 32 || sv.time - e->freetime > 0.05 ) ) { ED_ClearEdict (e); return e; } } // Retry 2 with anti-decals rules for ( i=svs.maxclients+1 ; i<sv.num_edicts ; i++) { e = EDICT_NUM(i); flags = e->v.effects; if ( flags & EF_DECAL ) // Clear first decal { ED_ClearEdict (e); return e; } } //Tei try to avoid syserror on no_free edicts if (i == MAX_EDICTS) Sys_Error ("ED_Alloc: no free edicts"); } sv.num_edicts++; e = EDICT_NUM(i); ED_ClearEdict (e); return e; } - - - // EF_NONET // // Flag for Server only entitys (waypoints, data holding, fulcrums, bullets, triggers, etc... ) // save bandwich. ( a LOT ) void SV_WriteEntitiesToClient (edict_t *clent, sizebuf_t *msg) { int e, i; int bits; byte *pvs; vec3_t org; float miss; edict_t *ent; // Tomaz - QC Alpha Scale Glow Begin int clentnum; float alpha; float scale; float glow_size; float glow_red; float glow_green; float glow_blue; eval_t *val; // Tomaz - QC Alpha Scale Glow End // find the client's PVS VectorAdd (clent->v.origin, clent->v.view_ofs, org); pvs = SV_FatPVS (org); clentnum = EDICT_TO_PROG(clent); // send over all entities (excpet the client) that touch the pvs ent = NEXT_EDICT(sv.edicts); for (e=1 ; e<sv.num_edicts ; e++, ent = NEXT_EDICT(ent)) { if (ent != clent) // clent is ALLWAYS sent { if (!ent->v.modelindex || !pr_strings[ent->v.model]) continue; if ((val = GETEDICTFIELDVALUE(ent, eval_nodrawtoclient)) && val->edict == clentnum) continue; if ((val = GETEDICTFIELDVALUE(ent, eval_drawonlytoclient)) && val->edict && val->edict != clentnum) continue; // Tei if (ent->v.effects3 == EF3_NONET ) // you can use instead .effects and a new EF_ if you want backward compat continue; if (!ent->v.modelindex) // No visible = No client data // Bug here??? continue; // Tei - - - Decals entitys autovanish feature: - server delete then as neeeded - server automagically change alfa - sever automagically delete then with alpha <0.01 void SV_CleanupEnts (void) { int e; edict_t *ent; eval_t *val; ent = NEXT_EDICT(sv.edicts); for (e=1 ; e<sv.num_edicts ; e++, ent = NEXT_EDICT(ent)) { ent->v.effects = (int)ent->v.effects & ~EF_MUZZLEFLASH; // Tei - autovanish val = GETEDICTFIELDVALUE(ent, eval_alpha); if ((ent->v.effects3 == EF3_AUTOVANISH) && (val->_float == 0)) { val->_float = 1; } else if ((ent->v.effects3 == EF3_AUTOVANISH) && (val->_float >0.02) ) { val->_float= val->_float - 0.01; } else { if ( (ent->v.effects3 == EF3_AUTOVANISH) && (val- >_float <=0.02) ) { ED_Free (ent); } } // Tei - autovanish } } hm... I really need to change the code reference to .effects3 to a GETEDICTFIELD dinamicaled evalued to avoid break compatibility.. (whe really need bit map space ;) 1 saludo Tei --------------------------------------------- This message was sent using Endymion MailMan. http://www.endymion.com/products/mailman/ |
From: <fn...@hu...> - 2001-12-24 20:59:20
|
The client now works under X (I was munmap'ing incorrectly; stuff wasn't aligned with page boundaries), but no sound. Also, there's a weird display bug: see http://web.nilpotent.org/tmp/xwd.jpg (81k, 1024x768). However, it seems like the md4.c/mdfour.c change broke the source tree. So, - grab quake2 from their cvsroot (see http://docs.freebsd.org/cgi/getmsg.cgi?fetch=25238+0+current/freebsd-chat) - apply http://web.nilpotent.org/tmp/q2-freebsd-diff1.txt - cd into quake2 and untar http://web.nilpotent.org/tmp/q2-freebsd-diff2.tar.gz - cd into the freebsd directory, and type gmake. You will need ports/graphics/Mesa3 to build it (or you can hack the makefile to not build ref_gl.so -- a trivial hack). Run it as "./quake2 +set vid_ref softx" the first time. If you fix q2-freebsd-diff1.txt in the obvious way, it should also build on NetBSD/i386. My copy of Quake II is somewhere in the mail, so I've tested it with the q2 demo. Hmm. And I just noticed -- multiplayer q2 has problems, but only with the softx render. |