#982 posted by Kinn on 2016/02/01 14:46:39
I'd personally be down for using a new flag (like blood trail).
However that requires tools that would support it. It personally doesn't bother me in the slightest as I bang out .mdls from blender using a script that I can easily edit.
#983 posted by Baker on 2016/02/01 15:55:08
For existing tools (QME) to conveniently work, I would personally opt for checking BOTH a rocket trail and grenade trail (selecting multiple trails is non-sensical in the engine, it only uses the first trail flag).
In model.c in model load, engine authors can just add a
if (model->flags & (EF_ROCKET | EF_GRENADE) == EF_ROCKET | EF_GRENADE ) model->flags ~= EF_ROCKET | EF_GRENADE, model->flags |= EF_ALPHA_MASKED;
A non-supported engine it's going to render horribly wrong anyway with pink everywhere.
This would allow QME to be able to edit the flag, instead of putting terrible burdens on mappers.
/One thought ... Spike said only FTE has a mechanism currently.
However...
#984 posted by Kinn on 2016/02/01 16:15:10
QME lets you set any flag I think, not just the ones in use...
http://i.imgur.com/w3MTNZt.png
So, using an unused flag might be ok, even for people who for some masochistic reason use QME to make mdls.
#985 posted by Baker on 2016/02/01 17:06:39
Awesome, did not know that!
Methinks Spike may not have known that, I didn't like the "must use Hex Editor idea".
Looking Through Spike's Source Code
#986 posted by Baker on 2016/02/01 17:15:17
and reading his above comment,
looks like 0x4000 (16384 decimal) is the flag that would be most compatible with FTE.
#987 posted by Baker on 2016/02/01 17:28:02
Sometime in the next 24 hours I'll grab bush1.mdl and palmleav.mdl (a palm tree) from Kurok, edit the model flag in QME and post a Windows OpenGL .exe Mark V with the implementation.
Holy Mother Of
#988 posted by Kinn on 2016/02/01 17:31:12
I'd better get my modelling trousers on
#989 posted by ericw on 2016/02/01 19:59:53
Another possible way to specify that the model should be alpha masked is making the skin name start with "{". Hexen2's TEX_HOLEY model flag (16384) seems OK though. Are hexen 2 and quake mdl's the same format, aside from extra flags used by h2?
I was reading the uhexen2 source, it looks like both palette index 0 and 255 are transparent for TEX_HOLEY, at least in uhexen2. But we would just use 255 since that's what is used elsewhere in quake.
Last thing: it might be worth comparing this with a different approach: trying obj2map's new UV/texturing import feature, and then either compile the foliage maps to bsp (disadvantage: lighting would be static) or even try using itendswithtens's new map instance inserter tool to automate pasting prefabs in your map (?). My light tool can even raytrace through the fence textures properly, giving natural shadows under trees. This route is likely more of a pain to set up, but it would have the advantage of working in all the engines that already support "{" textures.
#990 posted by Kinn on 2016/02/01 20:22:19
Quake loads up a hexen2 .mdl fine. Other than that, I don't know how the formats differ.
I'm thinking of making the foliage move in some cases, so bsp wouldn't be great for that.
Also I just don't think bsp feels right for the sort of geometry I have in mind.
Also: plant monsters.
Heh
#991 posted by ericw on 2016/02/01 20:49:25
killer hedges / vines.. looking forward to seeing this!
#992 posted by mankrip on 2016/02/02 02:06:46
Alphamasked MDL texture support has existed in Makaqu for ages, and Super8 inherited it.
I've also implemented it in the x86 ASM version of the MDL drawing code, for fast performance.
#993 posted by Breezeep_ on 2016/02/02 02:28:15
So far, I've deleted the Config, and It still crashes on startup. Is it not compatible with Windows 7?
@kinn - Alpha Models Build
#994 posted by Baker on 2016/02/02 03:57:29
Experimental Windows GL Build with alpha texture support for models (with changed source files)
Palette 255 is transparent color, model must have flag 0x4000 set in the .mdl QME 3.1.
A test mod is supplied. Type in console:
"game alphamaskmodeltexture; map start" and watch the lavaball in the HARD hallway which has been replaced with palm leave .mdl.
And looks like this:
Screenshot
@ Breezeep_
#995 posted by Baker on 2016/02/02 04:03:06
I develop on Windows 7. I don't know why you are having the problem, somewhere around 100 ppl have used Mark V WinQuake.
If you are committed to helping me identify the nature of the problem, I might be able to get it running for you if you are willing to post logs and such. I think in another thread Skiffy said he had a problem like yours.
Let me know.
@ericw, @mk
#996 posted by Baker on 2016/02/02 04:04:53
@ericw - agreed, heh.
@mk - that's awesome that Makaqu has that feature already. Even more awesome that you have asm for it.
Baker
#997 posted by Kinn on 2016/02/02 13:09:37
Wow, that's perfect. Thanks so much for this!
I'm going to be making a lot of assets that showcase this in my mod. Might even be ready for the 20th anniversary expo!
#998 posted by necros on 2016/02/02 14:21:50
ok, i'm sold. that looks terrific!
#999 posted by Baker on 2016/02/02 20:26:34
@necros -- updated the above download raising max static entities from 512 to 8192.
Client-side entities are very small and just keep track a couple of dozen numbers/positions/times and the static limit was just an array of client-side entities and nothing more.
(MH and Spike point out other limiting factors.)
#1000 posted by mh on 2016/02/02 21:25:01
@necros -- updated the above download raising max static entities from 512 to 8192.
One would hope that at some point you'll drop the array and just Hunk_Alloc each entity_t as each static entity comes in.
#1001 posted by Baker on 2016/02/03 04:17:36
I know how to do it, but until classic-like Quake engines implement "add static entities at any time" for dead monsters and gibs and the like, static entities is basically just a fixed array that happens during connection to the map.
Compounded by: what if a monster died on a lift or temporary floor -- since static entities don't move? And then if you fix that, you break standard Quake physics.
And the entity_t struct stores a ton of lerp data and other things that don't apply to static entities --- which never move. I killed the grunt on the opening bridge in Metal Monstrocity and then shot the bridge release and then was slightly distressed that his body just floated in the air, but in DarkPlaces he'd fall into the pit when the bridge is gone.
Optimization and Quake can be a paradox or at best a rabbit-hole with no known end. Proof that Quake was made by an HP Lovecraft monster and somewhere Cthulu is laughing ...
#1002 posted by necros on 2016/02/03 04:39:11
wait, what? monsters don't get made static when they die.
monster corpses float in the air only because the fl_onground flag doesn't get cleared so the engine ignores it when doing physics updates. Darkplaces probably just fixes that behaviour.
#1003 posted by necros on 2016/02/03 04:40:01
actually wait... if a corpse floats in the air when a lift goes down, that's some kind of bug because corpses DO go down with lifts and such. maybe a corner was on the ledge?
#1004 posted by Baker on 2016/02/03 04:55:39
Monsters don't get made static when they die.
I was arguing that in some ways, they should.
If standard QuakeC exposed the ability to make create new static entities at any time like DarkPlaces permits.
Then QuakeC doesn't waste time performing physics or sending network traffic on dead monster bodies.
(Then I mention the problem with this is that if you make dead monster bodies static entities --- they don't experience physics and some places they should).
#1005 posted by Spike on 2016/02/03 09:02:52
attachments could be used on static ents so that corpses could move with the platform.
which would work fine until the platform is killtargetted and then spawned as something else... yay corpses riding your nails!...
might be fun.
#1006 posted by mh on 2016/02/03 12:34:52
...until classic-like Quake engines implement "add static entities at any time" for dead monsters and gibs and the like, static entities is basically just a fixed array that happens during connection to the map
Hmmm - I'm not sure how this is potentially a blocker.
To be clear, the suggestion to just Hunk_Alloc each static ent as it comes in is nothing to do with being able to makestatic at any time.
It's to do with (1) removing the limit on static entities so you don't get in an arms race with mods, and (2) saving memory while doing so.
Both of which are IMO useful and essential things to have in any engine, irrespective of presence or absence of other features.
|