News | Forum | People | FAQ | Links | Search | Register | Log in
Quinstance - Editor Independent Quake Prefabs
Quinstance is a cross-platform utility application that wraps around VMFII to enable the use of the func_instance entity in Quake mapping.

Download
https://github.com/ItEndsWithTens/Quinstance/releases

Requirements
Windows: .NET 4 or later, http://www.microsoft.com/net
Linux/OSX: Mono, http://www.mono-project.com

"Instances" are essentially prefabs that automatically update when you make changes to them. Place a func_instance entity in your map at whatever position and orientation you'd like. Set the entity's Filename key to the relative path of another map, containing geometry and/or entities, and see that after being run through Quinstance and compiled, a copy of the other map's contents will have appeared where the func_instance once was.

Uses for the entity range from things like duplicating common architectural elements or complex entity configurations, to building structures on grid but positioning them off grid while maintaining ease of editing (and that without fear of slowly accumulating vertex creep), to having multiple mappers working on a project concurrently. Instances aren't the solution to every mapping problem, and have their own quirks, but when you need them they make life a lot easier.

More detailed instructions are included with the download; take a look if you're curious, and if you have further questions, ask away!
Nice Solution For JH That Lacks For Prefab Support 
Hmm, the problem is we can't preview the contents of the func_instanced map file in the editor. I'll probably add "map" as an additional model format to Quake plugin, so at least geometry will be previewed in JH. 
 
That'd be great, thank you! If I could be a pest, I'd like to also request a couple of instance related features from the Source version of Hammer: optional highlighting (func_instance contents are tinted yellow by default, but you can also have them displayed normally or hidden completely), and an "Edit Instance" button, or something similar in the object properties page, to let you quickly open the instance map for editing.

I just grabbed a screenshot to demonstrate what I mean. 
Finally! 
Finally! I was begging some tools programmers for years to get this feature in the editor. That's a good first step to make Q1 mapping more smooth ;) Thanks! 
Nice! 
Might be a while before I get a chance to have a gander at this (work has just pinched off a great big loaf on my doorstep) but this sounds very cool, cheers! 
This Would Be Wicked 
Yes please 
Update! 
Version 0.2.0 has been released! There's a few minor bugfixes in there, but the real news is extra format support. Despite the mind rending terror of matrix multiplication, I managed to throw together support for the old QuakeEd .map spec, so if you're a TrenchBroom or NetRadiant devotee you won't have to convert your files to 220 ahead of time. QuArK users are still shit out of luck, I'm sorry to say. 
 
QuArK users are fine. They have duplicating and instancing out of the box. 
Take This. And That. And One Of These. 
It's only been a couple days, but version 0.2.1 is out. One major bug preventing the program from working at all in Linux/OS X, and another affecting all platforms that stopped certain types of maps from being correctly processed, have been taken care of, so if you've tried to use the software since its release but run into trouble, you may want to try again. 
Back From The Dead 
Configuring this for a new installation of J.A.C.K. during Map Jam 7, I realized my own readme left a little to be desired. As such, I've just released version 0.2.2, which takes care of that and also updates VMFII to a build of the latest code as of this writing.

My apologies to anyone who tried to use this but couldn't get the instructions to work! I'm dumb. 
Ooh...forgot All About This Awesomness!! 
Does it show up in J.A.C.K.? 
 
Not in the sense of being able to see the instance map contents, no. Adding the included func_instance.fgd to Jack's list of FGDs for a game configuration will let you see the little magenta entity box, complete with orientation arrow, so position and angles can be worked out without too much hassle. Actually seeing what's inside would require support from the editor, however. 
Version 0.3.1 
A new release is available, following on from yesterday's 0.3.0 which I never got around to mentioning here.

0.3.0 added the --remove_entities option, making it easier to maintain placeholder geometry in your map file, to facilitate working in editors that don't display func_instance contents (i.e. all of them :P). Tie said placeholder geometry to an otherwise non-existent brush entity, for example func_placeholder, then pass that entity name to Quinstance with the new parameter:

quinstance --fgd quake.fgd --remove_entities func_placeholder,func_greybox,func_someothernameyoumakeup

The entities specified will then be stripped out of the input maps, so no need to mess with hiding and unhiding groups as you work.

0.3.1 fixes an irritating bug when .texinfo files are present (from ericw's last few tyrutils releases), and adds some missing info to the readme and usage printout. 
0.3.2 
For the love of God someone smack me! Version 0.3.2 is now available, tremendously stupid mistake on my part would overwrite input files in 0.3.1 if you compiled in the same directory as your source. Goes to show I really need to take my testing more seriously. I hope nobody got caught by this, sorry! 
 
This would be extremely useful. Would it be compatible with Trenchbroom though? I've asked SleepwalkR once but he told me that TB didn't support prefabs. 
 
It's compatible with anything, since it's an external tool that uses new (but ordinary) entities. 
 
Awesome! That'll speed up building time a lot. Thanks, ItEndsWithTens - and adib for your reply. 
Just Remember 
No editor has support (yet?? o please o please Xaerox & SleepwalR) to actually show the instance in the map it's placed in. 
 
Ah. Yeah, I remember reading something like that. Suddenly it becomes less convenient. I might wait for that, then. Thanks, Qmaster. 
There Are Too Many Problems With Instancing 
Like handling textures, transformations, entity links. I haven't found a good solution yet. 
How So? 
Can the import code for Quinstance be used directly inside Trenchbroom for importing the instances on .map load and putting them into a group inside the .map. When saving, you would need to make sure all obkects in the group don't get added and of course those objects shouldn't be editable or selectable. I think it might be easier for Trenchbroom since the native format is .map.

They wouldn't refresh unless you added a toolbar option. 
Here 
is a feature request for a prefab system that also discusses instancing and explains the related issues in a little more detail. I'll add instancing to TB only when the texturing problem is solved.

https://github.com/kduske/TrenchBroom/issues/558

You're welcome to add your 0.02 to it.

Regarding what you wrote, storing the instances in the .map files is not a concern, actually. I'd just introduce a new type of func_group, which I have already done for TB's layers and groups support.

It's also described briefly in a comment. 
You must be logged in to post in this thread.
Website copyright © 2002-2023 John Fitzgibbons. All posts are copyright their respective authors.