• Register

"A real man... oughta be a little stupid." - Ryuji Goda.

RSS My Blogs  (0 - 10 of 12)

eepy


Hello everyone! It's SellFace and I've come back with another blogpost for this month.

2023 was quite rough for me in some parts, and yet, I've also learned a whole lot. I successfully finished and released my third modification, which is Lost and Damned and it turned out to be quite a success compared to my previous mods, like Fremen's Foes, for development of which I had the most passion, or the infamous Modding Bleeds.


And now, SourceWorld(which hopefully will remain as mod title) is my primary passion project and thus an attempt at pushing my sourcemodding limits.

So let's see what I've been doing at the end of 2023.

Huge MapGen improvements. PropSpawning V2. Better Room Shaping.


As usual, let's start with my progress at procedural map generation. And I'll begin with prop spawning.

Previously, the prop spawning in rooms used the old algorithm, which is flawed in many ways, technical and visual ways. Here's few pictures of what the results of it looked like:

test0122test0074


What's noticeable is that props just chaotically spawn everywhere, including the center of the room. That's not really good as walking through all these props is pretty troublesome for the player, let alone NPCs. Another flaw is that in tight spaces, like little hallways that some rooms can get, props may spawn in a way which make them nearly or completely block any passage. Generator just randomly placed props either alongside walls or some random spot.

Another technical issue was that prop generation used actual physical collision checks(TraceHullComplex's) which took plenty of time and almost always caused a considerably long microfreeze when room was generated during gameplay.

I decided to remake the whole prop spawning from scratch, and this time I didn't use any physical checks, but rather just stored info about prop bounding boxes and did my own "collision" checks for if the potential prop's bounding box overlaps with any existing ones, and it's much much faster.

Not only that, but I also overhauled generator's rules of prop spawning. It works by calculating the whole 2d top down area every prop occupies in a tile. Depending on what kind space the prop is gonna spawn in, generator applies different limitations to how much area of a tile can be occupied.

If we take the previously mentioned hallway tiles, the way prop spawning works on those is by calculating the occupied space in single line, depending on direction of props. So only a half of hallway can be occupied before the generator denies any further prop spawning. This condition guarantees that such hallways won't have props that block the way for player or NPC. Example below:

test0157


Props never spawn in the middle of such tiles. Not only that, but the props at walls are made sure to not exceed the center of a tile if you imagine moving them all to one side.

In addition, I added bunch of props to the generator. Besides props, I also added more models for walls and floors, metal and wood materials to be exact.

All in all, you can see the changes I described in the video below:


Another great gameplay addition I've made is the minimap!

As you can see, not only it allows player to navigate around the generated level, it also only shows areas player has been to before. Personally, it makes life much easier and now you can't really get lost so easily.

Another nice change is the new algorithm for shaping rooms. Initially, all rooms start as rectangles of varying sizes. But I want the generator to remove some tiles off these rectangles and replace them with walls to make rooms have varying shapes and not just same rectangles.

(This is a very unperfected old version of the algorithm, all rooms have same chaotic shape, and you can even see the generator left some are inaccessible)

hatDiscord 2xVUWC3BzA


I thought out an algorithm for a level matrix pass that takes every tile and makes a check for whether a tile can be removed without slicing the room(thus making a part of it inaccessible, which is really bad.). My algorithm takes 8 tiles around a tested tile, and passes them all in circular sequence, counting how many "wall arcs" this circle has. If it's 2 and more, then placing a wall in the middle would result in 3x3 tile combination divided in several parts, cutting some area from the rest of room.

fly inverse

Then I added some randomness to it and you can see the resulting room variety below:


Half of the rooms still keep their rectangle shape, while the second half gets various shapes. This makes rooms look less similar to each other and layouts themselves less chaotic.

METAL PIPE! Overhauled Melee Combat. Better Zombie AI.

Now for the fun part. I added a melee system that works similar to what L4D2 has. When player attacks, they fire rays in sequence which resembles the movement of the weapon, allowing for splash damage and just better feel than what vanilla crowbar had.

Besides that. I added stamina(AUX Power) consumption for attacks, and added parrying along with critical hits.

Parrying is triggered by hitting an enemy when they're about to hit you. This will cancel the damage from both sides and slightly push you away from each other. I believe it's great because it gives more control to the player in terms of avoiding damage.

Melee damage is inconsistent and depends on velocity of both the victim and attacker. So running at the enemy and hitting them with a pipe does more damage than doing the same while standing still.

Critical hits usually happen when you time your attacks so well that both your and enemy's speed is great enough for damage to be really big. This results in huge damage that often oneshots zombies, so I added some nice(and memey) effects to that.

I also GREATLY improved the AI for the zombies. Previously they were the absolutely most boring enemy in the game, because they were incredibly slow and easy to kill.

Firstly, zombies can accelerate their walking speed when they chase their target long enough. Secondly, zombies start their attack animation from bigger distance AND they push themselves towards the player and even try predicting player's movement to deny his maneuvers. You can't run circles around them anymore, as they will keep nearly jumping in your way. It's also much easier to get cornered by them, because it's almost impossible to escape them when they surround you. And when that happens while player is out of breath for pipe swings, they're pretty much doomed unless they pull out some powerful enough gun.

To demonstrate this stuff, I have recorded a bit of pipe gameplay:


Dialogue System

lazy


Making voiced dialogues in mods was always a big pain in ass. To have voicelines properly work in game, you have to write soundscripts, open faceposer and generate lipsync data for each soundfile, write closed captions. And doing all choreography in faceposer that keeps crashing as it feels like it's even more ancient than source hammer editor.

So not only I decided to not use voiced dialogues and have textboxes only, I wanted to have a system which would easily allow me to add new dialogues. So I scripted this!


Besides the main script, this dialogue is handled by a simple textfile that is easy to edit.

notepad LB0yb1VXJO

glasses


And I didn't use any .vcd files or choreography. I can easily add new dialogues and call them with a single map input. Besides, I added some formatting to support events like gestures, emitting sounds or extra pauses.

Hub Concepts

Between the travel in randomly generated levels, player will always go back to protagonist's home area, aka Hub, where they're gonna talk to NPCs, take quests, get equipment and other activities.

Currently we planned the plot to take place in a district of a City that once used to be ruled by the Combine, but after humanity defeated it, they started adapting some of their leftover technology.

The_Guardian™ currently works on this hub, making blockouts. Together we work on mod's lore and plot and forming the overall picture of it.


Hopefully, I didn't forget to mention anything else in this blogpost. I will continue the work and come with another blogpost in future, as always.

Thanks for reading, and stay tuned!

book

Hello and here's yet another blogpost of mine. Been two months since the last one and I thought maybe it's a good time to let people know about my progress at vscript adventures.

Procedural levels again


I greatly improved the system in few ways. For example I made all entities save their state(position, angle, enemy health etc.) when their rooms get despawned. I added primitive npc spawning to play around with combat. I also started adding support for random room heights.


I made few additions to the prop list and added first few room type rules which define sets of props each rooms use. Some rooms will only have storage props while others may spawn with just electrical stuff.

VScripted weapons


I don't want to get dirty with sourcecode, so I decided to make my own weapon system with just scripts, you might aswell call them fake weapons, because they would use the same real weapon entity, but all stats and model is controlled by scripts.

I plan making a Gmod SWEP kind of system where I'll be able to add as many unique weapons as I want and change how each of them works anytime.


That's all for now! See you next time.

Hello all, time for another funky blogpost.

It's been kind of a pain to find time or energy to keep coding stuff or just work on this project, but in any case I did a bit of progress anyway!

PVS Culling

I mentioned countless times previously, that I wanted to have a system which would optimize the amount of currently existing entities(including walls and floors) by removing/respawning them depending on Player's line of sight.


I also ported the prop spawning and lighting from previous version of the system. It works kinda slow, but I think that's solvable by storing some data instead of generating props over and over. Overall it feels fine and it handles layouts with over 50 rooms just fine.

As a side activity, I also did a tiny amount of coding for dialogue system, because I've been planning to make project be story-based alot.

Obviously, I'm not going to get any voice acting done, not even AI voices or god forbid text-to-speech. Voiced dialogues take hella tons of time, when I can simply use text and just try my best at making a fine dialogue system.


There's been quite a bunch of stuff happening IRL which's been distracting me from modding, but perhaps that's just a normal way to avoid fast burnouts.

a good burnout is when it's a game

and it's a burnout 3 baby.

Now i'm gonna be off for now, see you in next blogpost.

Hello everyone and welcome to my another blogpost. Or rather, an another blogpost series where I'm gonna be talking about the development of Sourcerama, stuff that I already made or plan making.

From my previous posts you know that I started working on procedural dungeon generation for my next source project, but incase you forgot - here's a latest video with it


Sooo, I was supposed to be improving this system further, right? Well yes, but actually no.

The system's code was kind of crap, it was an unoptimised mess made out of lots of spaghetti code, almost everything in a single script file with >1600 lines of code and hard to navigate around.

There was no algorithmic "model" of the layout. To determine whether there's a floor/wall somewhere, I had to rely solely on collision checks during generation, which is very very bad.

Hence I decided to actually scrap all that and start rewriting the entire system from scratch. So far here's what I got in around a week:

photo 2023 08 13 13 30 29


Say hello to my new little friend, the Layout Preview! It looks like your average ASCII Roguelike, not too far from it, because it's actually a top-down grid representation of level's layout.

The generator now creates a data with matrix and all room information that is necessary, before placing everything in game world. That way I can no longer use collision checks and overall it's much easier to edit or improve the system now. I'm making a separate script files for each individual process of generation, so that they work almost independently.

Here's how generated layouts look like right now:

F3PjRnlXIAEQUj5

Colored squares with assigned digit/letter - Rooms

Yellow hashtags are hallways

And any '+' signs are places where doorways should spawn.

The rooms' sizes are random, but this time I used my RNG in slightly different way. My default RandInt(A,B) function simply chooses random integer value between A and B, based on seed. But the problem is that each possible room size generated this way has same probability of being chosen, resulting in pretty chaotic room layouts. There has to be atleast some bit of consistency, right?

My problem is the "uniform distribution" of my random number generator. Rolling a die gives you from 1 to 6 points, and each outcome has same probability.

But if we roll 2 or 3 dice at same time, probabilities are no longer equal, because different "scores" now have different amount of corresponding outcomes. So 2 dice rolls have "Triangular probability distribution".

But even that is not enough, if we roll more than 2 dice, we get closer to what I actually need - "Normal distribution".

notepad hlNlGYtwNy

So in my way of generating "pseudo-normally-distributed" numbers I basically call RNG 3 times. So possible room sizes are from 1 to 10, but the majority of rooms you see in screenshot above have size of 5 or 6, and extreme values are still possible, yet rare. That's exactly what I need. Normally distributed random numbers can be quite useful in Procedural Generation.

I rewrote the algorithm for placing hallways, so that they don't get too long. And most importantly, hallways are built in a specific way so that room connections can be imagined as tree graphs now.

hl2 OIMwy2AutO

What do I mean by that? Well, let's imagine the screenshot above, but all rooms are resembled by circles(nodes) connected with lines(edges) which resemble hallways.

hl2 OIMwy2AutO 1


(Assume that we forget the exception when hallways intersect with each other, adding possibility of same-depth rooms to be connected, I'll find a way around that later)

As you can see, a new interesting property is added - The room Depth. It determines the amount of rooms player has to travel from the starting room(Room 0) to selected room.

Imagine that there has to be a puzzle player has to solve to progress through the dungeon. For simplicity we'll take the well-known Key/Lock puzzle.

Let's make player unable to access rooms at Depth 3 or below. The only room at such depth is Room 6, which we'll place locked doors at.

So now that we need to spawn a key, we can place it in any room that has depth value equal or below 2. But most preferably it would be to place the key in rooms 1, 3 or 6, because they're not included in paths to the locked room, which makes it necessary for the player to explore those dead end rooms and do a little bit of backtracking.

The depth parameter solves the problem of accidentally spawning keys behind the locked doors they're supposed to be used on.


In future, I want to use the level matrix for Line-of-sight checks and optimisation - Generating ONLY rooms that player can possibly see and despawn rooms which are no longer needed, therefore freeing edicts. With such optimisation I can have big layouts with probably over a hundred rooms, without exceeding the entity limit.

I also plan adding multiple floor support. Generating rooms with different Z-Height, or having multi-floor layouts connected by staircases.

Thanks for reading, see ya next time!

a

It's been a month since my previous video where I showcased the proof of concept of procedural map generation in Source Engine. During that time I've been working on improving the system and making the results look not as simple as 'backrooms' for example.


I fixed the non-working entity count optimization system that replaces multiple instances of same floor/wall with a single big one. This helped me to use 45-50% less edicts with rooms and hallways alone.

test0066

Then I started working on a prop spawning system. As you can see, some props are randomly placed, while others are aligned to nearby walls.

To make that work, I use a separate script that stores prop models, their sizes, origin offset and some other properties.


I also made the generation of so-called "subwalls" - 128x128 solid brushlike-props, they're used to spice up room shapes a little.

test0069


Then I completely rewrote the generation of lighting and improved prop spawning alot. But one important thing is the new inventory system. Currently it can hold just few ammo types and basic healing items(i still have to come up with much more item ideas to make up for implementing inventory in the first place)


All in all, check out my latest video regarding this devlog!

There are few issues with the lighting currently, but those are almost entirely fixable. Another issue is lack of proper npc navigation system.

I decided to go nuts and just casually place a gazillion of info_nodes on every tile. I can't modify nodes or links in the game, so that's the only way.

And oh boy, there are SO MANY of nodes that whenever i try taking a screenshot of the whole nodegraph, the game barely renders it and crashes almost every time when I type "ai_show_connect" in console.

test0094


NPCs still bump into each wall before reaching set destination, but this is still FAR better than seeing them have brain aneurysm every time their target gets behind one corner. Zombies are capable of actually chasing the player now.

Also I will make rooms spawn props and other stuff(like decals which i'll add later) based on selected presets, each preset will have its own list of special tags and only props with those tags will spawn.

Thanks for reading!

test0090

test0091

Hello everyone. So after months since release of Lost and Damned I started to dream of making another cool mod project in Source Engine.

For this time I decided that I'm not gonna base my next project on concepts from some already existing game (like the 2 previous projects of mine). Therefore, I'll have to make something with its own unique meaning and personality. Even though, nothing in our industry is purely original, every creator was at least inspired at some point from someone else's work at least once. Even my first project was done under big influence from immersive-sims and stealth games.

dhdsl

A Wider Picture.

Few days ago I realized one "small" point, which actually made me understand some of the criticism I've been receiving before. When it comes to making mods, my mind is usually fixated on the whole HL2 modding industry(kinda hyperbolized way of calling it, but you get the idea).

My decision-making process usually works in a way that if something wasn't present in most HL2 mods before, then it's gonna be super cool and original to add it in my mod and I often considered that to be nearly "revolutionary". The fixed-camera survival horror genre, the hotline-miami stuff, even stealth mechanics - they all are impressive, indeed, but only in a technical sense - the "this guy made x *but* in source, that's kinda cool yea". If I look at it from a perspective of an ordinary person, who's unfamiliar with all my modding insanity and just wants to try some cool game, it wouldn't make much sense to bother installing sdk2013, when i can get the actual game that mod was inspired from.


Although, in defense for my parody projects, they served as a great practice and challenge for my abilities. After the release of LaD, I promised myself that I'm gonna use VScript excessively in my next project to make cool stuff with it and make my modding process less exhausting and monotonous.

I'm a maplogic wizard, not an environmental artist!

You know what's my personal most exhausting activity in modding? The level design.

Man I hate having to spend whole months on just making an acceptably looking game environments. I consider myself an amateur mapper, my levels might be detailed well, but I think that geometrically they kinda suck. There's almost no verticality in my maps and they look pretty claustrophobic in some parts. Therefore, I can't consider mapping as one of my strengths, furthermore, it takes ALOT of time.

Seriously, it took me like 3 months to make some almost-finished city map and 50 streams on my YT channel are the evidence of that. Yeah the finished map would have lots of potential, but considering the fact that I'd have to make like a dozen more maps for FF:R? That's insane. No shit I'd get burned out every week and start questioning the worthiness of my work. Of course, that's just me, yo boy sellface was never about hl2 mappacks from the start, innit? My desire of making cool mechanics and stuff just by using maplogic or scripting has been my primary motivator for making mods. When I see someone else doing crazy I/O contraptions in their maps, I feel like I must prove that I can make even cooler stuff!

hammerplusplus zoHfNQyQwb

The concept of procedurally generated maps in Source.

The concept of procedural (or random) generation on its own is nowhere near being anything new. Despite that, I still believe there are many reasons why it would be a great idea for my next project.

First reason being the great replayability and mod length. Most of my projects are around 2-3 hours in length, and that's okay for a solo project. But there's no replayability in an ordinary mod. The reason why I could replay UnderHell for example was that it's a very long mod(more than 10 hours) and I simply couldn't memorize everything on my first playthrough, and because it's good and actually does have variety in some sections.

Second reason being obvious absense of the need to spend weeks crapping out decals, crates and boxes on each and every square meter. There are already dozens of good looking hl2 mappacks and it's definitely not my job to make another one. I'd rather spend that time making vscripts and troubleshooting my silly miscalculations in code.

And here began my journey to overcoming the need for static map geometry.

I started my new project under a working name "Sourcerama"(I'll make sure to keep it as WORKING name and eventually get some actual title, or I'll beat myself to death(can't have another gta4 dlc)). An RPG with roguelike elements and probably more. MapBase is included used as usual.

Firstly I made a little empty hollow-box map and included some templates for func_wall floor tiles and walls, then started making script which would generate a randomly sized rectangular room with a doorway and randomly selected wall textures.

The room generation basically worked pretty simple. I made a 128x128x16 floor brush template and 4 templates with walls each being on different side. So I can explain generation as placing floors/ceiling tiles and walls where needed on an imaginary grid, each tile being 128x128 units.

hammerplusplus WTV5dhKbiC

These tiles are 64x64, but i doubled the size after first tests


As I mentioned before, I used brush entities at that time, which brings us several problems, some of which are more difficult than the other ones.

1. Lack of npc body collisions
This is solved almost completely by forcing serverside ragdolls. I already have an example project where only serverside ragdolls existed and it didn't affect perfomance at all, so why not.

2. Lighting and decals
Since most of the map's lighting is baked and static, common light entities are no use for me. The only working solutions for dynamically generated lights are light_dynamic and projected textures.
Light_dynamics can't work on brush entities at all, because every floor or wall tile is a copied instance of the very first tile i placed on the map. So all the information about decals, like bulletholes or blood and the lighting is copied everywhere, which is unacceptable.

test0038

I tried using projected textures as lights and they mostly do good, but they're a good choice only for spot lights, like projectors, but they're impossible to configure to work as normal point lights, since maximum FOV for the flashlight is 179, higher values just make it off. I tried placing 2 projected textures at same spot facing opposite directions, but the lighting still looked very unnatural. Another weird aspect is that whenever I lit the room with a high-FOVed proj. texture, player camera has some strange self-illumination effect - getting closer to walls makes them appear brighter than when standing few meters away from them.

In the first video showcase I managed to light the room by using projected textures, but they were using relatively low FOV values and the one above was placed high enough above the whole room to cover it. The end results for randomized room were good enough to continue moving forward!

Generating Map Layouts.

I made a new map, this time with a big hollow box, around 6000 units in all directions, enough to fit a good set of rooms connected to each other with corridors. I took the decision of adding a basic pseudo-random number generator based on Linear Congruential Generator, so that all the randomness is decided by a single seed value. Which would not only make layouts be possible to replay, but it's also almost essential for debugging purposes.

The room placement algorithm was tweaked a bit. I made it so that every spawned room is assigned to its own ID and gets a random "type" value(which changes the textures on walls) and every new room spawns randomly not too far from the previous one, also added check for room overlapping, so that they wouldn't get conjoined by mistake.

test0022


As for corridors. I sticked with simply making them either straight lines between rooms or L-shaped in cases when rooms don't have tiles that share same x or y coordinates. In the second showcase I demonstrate the room placement and corridor planning.

By the way, you may ask how does the algorithm decide which rooms connect with each other? After all necessary rooms are generated, the algorithm makes an empty array of 'connections' where (index of each array's variable+1) equals the first room and the value of that variable equals the second room. So I randomly fill this array, checking for whether the corridor can be generated without intersecting other rooms, whether rooms are close enough and don't have too many entrances.

After the 'connections' array is complete, the script begins generating (also random) corridors between all rooms. The layouts turn out pretty interesting and maze-like(or call them backrooms if you dare). The third showcase video demonstrates this.

test0031


Edicts aka Engine's Entity limit.

Of course, there's no way I could spawn too many rooms without crashing the game. Source engine's limit for networked entities is 2048. Each entity takes its "slot" in entity dictionary, they're usually called edicts. If the limit is overfilled, the game crashes and there's no way to increase the limit without modifying engine.dll.


At first I could generate about 20-25 rooms and connect them with hallways without having a crash. Having a little more rooms would cause the game to crash during corridor generation. But the problem was that the edicts number wouldn't even hit 1600-1700 before engine kicks the bucket, which is strange and very far from the actual limit. And no, corridors wouldn't take THAT many edicts at once, but somehow the game still crashed.

Turned out the issue was that I spawned too many tiles at once. I usually generated rooms one by one on a key press, but all corridors were coded to be placed in an instant. So perhaps either TraceLines that I essentially use during generation take edicts for a very short period before disappearing(and freeing the edict), or it's impossible to spawn too many brushes on different places at once. I made a hacky way to delay the placement of floor tiles, so that every brush is placed with a random delay from 0.00 to 0.06 seconds.

I also divided hallway generation process into steps. Currently it generates one hallway at a time and after the last one is generated it also takes its time to place all necessary wall tiles on each side(demonstrated in the last video). So this actually solved my issue with engine crashing too early, nice! I still have to keep the entity count low, so that there's enough space for all the other entities.

Failed attempt at optimizing the entity count.

If we take a simple 2x2 enclosed room, with individual brush entities for floors, walls and ceilings, that would make 16 entities in total, and that's just for a tiny empty room! I definitely had to figure a way to lower that count.

So I came up with an idea of replacing the repetitive sets of brushes with a single big one. Swapping every combination of 2x2 square of 4 brushes with a single floor/ceiling tile twice bigger than normal one. And so on..

The idea should've worked just fine and it would lower the entity count on the fly! But have I mentioned that I used point_templates and that my algorithm used EntFire command for spawning any tile? That's the problem. Ent_fire is executed independently from the script, so it always has a small delay.
Which completely fucked up any of my attempts at finding repeating brushes and replacing them, without touching already spawned replacements, I got tired of it and decided, that point was requiring me to throw the brushes and templates away and use models for tiles instead.

Mesh-based mapping is the way to go.

I used Propper to convert my brushes into props for the first time and holy cow, that tool is so convenient, it literally makes a model file out of specific brush entities from your Hammer Editor's VMF file.
I changed the whole placement algorithm to work with models, so I don't even need to keep any template entities in the map file as now the script spawns them directly.

Placing DLights

After transitioning to models, I have unlocked light_dynamic for the usage. It works pretty well for my layouts and despite having a limit of 32 being active at once, turns out I don't even have to make algorithm for disabling unneeded lights, since the game already does that for me automatically(briefly shown in the last video)


There's only ONE major issue with them that is unnerving. They never cast shadows and therefore they lit up everything around them, even floor tiles that are behind a wall.

Dlights can be configured to light up only a certain amount of tiles around, but obviously I can't just configure them in a way so that they light all tiles in their room, but never touch tiles outside of that room, unless they're corridor tiles at some entrance of the room.

Currently I have thought one possible solution for this problem, and that is marking all floor tiles in the lit room and so whenever player has line of sight with one of the floor tiles, the light turns on, otherwise it would turn off.

Placing Ents and The Finale

I made a simple system for randomly placing stuff on each tile, and for demonstrational purposes I decided to make script generate rooms with some basic random props(crates and barrels), zombie enemies and ammo.

And that's it! I made the last vid showing off generation of 20 connected rooms and some bits of gameplay.
On next day I changed all walls to be 16 units thick, because 8 units were not enough to obstruct NPCs line of sight and they'd see the player through all walls.

Another issue is npc navigation. I couldn't use nodes, because placing hundreds of them on a flat grid would cause the game to crash itself after one zombie takes a little too much time deciding which node it should try going to. And I also tried placing nodes in game, or regulating the connections between them, but both attempts failed. I think I'll just code a little ai behavior override so that upon losing LOS with player, npcs would walk to a tile that both them and the player see.

Final Words.

Throughout the making of this system I had to troubleshoot lots of silly issues and miscalculations for hours. Despite that, I still enjoyed the process of making it, because in the end I get this awesome thing.

Obviously, I'm nowhere near being finished with this, there's still lots of room for improvement. I need to make rooms have tweaked shapes to avoid everything being rectangles and make a whole system for putting details everywhere so I can stop having my system get compared to liminal spaces. Besides, I want to fill levels with lots of gameplay stuff, idk, puzzles, different enemies, traps, pretty much anything that will come to my mind.
Until next time.

Lost and Damned did actually finally release and hot damn, even though it's been in development for like... 5 months i think. I even managed to do a little playtesting with other people before releasing that project, for the first time in life. And even though it's not megasupra popular at this moment, I'm still happy to finish it, cuuuuzzzz that was the moment I waited for the most - finishing the damn thing I started.

Many men actually dream for that "big break" they work their butts for, day and out(can't really say the same about myself, because im lazy as heck when it comes to modding lmao).

So, pretty often, before and after releasing the mod, I did find myself being in "Bakamitai" mood, ifyouknowwhatimean. Emotional dependency sucks alot, but hey, at least I'm not dependent on some active sourcemodding project at the moment, which is really cool. I'm honestly afraid of starting any new sourcemodding project, because knowing my "inner inconsistencies" I would probably end in another development hell.

I'm still keeping distance from modding communities, since I'm taking an actually good break from sourcemodding and whole past stuff, plus I don't want to step on any same rakes again.

And I definitely don't have much time for that either! I've got to keep looking for the truth regarding the dependency issues which been affecting me for years. You might aswell say I'm gonna play Hunt Down The DPD in a sense.

Also, dudes, I recently finished Max Payne 3 and honestly it's a very badass cool game, despite having a completely different atmosphere and setting, compared to first 2 games. I heavily recommend it. I wish the game was longer tho, i beat it on hard in only 2 days lmao, aside from that i can definitely say that max payne is LITERALLY!!111 ME.(insert here some sigma patrick bateman/ryan gosling/tyler durden edit with edgy music). I swear to god if that game came today, we'd see thousands of sigma edits about bald Payne, it's amusing, the game aged like a fine wine. But seriously, the quote "The way I see it there's two types of people, those who spend their lives trying to build a future and those who spend their lives trying to rebuild the past. For too long I'd be stuck in between, hidden in the dark." really did hit me there.

So what I'm gonna do now exactly? Absolutely no idea, one thing for sure is that I'm sick from dwelling on the past. Listen to your hearts, my dudes, and listen very closely, because if there is a hole that needs to be filled, you're the one fully responsible for doing that, yeah other people or friends or loved ones, might assist you but the first and the last part is always up to you. It's not about moving to egoism, it's rather about keeping your brain and heart close to each other. Anyways, I guess that's all for now, thanks for committing to the read of another wacky sellface rambling!

Overall, let's finish this weird rambling post, with some classy music(of course it's from a goddamn yakuza game, what else would ya expect from ya boy!?)

akiyama's music is best, change my mind


A start of a new year.

SellFace Blog

Another blogpost no one's gonna read? Hell yea

So, today is January 22nd of year 2023. And honestly speaking, 2022 was really fucked up for me in many ways. It's not even really possible for me to describe how many events happened in my life that year. But I can surely say it's been very saturated and memorable.

I suffered with education at university, got into long-distance relationship, provoked some modding drama (ooooohhh ma gawdd), made bunch of new friends and lost some of them, new enemies aswell. It's just a helluva mess and on top of everything I had to face a breakup at the end of year, which was the last thing in that small important period the 2022 was.

I had to cancel FF:R because of having too much studying on my shoulders(by the time of writing this, I already quit the university and plan to get in a better one next summer). But I also started another project which is Lost and Damned. Even though it's getting developed slowly as hell, there's still some progress going with it. Of course im not planning its playtime to be any close to FF:R, but it has unique mechanics and that's the most important part.

Well, uhh, the breakup from my first relationship turned to be a very painful experience and I'm still recovering from it. I had to leave and try to forget everything about that person, but as it is, no matter how much I try, when I'm bored and alone with nothing to distract me, the memories of past love haunt me. I wish there was a better, more peaceful closure to it, but everything ended so abruptly and negatively, I didn't even manage to leave kind words after myself, even though I wish my ex the best on their journey. It sucks that such situations simply require lots of time for mental healing, but atleast there are things to learn from everything I guess.

As for good news I still got a group of good friends that I cherish alot. Even though I still have troubles with being motivated for modding, but my friends help me alot anyway.

I started playing the Yakuza game series, and I love everything about the games starting from OST and ending with story, characters and writing. It helped me to get distracted from all negative emotions.

It still hurts when I occasionally remember the past, but I keep moving on from it. I keep believing there's a better future ahead and hoping that I will not repeat my mistakes.

Sometimes I shake my head and wonder "What am I even doing with my life?" or "Will I ever learn to be emotionally independent from others?", "How can I be happy without relying on others?", hell if know how. But one thing i figured is that all the general mod popularity stuff that some of my acquaintances have been pursuing(me aswell) is usually just not worth it.

Every time I managed to actually gain some big attention to my work it didn't feel honestly satisfying for me. It was rather cringeworthy seeing game journalists copypaste each other's articles which had my work mentioned there. All this "popularity" simply felt so soulless for me, hence it gave me lots of disappointment that I have mentioned in my previous blogposts.

I recently decided to show my work to one newly made friend, who was interested in modding, and I received lots of positive feedback from that person and the realization struck me. Just having ONE person pinpoint the fact that my works come from a great spirit, seeing their honest amusement. It felt just so great compared to literally everything I heard before it. You know, all this effort I took into spreading my works, showcasing them in as many places as possible and here's just one important friend who proved to me that all the hustle for getting recognition is never worth it. Showing your creative works to people that you care about and receiving their honest feedback is what gives actual happiness in my opinion.

I'm not underestimating all the positive comments I get on ModDB and other places though, I still appreciate them aswell, but I simply believe it's not something I should primarily focus on. It's hard to focus on the simple "Make mods for yourself", but if I can focus on people I deeply care about and have them as my audience, then even the darkest tunnel will have a light in its end. A light that keeps you going.

Introduction

Hello there again and welcome to the fourth part of sellface's ramblings. Been 2 months since the last blogpost.

In previous post I was telling about very crappy stuff I managed to get myself into. During these 2 months I was trying to calm down my soul and find some peace. Everything that happened in May and first half of June had quite a deep impact on me, and I had to get over it.

I can't say many things for several reasons, but I'll try to describe how everything went.

FF:R Dev-ing

In my last FFR post I mentioned the need of new direction in my development. After speaking with friends and thinking, one day I realised that for quite looong time I was subconciously chasing the ideals of a perfect mod.

You see, even though FFR is a project about refining HDTFremen, which was pretty much a shitpost mod in a sense, I was trying to turn my project into something not just serious, but rather outstanding. I wanted hella lot of new features, that were not present in the original: Deus Ex Augmentations, SMOD Kick, Lockpicking, some overhauls and other stuff.

I seriously started to raise the bar for myself alot. At first I had no idea what I was doing wrong, but then I realised I wasn't trying to add more things just for the sake of adding them(cuz they're cool and all), but rather because I wanted my work to be more outstanding among other projects. And to be honest, it looked more like I was trying to make something perfect, to satisfy everyone. Moreover, I was constantly being afraid of opening hammer, because I thought I need to have everything perfectly planned first, or otherwise my work wouldn't be as good as I'd like to.

People were asking me what do I really want, a serious modification, which would require complete rework of existing plot, or to stay with the joke-mod ideas. And I have to admit, I couldn't give a clear answer. That's because I subconciously wanted it to be perfect, which is impossible, hence it brought me to a conclusion that I was trying to do something that can't even exist in the first place.

Yeah, pretty much all new features that my dumb ass promised in latest FFR posts(except for stuff existing in the Demo) are gonna get scrapped. I want my project to become what I always wanted it to be, ever since the days I was making the modpage for it. And my new direction of development should be led just by my own soul, without the subtle need for views, downloads and all that crap.

I know I sound like a Captain Obvious, realising such stuff only now after about 2 years.

What made me realise it exactly now?

"Getting better at modding, by doing everything that isn't it"

Aftermath

Or simply "Taking a break", as you can call it.

After the dramas and all, I couldn't make myself work on maps same way as before, because my mind couldn't get over some certain things. So instead I was simply spending time with my friends. And that is exactly what made me realise things I described above.

In addition to that, I finally got over the "backstab" I mentioned in previous article. I know it might sound evil, but I got the payback I was looking for. Unfortunately for myself, I can't help my vengeful personality. Either way, after it finally ended I suddenly stopped feeling edgy or vengeful. I'm just not the type of a person who easily forgets the bad events from the past, but I find myself merciful as long as people understand their mistakes.

Wrong decisions were made by me in past. So I just took my time and effort to get over the regrets that were haunting me. And honestly I feel great. After about 2 years of same modding<->burnout cycle I finally took a good lesson of sorts.

If any guys from VMC staff are reading this, I wish you all a good time and I apologise again for the mess I did. I hope everything stays calm and quiet for everyone.

As for other readers, I'm a poor advisor, so I will just wish you to always do what you think is right lol.

And overall, remember that there's always life outside the modding scene, and you've got to take a stroll there at one point or another, preferably with a good friend.

c3m20010 1

Also if anybody has any questions or just feels like talking, feel free to do so (SellFace#1089). Seriously, I'm currently stuck in a village, being bored sometimes so of course I'm down for any chit chat.

Introduction

Hello. My name is SellFace. I'm a sourcemodder, the developer of Fremen's Foes and Modding Bleeds.

You might've already known me around the SourceModding community. Whether that be because of my projects, mod-channels in Valve Modding Community(VMC) discord server, my LambdaGeneration map competition entry called "LambdaMarine", the YouTube shitposts, or because of the recent drama I got myself into.

This drama and everything related to it is the main topic of this post. First thing I'm gonna say is that this blogpost is something I've never done before. I had to make myself recall various painful events related to the drama and focus on them in order to write them out here. I had to calm down and supress my emotions to write all this, because this article/post is the most important one I'm ever writing here, on ModDB.

Let's start with something that made all of this mess happen. My catharsis project, namely "Modding Bleeds".

Modding Bleeds

Before being called "Modding Bleeds", my project initially started as an attempt of replicating Hotline-Miami's gameplay in Source through Hammer I/O and it resulted in LambdaMarine entry to LambdaGeneration's competition. The entry had silly plot which basically was "you are rebel, go kill combins". Besides that I had managed to replicate some of the mechanics from the original game. The cutscenes, combo system, level reset on player's death, weapon pickup, partially the score system and other things.

I decided to do this entry because during that time I was sick with development of FF:R and I knew I had to do some sideproject(I was previously suggested doing one, many times before). After taking 3rd place in the competition I definitely knew there was something more I could do with my entry.

I had a dream of making a catharsis project. During many months of my modding experience I was accumulating lots of various thoughts, emotions and wisdoms about the SourceModding community and the modding itself as a hobby. I thought it would benefit me if I take all my frustrations and turn them into a modification based on my LambdaMarine entry. Funfact is: I was inspired by Slave of Gmod gamemode alot, because its plot was also about the problems of a modding community of a Source game.

My main goal was to convey both my frustrations and ideas about the SourceModding and the community behind it. I wanted to portray the struggles I had and still have in this form of violent gameplay accompanied by cutscenes with dialogues.

Yes, I did an edgy self-insert, the dialogues were pretty edgy aswell, but that was the whole point of the project being a catharsis. I never bothered with making the story being well-written in terms of better readability etc. I cringe myself sometimes, when reading it, but I always remember that most part of the plot and writing was done while being heavily influenced by emotions I was releasing during development. I wanted the mod's message to be absolutely sincere.

In the end I managed to stay honest with myself, but being too focused on the emotions and having to rush the mod had made me to take careless decisions which resulted in a really devastating drama.

Post-Release Drama


Last 2 levels of Modding Bleeds were made in a rush - in only 2 days, so I had no time to stop and think about any consequences that will follow after releasing it. I had reasons for being in a hurry. Moreover I was desiring to finish this project and become free from modding. Hence I left the VMC shortly after releasing it, I wanted to take a break. But, ironically, things turned upside down the moment I posted the file link.

The mod featured... quite risky and questionable stuff involving shoot ups of other communities and other things. I did expect to get backlashed for the rebel reskins, but I didn't expect any drama because of portraying shoot ups of modding communities. So those were my 2 main mistakes - being careless at the last development days and not thinking about consequences it might get me.

I can't really blame people that much for taking the mod too seriously without trying to understand its points, but I wasn't really happy after being acknowledged that I stirred up the hive so much to the point that I was forced to take actions in order to keep my project in the modlist without getting it removed.

I never supported any actual violence in the modification. Moreover, the inside-mind characters of the protagonist only judge him for commiting shoot ups. The gameplay is heavily metaphorical and shouldn't had been taken seriously. But because of the reasons above, I couldn't foresee such reaction. People really got mad over a silly Half Life modification. Atleast I managed to have the mod still remaining on the site by censoring it.

But this post would've never existed if it wasn't because of the devastating events following the drama. These events relate to the community I used to be a proud member of...

Valve Modding Community

What is Valve Modding Community, or VMC for short? It used to be named as Source Modding Community(SMC) few years ago, but was renamed to avoid confusions, as it's not focusing solely on the Source engine, but GoldSource too.

The VMC is a discord server for SourceModders, it existed for quite long before I stumbled upon it.

All I can say is that according to my first impressions back in 2020, the server was pretty based. The most based one out of the rest of Source Engine servers out there. It was my first foreign and first modding community I got into. I met various people in it, some of them working on their own projects to this day, some of them had became (if I can say that?) my allies.

Just few months before the drama happened, the now-former owner of the VMC, the skunksman Renegadist stepped down from his position and transmitted the owner rights to a different person from the staff. Everyone was sure, that VMC will continue living in it's glory same as before.

But things changed when this drama happened. In VMC I had a mod-channel dedicated to Modding Bleeds, and obviously upon it's release, the according links to it were posted around.

I left VMC for a break few hours after announcing the release of Modding Bleeds. But as soon as the specific part of the community acknowledged my modification, someone started a shitstorm on VMC in my mod-channel, when I wasn't even there anymore. Most likely the mob was falsely accusing VMC of being responsible for the offensive content in the modification.

I'm amused by the cleverness of the haters for choosing to scream in a place I used to be in, instead of, like, dropping dms to me directly. It's pretty surprising that nobody actually ever sent me their complains directly, although some people said I was getting harassed over the mod. Welp, the worst thing I had to do was losing some sleep for the sake of censoring my thing.


I never wanted any of this mess to happen, if I had known, I would've wiped out the Modding Bleeds myself entirely. What also horrifies me is that more and more things in the plot of my mod were becoming accurate to the reality. The dialogues I was writing before the whole drama, whilst being influenced by heavy emotions, turned out to be more truthful than I thought.

Despite all the drama, I'm not cancelling FF:R and still plan to work on it when I'll be done with irl responsibilities, even without the feedback from VMC. That's all for today, thanks for reading.