Hey look, buddy. I'm an engineer. That means I solve problems. Not problems like "What is beauty?" because that would fall within the purview of your conundrums of phliosophy.
I solve practical problems.
yeah i haven't got anything done rip, what no motivation does to an mf (well i've really just been focused on other things)
would like to get back to chipping away at the website and finalize my shitty source mapping setup (or just distro-hop to an arch-based distribution, but i'm too comfy with mint to see if hammer++ with winetricks will work on fedora or manjaro)
Been quiet for a bit (honestly i can't tell if i was on time or not) but with my new rig set up, I want to go ahead and share some updates:
- The rig is using Mint, not Debian 12 KDE like what I said in the last devlog. Debian caused some weird resolution issues and I could not be assed to either figure out how to download the stuff needed to fix it or get the unstable build, so I fell back to Mint. After some setup, I basically got mostly everything running.
- I was able to use Wine to get Crowbar working. I haven't checked my other native Windows tools like VTFEdit Reloaded. VPKEdit has a native Linux version. I tried setting up Hammer++ using Winetricks and after some time trying to get it to work, I just gave up on it.
- I kept my old laptop around that has Windows 10 on it, and I installed some stuff (remote desktop software lmao) to basically be able to dual-wield my Linux PC and Win 10 laptop, so I can still use stuff like Hammer++ that absolutely cannot work on the distro I'm using.
also gm_boxxedcommunity is on hiatus... and the website is shelved (again). Don't worry, I didn't do complete jack shit!
I decided to pick back up on Godot again after a year, did the Dodge the Creeps and Squash the Creeps tutorials on the official docs, and started following this tutorial series (i just got done with the first video). The reason I'm doing this is because I want to make sort of a rougelike fps prototype thingy :P
Anyways here is what I got so far:
v i put that epilepsywarning tag on because of this video (might get flashy in some parts)
Yeah I only have the movement stuff (mostly) down, so stuff like bhopping, air strafing, and surfing. I still have to add crouching + crouch jumping and some other stuff. There's no shooty pew-pew yet because I haven't gotten that far.
All of this was done in Godot by the way. You are able to create Source-like movement in Godot, and it feels more nicer than the simple movement the CharacterBody3D script template and tutorials have, but there is more movement-specific code stuffed in the player character lmao.
It's probably gonna be like an on and off project rather than some full-time thing, and it is very early in development. There's still stuff to add, models to make, level design specifics to define (because I want to try to make it easy to make maps for this prototype), and that map selector is probably not final since it's mostly for debugging and a proof-of-concept thing.
That's pretty much it for this devlog. IDK when I'm gonna try to go back to working on gm_boxxedcommunity or that personal website. Also once I get the basic stuff like the movement and weapon manager added, I should really figure out what extra stuff to add in order to make it an actual rougelike fps.
Also as a side note, I personally dislike the term "rougelike" a little bit because of some comment I saw under a Youtube video saying that the game (Rouge) that the term originated from isn't really close to what rougelikes are usually are. I'm not gonna go too in-depth about weird game genre naming stuff, so I'm just gonna say that rougelikes should be renamed to Issaclikes, since they're closer to The Binding of Issac.
btw Risk of Rain 2 and Garry's Mod probably influenced my desire to prototype a roug– ahem issaclike fps game.
Lot of work on gm_boxedcommunity, TF2 map got shelved (again), and nothing's been done for the website.
gm_boxedcommunity
Gonna throw out a quick one because I'm starting to get tired of just gathering every single screenshot I sent and uploading them all to filegarden. Also, probably should ease up on the screenshots in general so I'm not over-sharing lmao
Just gonna share enough to give a gist of what I've been up to:
ignore the messed up geometry, i have since fixed that
I finally finished the belt area (second image) and now I'm just going back and improving the map geometry so it's more fun to play in. It was really cramped before, trust me :(
Also, I decided to add a new mechanic to give the respawn rooms more utility
I literally just made TF2 ahh resupply cabinets for the map lmfao. They're completely functional too! Well, almost. There's still some stuff I need to add and tweak such as sounds and ammo :P
I achieved this through GLua with a simple script that just sets your health and armor to their max values when you enter the resupply trigger. I might have to do more testing and tweaks to the script (e.g. seeing how it interacts with entities with more health/armor than their max values and writing extra code for those situations since ik some mfs gonna have 100k hp lmfao). I also have been tweaking the nodegraph to solve issues with NPCs clumping up at tight hallways and really to just improve the quality of the navigation. I still need to update the navmesh as well tho with the geometry changes I might just redo the whole mesh lmao.
Oh yeah. If you're not aware, GMod's maintainter, Rubat has packed CS:S assets directly in the game, which eliminates any need to buy or install CS:S for the textures. This is actually massive since I now have the freedom to use CS:S assets in my map without having to make people pay more money just to play the map. I'll have to edit my Hammer++ mount stuff to include CS:S (assuming it's not already mounted for me with the inclusion of said content in the base game itself) but this means that some areas where I have a CS:S model in mind but can't use it due to not everyone owning the game, I can now use that model. I also have more shit that I can use freely which will greatly diversify my model choices and put less work on me to figure out an alternative when the base HL2 assets don't have the thing that I need.
Yeah that's pretty much all I got regarding June stuff. Artfight is going on in July as many of you are aware, and while I'll be doing some stuff for it, I'm not gonna be as invested because I'm just not feeling it as much as I did the previous years. Gonna be taking it easier and just draw art when I can rather than trying to make attack ratio go up. What I mean is that Artfight might not impact the dev stuff that I do as much.
Also the PC parts I mentioned in the last devlog are here now so that's cool. The new rig will be using Debian 12 KDE for the OS so I might have to spend extra time setting my Source stuff up in Linux, esp since some of them are native Windows applications which means extra work is needed to get them installed.
Man, the title of the last devlog was NOT lying. I actually did quite some stuff throughout May, although none of that was for gm_boxedcommunity since I kinda took a break from that map to not burn myself out 😅
So.. let's begin
Website
SURPRISE!! I did work on the website! I finally managed to get past that list issue by just ditching the whole code and reimplementing it differently. Now I just copy the snippet wherever I need it until I can find a good way to "instance" the code or otherwise make it a template that can be easily changed in one place instead of having to update it literally everywhere. The implementation is nasty and is going to cause problems in the future unless I re-implement it in a much better way that is more maintainable (Nunjucks syntax + the many questions I have about it and how 11ty collections are set up (they're simple objects with a single array attached to them) is not making this any easier)
But hey, it works.
I do not feel like digging up a bunch of screenshots and I'm pretty sure everyone is tired of a million screenshots to scroll through so I just made a video of me clicking through the vault section of my site lol.
I then worked on other parts of the site like character profile layouts and how they'd work internally
it was defos an experience
Character Metadata
So for the character profiles, it's a mix of Markdown and YAML properties. For example, this is what Kathy's profile looks like internally.
In the YAML thing, the title, layout, altcss stylesheet, and other "custom" variables that get fed into the Nunjucks layouts are declared here. You might have noticed two interesting properties, IsMature and the thing of JSON sitting in the variables.
IsMature is a bit of an advanced variable I set up and it is a boolean (true or false toggles it). It basically determines if the little extra snippet of HTML gets included in the page or not.
{%- if isMature == true -%}
<dialog id=mature-alert open closedby=none>
<div>
<h1>Over 18?</h1>
<p>This page has been marked as <b>Mature</b> and may contain content not suitible for minors (under 18 or whatever the age of consent is in your area).</p>
<p><em>By clicking "Dismiss", you assert that you are of legal age <b>and</b> you consent to viewing of such content.</em></p>
<form method=dialog>
<button>Dismiss</button>
</form>
<p><a href="/vault">Take me back!</a> (Takes you back to Vault root)<br>
<small>Alternatively, use the browser back arrow</small></p>
</div>
</dialog>
{%- endif -%}
Yes, it is literally the exact same as a "R U OVAR EIGHTEEN M8???" popup on other sites lmfao. In the future I might just have this be a Content Warning page so it's more flexible in terms of usage and maybe rearrange the insides a bit? This is all No-JS friendly btw, this is entirely HTML since you can just make the dialog start open with an attribute if you have no intentions of touching it with JS whatsoever. The MDN docs have more info about <dialog> on their dedicated page for it.
The little extra bit of JSON is part of a system that makes the info table dynamic, since I prefer being able to add or remove values as needed instead of hardcoding anything in. I'm pretty proud of this little piece of code since before then, I tend to get confused whether something like bigthing.smallthing or collections.tag show up since I had no idea how the computer is interpreting it internally, but I get it now as shown here.
<table>
<caption>Basic Character Info</caption>
<thead>
<tr>
{%- for dataName in charinfo.dataName -%}
<th>{{ dataName }}</th>
{%- endfor -%}
</tr>
</thead>
<tbody>
<tr>
{%- for dataValue in charinfo.dataValue -%}
<td>{{ dataValue }}</td>
{%- endfor -%}
</tr>
</tbody>
</table>
I should probably explain the code. So what it's doing is that each for loop is accessing the charinfo object defined in the character's .md file, and then accessing the arrays inside that object. then it goes through the array and doing the stuff inside the loop block (in this case, filling in the blanks) for each entry. It does that until it reaches the end of the array. (as for whether you have to specify the array you want to access twice as above, idk. From my experience in for loops in other languages, JS included, the thing directly after "for" is a variable that is defined for the loop to use and can be referred back to. Here's an example of looping through an array in JS to print each value in the console:
const myArray = [
"qwerty",
"asdfgh",
"zxcvbn"
];
for (const i of myArray)
{
console.log(i);
};
Output:
- qwerty
- asdfgh
- zxcvbn
(i totally did not have to reread the docs because remembering syntax for a million different languages is hard and apparently there's a for loop thing specifically for looping through arrays?? huh??? i knew about for..in but not for..of dang lmao)
"i" is the variable declared to be used when looping through the array. It can be anything really, I'm pretty sure naming the variable you're going to use to loop through an array after the array itself is more to keep things tidy and easier to understand which goes where ig, as well as the fact that const is being used and you can't redeclare or reassign const's.
More context on constants:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const
- https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/Variables#when_to_use_const_and_when_to_use_let
But yeah, long story short, the layout has two for loops to populate each row of the table and the data that it uses to populate said table is defined in the character's markdown document.
Oh by the way, Kathy's profile is the only one rewritten as of typing this and it was so I had content to populate a character page with. I did not port everyone else over and the two profiles in the Overworld were only there to get subfolders working + testing additional features. There's nothing interesting in the rest of the profiles, so you're not really missing out on anything worthwhile :P Also everything in that video is a WIP and subject to change yadda yadda I think we know the drill by now.
Another thing, trying to implement images in an organized manner and getting 11ty to copy them over has costed me several minutes (maybe more than an hour) of my life that I am never getting back. All you need to know is that I went with the 'slower' method (adding to the list of known template formats instead of using passthrough copy in the config) because it breaks less stuff and is less maddening to set up.
Source Mapping
While gm_boxedcommunity is on hiatus, I got to work on my last stand concept, which became cp_laststand. It went through 2 alphas and for alpha 3... I'm just gonna redo the entire layout mostly from scratch.
Why? Because the current layout is extremely cramped and not fun to play in. I tried to expand it more in alpha 2 without having to fight the geometry too much, but I decided there is no salvaging the geometry and decided that I should start fresh for the most part and maybe bring in some geometry that I liked here and there. I'll keep alpha 2 as a "specialty map" (basically something like 2Fort and Turbine, where while it's not a fun map to play in, they work as a silly map to goof off in or otherwise just a 'funny map'.) but alpha 3 onwards I want to make it fun.
Even if I intend on starting over, I'm still gonna share a couple screenshots of alpha 2. The map itself is unlisted and no, I am not providing the link until it's ready (which won't be for a while).
(the top-down does not include the area in the second image, or cubemaps)
(i also have been playing with bots outside of any testing done with a tf2 server i frequent to make sure it's functional or smthing)
One of the people who playtested the map suggested I take a look at Quake maps and even shared a video, which I'll watch when I get to figuring out the new layout. I'm also gonna be paying more attention to the layout of other 'fun' maps that I play and get a sense of how open I can make my map to strike a balance between "cramped hellscape" (too closed) and "Sniper main wet dream" (too open).
Conclusion
So this month has been pretty productive (or at least the first half of the month. The later half I began to slow down a bit) in comparison to the last few months. The website has been brought back from shelved purgatory and I got to expand on my concept a bit. I might either work on my character profiles (not for Artfight though LMFAO) since the character page is pretty much done at the moment, revisiting the blog section or at least start the misc. section which will have elements that I'll carry over to the blog, work on alpha 3 of cp_laststand, or go back to working on gm_boxedcommunity and get that area all finished up and move closer to the beta release.
I'm also working (slowly) towards doing my first PC build. Yeah it would be easier to get a prebuilt PC but where's the fun and pain in that?
I'm probably gonna ramble about some ideas I have as well as extra stuff in an separate journal (esp. relating to DeltaVoid and hosting). Maybe on here, maybe on main, maybe on nowhere? Who knows? Anyways see you next month or smthing.
Nothing much was done in April since I was busy finishing up irl stuff, but now that I'll be free in May (for now), there's a good chance that I'll finally have way more stuff to show! The map beta release is starting to become more and more closer with each brush, light, and entity I lay down.
That being said, the work on the map was mostly implementing the last few areas to complete the belt and I'm almost done in that regard. I finished the last North spawn and expanded the Backend a tiny bit.
Once again, I only really had the time to make some progress on the map. To be fair, I think it's probably a better idea to try focusing on finishing up gm_boxedcommunity before jumping into any new or pre-existing projects I brushed off to the side, esp since it's almost done.
As for the website (one of the projects brushed to the side), I still haven't touched the code (honestly atp I'm too afraid to tackle what I currently have in terms of the custom folder system that I might as well start again) and I'm considering trying out Jekyll since it's super similar to Eleventy but it's less reliant on Javascript and it uses Ruby ig? Then again I'm too deep in with Eleventy and it's working fine for me rn so why install something else (esp with how cluttered my main drive is. holy fuck i gen cannot wait to get started on my journey to a new pc so i can actually switch over to linux (and yes, i'm aware how bad linux is with digital arts stuff rip, but i tried mint on actual hardware with my tablet and so far it's functional for my needs heheh))
That being said, I did test out a little curiosity regarding whether Eleventy and Obsidian work together (spoiler alert: they do work together with a few caveats since eleventy turns markdown files into html and obsidian is a glorified markdown editor lmao). I'll find a way to integrate it in my site when I get around to it, but the garry newman modification map takes priority.