News | Forum | People | FAQ | Links | Search | Register | Log in
Jackhammer 1.1.855 Public Beta Is Out!
Hi all!
We are glad to present the new version with another bunch of bugfixes and improvements. ^^
Thanks to everyone who helped us with suggestions and bug reports!

New version highlights:

* Dynamic Sky Rendition: Jackhammer renders skyboxes in the same way games do. In addition, there are layered clouds in Quake, rotating skybox in Quake II, and shader effects in Quake III supported. To facilitate the choice of a certain sky in map properties, a drop-down combo with icons was added.
* Improved Arch Tool: arch creation instrument got new abilities. Now it allows triangulation upon creation, fitting arches to selection box, estimation of proportions using a grid. Also it is possible to create smooth ramps.
* Keep Internal Connections: option to preserve internal connections (targetname-target links) in entities during copypaste and cloning (i.e. dragging with Shift pressed) operations.
* Snap to Grid Revised: subsequent calls to it change anchor point, looping through all eight bounding box points (previously only the lower bounding box point was used as an anchor). In Vertex Manipulation mode this instrument snaps using selected vertices, thus enabling alignment of the whole object that ensures the certain vertex on the grid. In addition, VHE-style snapping to grid during movement of the selection was added.
* Texture Repeats: added special mode to draw borders of repeating (tiling) textures in a 3D-View.
* New Curve Types: now it is possible to create for Quake3 such primitives as Exact Cone, Exact Cylinder, Exact Sphere - correct round variants of cones, columns and spheres.
* Additional Instruments: ability to connect logically two entities using their target and targetname fields using Ctrl+K, separate tie to entities function. Upon automatic creation of the default room, the editor now can paint invisible faces with NULL or caulk texture. Improved Paste function - now it preserves an original third coordinate in a 2D-view.
* Multilingual Support: switch to your native language when using the editor! Now there is no need to consult a dictionary to find out what either menu command does, or to understand a reason for an error. Presently there are English, Russian and Ukrainian languages supported. Languages can even be switched dynamically without restarting the editor.
* Lots of improvements: the new version traditionally contains lots of bugfixes and improvements in comparison with the previous release. The editor became much more stable and functional, and now it is a beta. Please view a changelog for the details.

This version supports Quake, Quake II, Quake III, Half-Life, Gunman Chronicles and their modifications.
Supported operating systems: Windows, Linux.
Supported architectures: x86 (32-bit), amd64 (64-bit).

Web page
Feature list
Changelog of version 1.1.855

DOWNLOAD NOW!

Again, thanks for the feedback, some features were added because of your requests.
Merry Christmas and a Happy New Year!
First | Previous | Next | Last
I Can't Even Click The Button :( 
I Fixed It. 
the button is still borked, but I was able to manually enter the quake.pal into the config file.

thanks :) 
 
If the button is disabled, then you definitely use a wrong game profile. Map type must be "Quake" for Quake. And you set either Half-Life or Quake3, that don't use palettes. 
Hmm, Some Requests Or Something 
1) In the FGD format you can specify the studio("progs/whatever.mdl") header property on an entity, which will render that entity using that model in the editor. If you leave the model string empty it will use whatever you put in the "model"-key for that entity.
Unfortunately in Quake (and AD especially) the model key is rarely used straight off, since it is treated specially by the engine, and it's instead set using "mdl" or something similar.
It would be great if you in the studio() header you could specify the property name that controls the rendermodel. Some of the other header properties allow you to specify property names already (like sphere), so I'd imagine some functionality for parsing it already exists? Like, if the contents between the parenthesis is quoted, treat it like a model string, else as a property name, fall back on the "model" key if that fails.
This, combined with using the studio datatype for the actual keys would make Jackhammer a much more WYSIWYG editor.
My current workaround is to make a duplicate "model"-key and make sure I remember to set both keys on the entity, and that I remember to remove it before compile.


2) I would really love it if there was a way to snap an entity's origin to grid. As it is now the snap to grid command only snaps the corners of the bounding box, which can be fairly useless on a single entity if the bounding box is weird.
My workaround at the moment is to open preferences, check the "Snap selection to grid when dragging" box, nudge the entity so it snaps, open preferences and disable the snapping again.
Alternatively, if there was an option to have a single entity selection be exempt from the standard snapping rules, that would be great as well.


Other than that I'm really enjoying working with this editor! Thanks for doing good work! 
Addendum 
Please consider, if you're going to add more flexible model support, to use TrenchBroom's simple expression syntax, or let's work together on a better one. It's described in detail here:

http://www.kristianduske.com/trenchbroom/docs/adding_models_to_entities.html 
 
2czg:
1) Property name is specified in the following way. Add a key named whatever you like, to a FGD class description, of a type "studio". Then add the "studio()" token. JH will take model name from a value of that key. And if the key is not set or missing, it falls back to a "model" key.
Example:

@PointClass studio() = custom_model : "Model"
[
mdl(studio) : "Model File"
]

The same applies to other keys: there are special key types in JH to override defaults. E.g. "scale" type for as a custom scale key, "flags" type for a custom spawnflags key, and so on.

2) I've changed a behavior of a "Snap to Grid Individually" command, so it snaps point entities using origins instead of bboxes. This will be exactly what you need. :)

2SleepwalkR:
Your expression syntax is very good and one day I'll definitely will add support for it!
The only thing I don't understand is a need for colons. In Qt framework, it is used to tell Qt what a file should be looked for in resources instead of a disk filesystem. But what's the purpose of the colon in TB? 
 
UPD: read "And if the key is not set or missing" as "And if the key is missing from FGD". The presence in a particular entity doesn't matter, key handlers are set up for gamedata classes, not entities. 
 
1) I swear I tried that exact setup and it didn't work, but I'll try again on Monday. Maybe I missed that permutation of the keywords.

2) The snap to grid change sounds perfect, thanks! 
XaeroX 
The colon is legacy from the DEF file syntax, and in TB2 it has become optional. I'm going to leave it out in the docs for TB2, as it is ignored now anyway. 
A Nice Side Effect 
If TB2 and Jackhammer were to support the same syntax extensions in FGD files, we could share our FGDs. TB2 can already read JH FGD files, but it ignores some of your additions (such as the @Main class). 
 
You mean "@WorldClass"?
Well, it was added just in case in some engines worldspawn class will be named something different.
It will be nice, if not support FGD extensions of each other, at least parse without errors, silently ignoring them. 
 
No, I mean "@Main". I can't find it right now, but there was an FGD file that had such a class and I assumed that was a JH addition. I suppose I was wrong. I haven't come across an FGD containing "@WorldClass" yet, but it sounds like a good idea provided there are such engines. 
Memory Issues 
It seems that Jackhammer isn't freeing memory resources for the current mod when closing the file. When I have my quake map loaded, it uses 277MB but when I close it it doesnt free up that memory. FYI. 
 
Of course it doesn't free memory. Why should it?
Most of the memory is eaten by textures, and no one wants them to be unloaded and then precached again for each map opened. Instead, JH doesn't unload them until the editor itself is closed. As for the map geometry it is certainly freed upon closing a map. 
 
freed memory often isn't returned straight to the OS, either - applications just hold the pages until they need them again. 
 
Ok, I just tried and I can confirm this setup does NOT work:
@PointClass base(Appearflags, Targetname) studio() size(-16 -16 -16, 16 16 16)
= misc_model : "Custom Model" [
mdl(studio) : "Model to load"
]

It just displays a bounding box.
Replacing "mdl" with "model" works, but that's not an option.

This is in Jackhammer 1.1.855 64-bit 
Very Interesting 
Have just tried exactly what you wrote. And it worked! O.o.
http://pix.academ.info/images/img/2016/01/19/5f36552215aef482639e59999eb88585.jpg

Are you sure you don't have another misc_model defined in other FGD or earlier? In the case of duplicates JH will use the first definition. Please rename the entity to misc_model2 and check whether it helped. 
Ah, I Figured It Out. 
It must be that the .jmf format stores the rendermodel and doesn't bother refreshing it when the fgd is updated.
All my old misc_models had the bounding boxes, but then I noticed any new ones I made correctly showed their models. I selected all my old ones, changed them to some other type, changed them back, and now they all work.
So yes, the fgd entity studio() setup you posted works correctly. 
 
Oh yes, specific key overrides are stored in JMF, I forgot that, sorry. 
Check For Problems Issue 
When checking for map problems, if I use an entity not defined in the fgd and give it a targetname, any entities targeting it will give an error: "Unmatched 'target' field ('name')" Would be nice if the editor would check all key|value's for the 'targetname'. 
 
Unfortunately it is not possible after I've got rid of hardcoded keys. Editor doesn't know what is it - "targetname". It searches for matches between target_source and target_destination FGD fiels. If an entity is not defined - it is assumed it has no targetname, target, model, scale, rendermode etc. 
Pester 
I have a request that will enable some Quake hacks but doesn't harm the editor.

In the Entity Report window, entities should be sorted by the user. The grid is sorted by entity class today, but it should also be sorted by name and target if the user clicks columns titles.

And best of all: there should be Up and Down buttons, so the user sort the entities manually. What for? The Quake MAP exporter would write the entities in the order they appear at Entity Report window. Then some Quake hacks would be possible and better controlled (ask Preach).

The entity list order should be saved in the JMF file, so the customized order don't get lost. When you open a map (JMF or MAP), the Entity Report window would be populated following the order the entities appear on it. So, the entity order only changes on user command.

This functionality wouldn't harm other games and would be useful for ones where entity order is important.

See? It's so easy! I just have to write all this down and keep bugging you about it. 
Bug Report 
The latest version of JH sometimes messes the texture information on faces after rotation. That causes light (latest ericw's) tool to interrupt. This issue can be fixed by finding such faces (they look like the texture is overextended there) and selecting world or face checkbox there. 
 
That's not really a bug report. They can't do anything with that. Are there repro steps they can use to see the bug happen reliably? 
Hm Let Me Try One More Time 
I can't say there's a 100% way to reproduce that, but the most often ii happens if you have a brush with a non-rectangular shape that has a face with UV-lock aligned texture (the latter is not nesessary). Then I clone such brush using shift+drag and rotate it 90 degrees using handles (fixed 15-degree rotation). Then I repeat these steps with each cloned and rotated brush.
Texture lock is on, scale lock is off, UV lock is usually off.

This is also the WTR that Y-scale of UV-lock aligned textures somehow changes when cloning and rotating brushes that probably causes all other problems. 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.