|
So... Dead Player Model In Map:
#8116 posted by RickyT33 on 2008/12/04 20:24:00
If I put my dead player in the map, which frames are death frames? When I open the player.mdl in QME I can see the frames, but that doesnt tell me which frame is which because the total frames are split into sequences, so there would be, say, 10 "1s", etc, and I'm confused!
You Have To Count
#8117 posted by ijed on 2008/12/04 20:43:55
Ignoring the frame groups.
I think 69 is one of them. And 87?
I had a testmap with them set up, but can't remember now and don't have the map here.
#8118 posted by JneeraZ on 2008/12/04 21:10:10
Lurker: <3
Thanks! And that is ... significantly less cool than I was remembering. Oh well, at least I can stop wondering about it now! :)
#8119 posted by JneeraZ on 2008/12/04 21:15:39
What did the D3D lighting preview look like? Useful or no?
Willem
Not useful at all. It was very low detail, and took so long to render that it was faster to compile the map, run the game and check it properly.
And Hey...
Stoneless was pretty awesome at the time. Of course, at the time most of the other editors were garbage and Worldcrash was an unstable POS!
Deathframes
#8122 posted by madfox on 2008/12/05 02:18:02
Just count down, lazy bone...
deathframes player.mdl 50 -60 -85 -94 -103
Ricky -70
Spites
#8123 posted by madfox on 2008/12/05 05:05:15
How come Quake has lost all its sprites except a few?
Was it because the round tiling looked ugly? Or was the resolution too bad?
I'm trying to put in some new sprites, but just get one frame effects.
#8124 posted by JneeraZ on 2008/12/05 11:13:30
I think Carmack said that they used the sprites during early development but eventually ended up replacing almost all of them with models by the time they shipped.
If you remember that in QTest, wall torches were sprites...
it can certainly handle multi-frame effects though. The rocket/grenade explosion is a sprite. Not sure how that gets set up though.
Probably Framegroups...
#8125 posted by metlslime on 2008/12/05 12:02:03
i think models and sprites share a similar data format for frames and framegroups.
Explosion Sprite
#8126 posted by Preach on 2008/12/05 15:03:47
Although I'm pretty sure that you can set up framegroups in a sprite, the explosion which comes with quake is not set up like that. The frames are called by the functions s_explode1-6 like regular monster frames are called.
If you set the frame of a model or sprite to a frame-value which contains a framegroup, but the random flag is not set, does it always start from the beginning? If it did, you could change the explosion to a framegroup and save yourself a tiny bit of network traffic!
Blah
#8127 posted by madfox on 2008/12/05 20:50:15
I had an hard egg on this earlier. I created some new sprites with FimG, and added them to misc.qc as an addition under light.
Problem is that I can see only one frame of it.
So I tried again with a mdl, added to the misc.qc and still it's only one frame.
Data from the sprite is ungrouped as I can see in FimG, but elsewhere in the code the frames of the torch are defined as frame1 flame1 0.1
There must be a code that offers the engine to play more frames, but when I substitute the expl.spr with my own one it freezes on the first.
Desperately seeking I found a sprite.qc but this won't proceed the proqcc. Wrong statements.
http://members.home.nl/gimli/SPRITES.QC
#8128 posted by JneeraZ on 2008/12/05 21:01:42
I found this text which seems to explain everything:
http://www.gamers.org/pub/idgames2/planetquake/chopshop/utilities/quake/graphic_utils/sprgen.txt
Sorry if you already had all that info but it looked useful.
Madfox
#8129 posted by necros on 2008/12/05 21:26:22
none of that stuff in that qc file is even needed. it was probably used when they 'compiled' the sprites, the same way some of the data at the top of all the monster .qc files aren't needed.
sprites are handled identically to models. just set .frame to a number and you're set. you can use the same frame macros that are used for monsters except instead of using $frame1, $frame2, just put the number 0, 1, 2 in that spot instead.
Well
#8130 posted by madfox on 2008/12/05 23:18:37
thsnks for your info. I'll check on it.
a sprite looks more tinkling then a mdl.
Sprites In Maps?
#8131 posted by grahf on 2008/12/08 05:21:19
sprites are handled identically to models
Does this mean that any code that places an arbitrary model in a map, could also place a sprite? I'm aware that quoth can do this, but I'm curious about other mods.
Afaik
#8132 posted by necros on 2008/12/08 08:03:47
yes. it, of course, won't animate without code though. (not sure about the sprite frame group though)
I Wonder
#8133 posted by madfox on 2008/12/08 09:06:00
After several attempts I succeeded in making a sprite in quake.
First I had to convert the brushes in the sprite upside down, as I only got an upside down sprite in game.
Then I tried, as you said necros, it identically to a model, but then I got it wrong as it isn't a model that wants to attack me.
so I probably overlooked something in my coding text, and decided to make them all the same frame.
That worked, although it isn't a nice code.
$cd /raid/quake/id1/models/can
$origin 16 16 24
$base base
$skin base
$frame 1 2 3
void() can_stand1 =[ $1, can_stand2 ] {ai_stand();};
void() can_stand2 =[ $2, can_stand3 ] {ai_stand();};
void() can_stand3 =[ $3, can_stand1 ] {ai_stand();};
void() model_can =
{
precache_model ("progs/can.spr");
self.solid = SOLID_BBOX;
self.movetype = MOVETYPE_NONE;
setmodel (self, "progs/can.spr");
setsize (self, '16 16 -24', '16 16 40');
self.th_stand = can_stand1;
self.th_walk = can_stand1;
self.th_run = can_stand1;
self.th_pain = can_stand1;
self.th_die = can_stand1;
walkmonster_start ();
};
Screenshots don't work with sprites:
http://members.home.nl/gimli/sprite.wmv
#8134 posted by Preach on 2008/12/08 11:43:21
You can simplify that code a bit, and take out the monster AI functions which don't suit a trash can well.
void() can_stand1 =[ 0, can_stand2 ] {};
void() can_stand2 =[ 1, can_stand3 ] {};
void() can_stand3 =[ 2, can_stand1 ] {};
void() model_can =
{
precache_model ("progs/can.spr");
self.solid = SOLID_BBOX;
self.movetype = MOVETYPE_NONE;
setmodel (self, "progs/can.spr");
setsize (self, '16 16 -24', '16 16 40');
self.think = can_stand1;
self.nextthink = time + 0.1;
};
Notice that the $1-3 can be replaced with the numbers 0 to 2, the corresponding numbers for the frames in your model. The ai_stand() function is not needed, so we delete it.
Also, you don't need to run all the walkmonster_start stuff just to get it to run can_stand1, which is what is doing the animation here. If you just set that function to be the entity's .think, and set the .nextthink to time + 0.1, then in 0.1 seconds time the can will run can_stand1.
For a more detailed explanation of what is going on with a line like:
void() can_stand1 =[ $1, can_stand2 ] {ai_stand();};
you might want to read the second half of http://www.quakeexpo.com/booth.php?id=32&page=186
I know I wrote it myself, blowing my own trumpet and all, but it's easier for me to find my own articles on the matter.
Quake (1) .map Export From Blender
#8135 posted by Spirit on 2008/12/08 14:52:16
Blender seems like a great tool to create terrains and other "advanced" brushwork. Here is a long but easy way to get a Quake 1 map from the Q3 .map export.
-First a dirty hack. Edit the export_map.py. A bit below "# Split mesh into connected regions" change "write_face2brush(file, f)" to "write_cube2brush(file, face_group)". I suggest saving under a new name (top of the file) to avoid confusion.
-Create your stuff from single brushes. You can use the first brush as base.
-Move vertices around happily (with snapping I suggest) and don't forget triangulation on faces that need it (if you get gaps and "wrong" brushes exported, this will be the reason). Ctrl-T and Ctrl-Shift-T (for the other diagonale) do this. You will need to do it on faces that create a new edge.
-When you are done, export: File -> Export -> your q3 script. If you use 64 for scale, the first brush will equal a 128� brush, 32 will get you 64� and so on. I think the Grid Snap is a good idea, haven't played with it yet.
-Open the .map in QuArK (Quake 3). Copy the brushes into a Quake 1 .map. Save that .map.
-Open the Q1 .map in a texteditor and replace ".00000" with "" if you feel like it. You must replace all " 0 1 1 0 0 0" with " 0 1 1". (If there are 0.xxxxx values, well those too. I haven't really figured out where those sometimes sneak in yet.)
Done!
I Forgot
#8136 posted by Spirit on 2008/12/08 15:01:47
Before exporting, make sure to select all brushes (a).
Madfox:
#8137 posted by metlslime on 2008/12/08 19:27:32
First I had to convert the brushes in the sprite upside down, as I only got an upside down sprite in game.
This is actually a bug; sprites are drawn upside-down in glquake and a lot of engines that are based on glquake.
Sorry
#8138 posted by necros on 2008/12/08 19:59:05
i didn't really explain properly:
$frame 1 2 3
void() can_stand1 =[ $1, can_stand2 ] {ai_stand();};
void() can_stand2 =[ $2, can_stand3 ] {ai_stand();};
void() can_stand3 =[ $3, can_stand1 ] {ai_stand();};
should be
void() can_stand1 =[ 0, can_stand2 ] {ai_stand();};
void() can_stand2 =[ 1, can_stand3 ] {ai_stand();};
void() can_stand3 =[ 2, can_stand1 ] {ai_stand();};
all those $frame1 $frame2 crap does is start counting up from 0 and assign a number, so when you do like
$walk1 $walk2
$run1 $run
$walk1 = 0
$walk2 = 1
$run1 = 2
$run2 = 3
and your model would have the two walk frames as the first two frames, and the two run frames as the last two. (they have to be in that order)
Oh
#8139 posted by necros on 2008/12/08 19:59:52
and as far as i can tell,
$cd /raid/quake/id1/models/can
$origin 16 16 24
$base base
$skin base
is completely useless and doesn't do anything.
it was only there when id compiled the old models using their old tools. now with qme and such, that isn't necessary.
Splendid!
#8140 posted by madfox on 2008/12/09 00:35:51
Thanks for your answers, it was really a mystery to me how to get sprites inside Quake.
metlslime - I already thought I did something wrong. FimG shows all the other sprites right, but it is something to remind.
preach - that works great. I have already your tutorial on my disk, but reading it again won't do me harm. It gives more insight in the statements.
necros - thanks, that makes the script shorter and reasonable to use.
For now the sprite runs good, but I can't place it on buttom. If I use:
setsize (self, '0 0 0', '12 12 24');
the can appears excact on the half.
|
|
You must be logged in to post in this thread.
|
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.
|
|