Commented 11 months ago2023-12-30 12:38:07 UTC
in wiki page: Specification: JMFComment #105812
With the December 2023 update the JMF version was changed to 122, now including a data for background images in the 2D displayports.
From what I've found so far, the new structure looks like this:
typedef struct {
char[4] magic; // File format magic number, "JHMF" in ASCII encoding
int32 version; // File format version (currrently 122)
int32 ep_count; // Number of recent export paths
p_char[ep_count] export_paths; // Recent export paths
bg_image[3] bg_images; // Background images
int32 group_count; // Number of groups in the map
Group[group_count] groups; // Group objects
int32 visgroup_count; // Number of VisGroups
VisGroup[visgroup_count] visgroups; // VisGroups objects
Vector cordon_min; // Minimum corner of the Cordon box
Vector cordon_max; // Maximum corner of the Cordon box
int32 camera_count; // Number of Camera objects
Camera[camera_count] cameras; // Camera objects
int32 path_count; // Number of path objects
Path[path_count] paths; // Path objects (created with the Path tool)
Entity[] entities; // All entities including worldspawn, read until the end of the file
} Jmf;
As for leaks, the map must be completely sealed against the "void".
While it has to do with how the compilers process the geometry and calculate what's supposed to be visible, you can think of it as entities not being allowed to come into contact with the void and so you must build an airtight container for all entities in your map.
It's easy to be tempted to put a giant hollow box around your map to prevent leaks, but this will cause the compiler to think everything in your map is supposed to be on the inside and fail at optimising it. It's essentially turning your entire map into one big open area, which the GoldSrc engine really doesn't like.
As Urba says, try avoiding any caffeine in the afternoon.
If you find yourself enjoying the taste of coffee and would like some in the afternoon anyway, I can recommend caffeine-free coffee. Alternatively cocoa (either as hot chocolate or a bar of dark chocolate) is also a source of caffeine but at a much lower dose and better to have in the afternoon than coffee.
As for the last part, self-destructive behaviour is often a symptom of some other cause, like stress, anxiety, and it could help to talk to someone professional about it.
Commented 1 year ago2023-11-02 10:00:17 UTC
in vault item: Learing HL sdkComment #105614
Looks like you've already gotten the hang of the basics!
It looks fullbright so you've either not included any lights in the map, or there is a leak (there should be error messages in the compile log if there were any leaks). If you haven't added any lights yet, there's a tutorial here about the basics of that.
For the wall where you've written "break" with decals, the reason it's mirrored is because the texture on the wall itself is mirrored. So with the Texture Application Tool just set the X scale to its negative (i.e. change the scale from 1.00 to -1.00).
Commented 1 year ago2023-09-18 08:17:44 UTC
in vault item: GoldSrc Map2PropComment #105567
@kimilil I'm already working on using the ORIGIN brush as model origin override, besides it wouldn't have enough information to make a skeleton chain.
I'm thinking instead of using a custom point entity (info_bone) that can hold a name and parent, and have it skinned to the vertices of any brushes grouped with it (or even radius around the entity, could use a keyvalue for that as well). Might look into it after the full release.
@SirYodaJedi I think it'll work fine, unless you use any Quake III curved surfaces. Just looked at the code now and realised it doesn't handle the curved surface array in each solid, which will corrupt all other solids after the first one. Already fixing that now 🙂
Venting is perfectly fine. Otherwise the metaphorical pressure builds up until something breaks.
The late hours do tend to promote thinking. It's quiet and no one else around, so the mind gets to wander more freely. For a night owl like me, that's when I'm also the most awake and productive.
At the same time, those late hours also often coincide with sleep deprivation, especially for those of us who have to wake up early for school or work and such. That can greatly exacerbate symptoms of depression and other conditions, and negative emotions in general. Not saying you shouldn't be up late, but just that you should be aware how it affects mental health (and, speaking from experience, insomnia and depression can easily start a positive feedback loop that spirals to very bad places).
Commented 1 year ago2023-09-08 09:12:48 UTC
in journal: In other news...Comment #105540
Thanks, I'm glad you think so. 😊
I've done a couple freelance photography jobs over a decade ago but overall it has been pretty much just a hobby. Mostly I take photos for inspiration or reference for my other creative projects, other times because I think a scene or subject is pretty or when I just want to capture a moment.
Perhaps I could create a new portfolio and do it as a side hustle?
You seem to think that merely discussing behaviour means establishing new rules, which it inherently isn't. A proposal for a rule may be brought up during a discussion, but that's not what has happened here. If you're worried a community is going to establish excessive or unnecessary rules, the best thing to do in that case is to discuss it and address the cause for why those rules were proposed in the first place.
The rules already in place on the site (and the discord you keep bringing up for whatever reason) are few and non-intrusive. As the context here is this community, are these the rules you view as "completely useless, dictatorial and rude"?
And no, I'm not here to educate anyone on social behaviour. I'm simply just airing my thoughts about a specific part of how we behave in this community, since I'm a part of it.
I actually played that func_vehicle invade-the-building one! It had some unique gameplay combined with the jankiness of the goldsrc physics which made it a very fun map 😄
Oh, you were actually being serious. Reverse Poe's Law, I guess.
Well then. First of all, I haven't told anyone how to behave in my post (the closest to it is stating that it's rude to not thank someone for the help, because that's what it is). My final paragraph is directly addressing this.
Secondly, when you call "this" evil, are you referring to my post or to the act of telling someone to behave?
Either way, taking into consideration that we as people are social animals, and that this is a community, having discussions about norms, culture and behaviour is the healthy and good thing to do. In other words, it's beneficial to the majority in this context, i.e. it's what's morally good (for the community) here.
Not having this type of discussion will cause harmful and anti-social behaviour to go unaddressed and unchallenged, in turn harming the community and hurting its members. As this leads to a negative outcome for the majority, it can't be anything but morally evil (towards the community) in this context.
Of course, morals are relative. Perhaps your morals are based on what's good and un-impeding to yourself, and screw everyone else?
Welcome to TWHL! Always great to see more TFC content and returning veterans 😄 I already took a quick look at the map and it looks great! (By the way, the Vault has a listing for Team Fortress Classic for the Game category, since I noticed you used HL)
Edit: Just read the description in the vault entry 😅 There are still some people left still playing TFC (myself included!) so please don't feel discouraged from finishing it
Out of curiosity, since you said you released a few maps, which ones? I've played a lot of TFC through the years, perhaps I've already tried some of them?
So what I was testing was vertex coordinate rounding (to keep CSG happy, of course) and while it worked okay enough on certain other models (they had relatively low poly densities), HD Barney from SC had a higher poly density which was dramatically affected by the coordinate rounding.
Commented 1 year ago2023-07-23 10:49:32 UTC
in vault item: GoldSrc Map2PropComment #105437
@kimilil I will consider that for the future. Even after I finish v1.0 of Map2Prop I still have two mapping projects I'm working on I want to finish first before starting a new project.
@cindor That sounds similar to the concept Kimilil was talking about.
Someone in the Discord came up with the idea to use custom entities that would be turned into models and put back in the map. I guess one could call a program at the start of the compile process that'd extract these entities from the .map file and run Map2Prop on those (once I finish the .map format support) and then replace these entities with cycler_sprite or whatnot (possibly give it a CLI argument) before overwriting the .map and let the rest of the compile process go as usual. It wouldn't have Kimilil's baked lightmaps, but could been an alternative way of doing this.
Thank you! This is exactly one of the two reasons why I wanted to get those specifications on the wiki here. So more knowledgeable people like you and Penguinboy would be able to add to it and make corrections.
That way we can have a more complete and correct picture which will very much help with my second reason for doing this: Make the specifications available and easy to find so other people wanting to use these to make cool apps would be able to do so ^^
Commented 1 year ago2023-07-20 16:43:17 UTC
in vault item: GoldSrc Map2PropComment #105422
On the outside it's mostly just a smaller filesize for the executable. A bloated library was refactored out to make that happen, and a lot of the math functions it provided were replaced with standard library ones or rewritten by myself.
Also found and fixed a bug related to reading .obj files with ORIGIN brushes.
Commented 1 year ago2023-07-19 17:10:33 UTC
in vault item: GoldSrc Map2PropComment #105417
It was compiled on Win10 so it's possible it might not work on Win7 (it not being supported and all that).
The size is mostly due to a library I used for a lot of the math functions, and I agree it's unnecessarily large. Been working on refactoring out that bloated library since last week and should have a new version ready pretty soon. 🙂
Commented 1 year ago2023-07-18 07:39:47 UTC
in vault item: GoldSrc Map2PropComment #105408
Definitely! It basically lets you use your level editor to create models.
I hope it's useful to those that don't want to learn to use a 3D editor but still want to make model props for their maps. ^^
You shouldn't blame yourself for JD stop responding to you. As you said, Nightdive Studios were in contact with JD about purchasing the SiN franchise at the time, and it's not uncommon for the buyer putting a claim on any content related to the purchase and have related persons sign NDAs. It's possible JD just isn't allowed to speak to you at all about any of that content.
In other words, it's not a failing on your part. Things outside your control happened.
Part of the point of the program is to have an easy-to-use utility that avoids the use of any 3D editors. Not everyone wants to use something as antiquated like MS3D, or the intimidating UI of Blender, or the price tag of 3dsMax, or have the know-how to use these.
Extract in general means to remove or obtain or derive a thing from something else. In this context it means to obtain a texture image from a .wad package.
To be able to compile a model you need to have the texture files in the texture directory specified by the .qc (the same directory as itself by default) and since the program cannot provide those textures for you (the .mtl file only contains references to the texture name but not any texture file data) it's necessary to extract those textures manually. Currently at least, until the next version.
Commented 1 year ago2023-05-27 10:38:10 UTC
in journal: First journal entryComment #105297
I honestly don't expect anyone to recognize me, I've been quietly lurking here for most of that time, spending a lot of time just reading the tutorials and entity guides 😄
I choose to share a little surface-level of the not-so-good stuff from those years, not because I want to make excuses or because I want anyone's pity, but because I think it's important to be honest that things aren't always nice and dandy. Especially online, where we too often have this trend of only showing the positive sides of our lives. Someone who isn't aware of this filter might get the impression that everyone else has great lives with nothing bad ever happening and start thinking there's something wrong with themself for not having everything in order. I don't want to contribute to that.
I don't know if I have any undiagnosed ADHD on my part, but I do often find myself relating to things friends and acquintances with ADHD say about it. Perhaps I should try asking for a diagnosis once things settle again?
You don't need to set to subdivsions to 4, you could use 8 (then first level subdivision is 1 unit each) but I will recommend using powers-of-two for the subdivisions if you want to have some relation to ingame units. Or you can choose to not use subdivisions at all, up to you.
The grid scale has nothing to do with unit scale, so using the $scale 8.0 .qc option will make your model 8 times larger than intended.
I'd like to add that step 4 can be skipped by reversing the layer order, i.e. place the scaled lowres layer on top of the original and applying the blend mode to this. This produces the exact same result but without a colour invert step.
It does not seem like Paint.NET 5.0 natively has the Grain Extract blend mode. It's possible there might be a plugin for it but I haven't checked. GIMP is another free image editor that does have Grain Extract blend mode and so I would suggest using that instead.
Commented 2 years ago2022-12-16 11:57:01 UTC
in wiki page: trigger_changelevelComment #104931
gameaddict117o7 said:What's "No Intermission"?
I know it's 11 years since this comment was made but posting this anyway just in case anyone else wants to know what this flag does.
Out of curiosity I looked up trigger_changelevel in the Half-Life SDK and it appears it only defines the "USE Only" flag and this is the only flag it checks against. It seems it's a leftover from Quake where after a level change was triggered it would switch camera to an info_intermission during the "monsters killed/secrets found" screen, unless the flag was checked. While this functionality was removed in Half-Life, the flag remained.
TLDR: The "No Intermission" flag doesn't do anything and is just a leftover from Quake.
The opengl32.dll file fixed the selection problem for me, but it lags really bad when moving around in 3D view. Running on a Vista 32-bit. For now I'm just happy I can select properly in 3D view, but if anyone knows how to get rid of the lag it would be much appreciated if you let me know.
From what I've found so far, the new structure looks like this: and for the background image struct:
The cvar
waterroom_type
(default 14) controls which env_sound Room Type is applied when the player is underwater. It's seemingly unused in the game.As for leaks, the map must be completely sealed against the "void".
While it has to do with how the compilers process the geometry and calculate what's supposed to be visible, you can think of it as entities not being allowed to come into contact with the void and so you must build an airtight container for all entities in your map.
It's easy to be tempted to put a giant hollow box around your map to prevent leaks, but this will cause the compiler to think everything in your map is supposed to be on the inside and fail at optimising it. It's essentially turning your entire map into one big open area, which the GoldSrc engine really doesn't like.
If you find yourself enjoying the taste of coffee and would like some in the afternoon anyway, I can recommend caffeine-free coffee. Alternatively cocoa (either as hot chocolate or a bar of dark chocolate) is also a source of caffeine but at a much lower dose and better to have in the afternoon than coffee.
As for the last part, self-destructive behaviour is often a symptom of some other cause, like stress, anxiety, and it could help to talk to someone professional about it.
It looks fullbright so you've either not included any lights in the map, or there is a leak (there should be error messages in the compile log if there were any leaks). If you haven't added any lights yet, there's a tutorial here about the basics of that.
For the wall where you've written "break" with decals, the reason it's mirrored is because the texture on the wall itself is mirrored. So with the Texture Application Tool just set the X scale to its negative (i.e. change the scale from
1.00
to-1.00
).There are tons of tutorials in the wiki here that you can check out to learn more about mapping.
Good luck! 🙂
I'm thinking instead of using a custom point entity (info_bone) that can hold a
name
andparent
, and have it skinned to the vertices of any brushes grouped with it (or even radius around the entity, could use a keyvalue for that as well). Might look into it after the full release.@SirYodaJedi I think it'll work fine, unless you use any Quake III curved surfaces. Just looked at the code now and realised it doesn't handle the curved surface array in each solid, which will corrupt all other solids after the first one. Already fixing that now 🙂
The late hours do tend to promote thinking. It's quiet and no one else around, so the mind gets to wander more freely. For a night owl like me, that's when I'm also the most awake and productive.
At the same time, those late hours also often coincide with sleep deprivation, especially for those of us who have to wake up early for school or work and such. That can greatly exacerbate symptoms of depression and other conditions, and negative emotions in general. Not saying you shouldn't be up late, but just that you should be aware how it affects mental health (and, speaking from experience, insomnia and depression can easily start a positive feedback loop that spirals to very bad places).
I've done a couple freelance photography jobs over a decade ago but overall it has been pretty much just a hobby. Mostly I take photos for inspiration or reference for my other creative projects, other times because I think a scene or subject is pretty or when I just want to capture a moment.
Perhaps I could create a new portfolio and do it as a side hustle?
As you say, at least we've gotten a new HL game already, even if it wasn't HL3. 😄
The rules already in place on the site (and the discord you keep bringing up for whatever reason) are few and non-intrusive. As the context here is this community, are these the rules you view as "completely useless, dictatorial and rude"?
And no, I'm not here to educate anyone on social behaviour. I'm simply just airing my thoughts about a specific part of how we behave in this community, since I'm a part of it.
Well then. First of all, I haven't told anyone how to behave in my post (the closest to it is stating that it's rude to not thank someone for the help, because that's what it is). My final paragraph is directly addressing this.
Secondly, when you call "this" evil, are you referring to my post or to the act of telling someone to behave?
Either way, taking into consideration that we as people are social animals, and that this is a community, having discussions about norms, culture and behaviour is the healthy and good thing to do. In other words, it's beneficial to the majority in this context, i.e. it's what's morally good (for the community) here.
Not having this type of discussion will cause harmful and anti-social behaviour to go unaddressed and unchallenged, in turn harming the community and hurting its members. As this leads to a negative outcome for the majority, it can't be anything but morally evil (towards the community) in this context.
Of course, morals are relative. Perhaps your morals are based on what's good and un-impeding to yourself, and screw everyone else?
(By the way, the Vault has a listing for Team Fortress Classic for the Game category, since I noticed you used HL)
Edit: Just read the description in the vault entry 😅 There are still some people left still playing TFC (myself included!) so please don't feel discouraged from finishing it
Out of curiosity, since you said you released a few maps, which ones? I've played a lot of TFC through the years, perhaps I've already tried some of them?
Feedback is indeed very important, and I see it as the bare minimum someone should do in response to any help/answer.
@cindor That sounds similar to the concept Kimilil was talking about.
Someone in the Discord came up with the idea to use custom entities that would be turned into models and put back in the map. I guess one could call a program at the start of the compile process that'd extract these entities from the .map file and run Map2Prop on those (once I finish the .map format support) and then replace these entities with cycler_sprite or whatnot (possibly give it a CLI argument) before overwriting the .map and let the rest of the compile process go as usual. It wouldn't have Kimilil's baked lightmaps, but could been an alternative way of doing this.
That way we can have a more complete and correct picture which will very much help with my second reason for doing this: Make the specifications available and easy to find so other people wanting to use these to make cool apps would be able to do so ^^
I'll make the corrections to the WAD format 🙂
Also found and fixed a bug related to reading .obj files with ORIGIN brushes.
The size is mostly due to a library I used for a lot of the math functions, and I agree it's unnecessarily large. Been working on refactoring out that bloated library since last week and should have a new version ready pretty soon. 🙂
I hope it's useful to those that don't want to learn to use a 3D editor but still want to make model props for their maps. ^^
You shouldn't blame yourself for JD stop responding to you. As you said, Nightdive Studios were in contact with JD about purchasing the SiN franchise at the time, and it's not uncommon for the buyer putting a claim on any content related to the purchase and have related persons sign NDAs. It's possible JD just isn't allowed to speak to you at all about any of that content.
In other words, it's not a failing on your part. Things outside your control happened.
Part of the point of the program is to have an easy-to-use utility that avoids the use of any 3D editors. Not everyone wants to use something as antiquated like MS3D, or the intimidating UI of Blender, or the price tag of 3dsMax, or have the know-how to use these.
To be able to compile a model you need to have the texture files in the texture directory specified by the .qc (the same directory as itself by default) and since the program cannot provide those textures for you (the .mtl file only contains references to the texture name but not any texture file data) it's necessary to extract those textures manually. Currently at least, until the next version.
I choose to share a little surface-level of the not-so-good stuff from those years, not because I want to make excuses or because I want anyone's pity, but because I think it's important to be honest that things aren't always nice and dandy. Especially online, where we too often have this trend of only showing the positive sides of our lives. Someone who isn't aware of this filter might get the impression that everyone else has great lives with nothing bad ever happening and start thinking there's something wrong with themself for not having everything in order. I don't want to contribute to that.
I don't know if I have any undiagnosed ADHD on my part, but I do often find myself relating to things friends and acquintances with ADHD say about it. Perhaps I should try asking for a diagnosis once things settle again?
The grid scale has nothing to do with unit scale, so using the
$scale 8.0
.qc option will make your model 8 times larger than intended.I'll make sure to include those in the guide 😄
This produces the exact same result but without a colour invert step.
GIMP is another free image editor that does have Grain Extract blend mode and so I would suggest using that instead.
Out of curiosity I looked up trigger_changelevel in the Half-Life SDK and it appears it only defines the "USE Only" flag and this is the only flag it checks against.
It seems it's a leftover from Quake where after a level change was triggered it would switch camera to an info_intermission during the "monsters killed/secrets found" screen, unless the flag was checked. While this functionality was removed in Half-Life, the flag remained.
TLDR: The "No Intermission" flag doesn't do anything and is just a leftover from Quake.
For now I'm just happy I can select properly in 3D view, but if anyone knows how to get rid of the lag it would be much appreciated if you let me know.