You must be 18+ to visit this website
The content on this website is AGE RESTRICTED
Please confirm you are at least 18 years old of age. Otherwise leave the website.
brellom profile
brellom
18+
brellom
The Female Link Artist - Illustrator
Subscribe
Message

Subscription Tiers

$2
USD monthly
Basic Support

See new artwork before anyone else.

  • Weekly Illustration (Female Link Friday)
  • Bonus Sketches
  • Game Development Blog
18 subscribers Subscriber
Unlock
$4
USD monthly
Extra Support

...

  • Bonus Perks

** This tier might see some adjustments in response to decisions made by Patreon.

8 subscribers Subscriber
Unlock
$8
USD monthly
Dropbox Archive

Access everything I've ever drawn.

  • Dropbox Archive (2012 Onward)
14 subscribers Subscriber
Unlock
$10
USD monthly
Pogchamp

You might get an occasional bonus perk, but this subscription tier is mostly just for fans who want to support me more.

  • All Previous Rewards
  • You get to be my little pogchamp
  • Also brellom's IRL boba grow 1 in. for each pogchamp. Weird...
7 subscribers Pogchamp - Subscriber
Unlock

Welcome

  • Support the creation of fetish-based artwork, such as hypnosis.
  • โ–ผ All my social links here โ–ผ
  • https://linktr.ee/brellom

Displaying posts with tag GameDev.Reset Filter
brellom
Public post

Devlog - New Elaynevania Collision System


Surprise! A gamedev update? In the year of our brell, 2026?!
I have recently started to recreate my Beaumont-vania engine in the hopes of making a better version from scratch. So I thought I would share my recent developments - and more openly.

---
Screenshots from Bloodstained: Curse of the Moon 2, which uses a recreation of Castlevania's mechanics.


In the classic Castlevania games, players interact with the world in a rather unique way:
Players will ignore collision with blocks (or o_solid) above their heads, allowing their jump arc to continue without interruption. But when jumping into [o_solid] from its side, the players will instead be prevented from moving horizontally, blocked by the wall ahead of them.
These behaviors can also occur simultaneously: players may overlap ceiling tiles while also being blocked by walls at the same time. This can be a little tricky to replicate. If our method to detect collisions is a simple rectangle that covers the player's body using place_meeting, then players would likely hit their heads on the ceiling, like in most games.
So the solution used in my prototype is similar to Castlevania's (and many other NES games): using a set of collision_points instead, all placed across the player's body to detect [o_solid].
However, different player states (move, jump, etc.) all required using different collision points, forcing me to keep track of 6+ points across different blocks code just to detect [o_solid].
ย 
Old Code - Macros for Collision Points (very messy)


Each state used their own collision points, and the airborne states all had their own variations of repeated code, introducing several opportunities for inconsistency & bugs... My logic also suffered from a few "magic numbers" and even resulted in players getting stuck on blocks.
This collision system was a constant problem across the game's development.

---
However, I recently designed a new system in a fresh project; even using a rectangle with place_meeting to check for collisions despite my earlier statement.ย 
This requires some clever problem solving - inspired by Programancer's method for TASQ.


Instead of checking for collisions with:
place_meeting(x, y, o_solid)

I am using:
place_meeting(x, y_offset, o_solid)


Instead of detecting collisions at the player's Y coordinate, we're checking a dynamic position that changes using a custom local variable [y_offset]. This basically lets us trick the code into thinking the player is not PHYSICALLY inside of the block, allowing uninterrupted jump arcs.
So, when checking to see if players can move horizontally:

If the player is OUTSIDE of [o_solid], check for blocks AT the player's height.

If the player is INSIDE of [o_solid], check for blocks BELOW that [o_solid]'s bottom edge.


As a result, since [y_offset] is being lowered below the active ceiling, players can still bump into walls on the side, as those walls are ALSO below the active ceiling - achieving our goal of recreating Castlevania's environmental collision.

Although not accurate to the written code, this is basically what is happening.


---
I have also created a script for generic jump movement to use in all relevant airborne states, so that I can re-use it without having to write it more than once. If any changes are made to it, then it will be reflected in ALL of the player states that call this script automatically.
Moving forward, I plan to use this strategy more often -- creating "building blocks" of logic to re-use across multiple scripts & objects instead of hard-coding similar behavior every time.

Helper Script: Handles horizontal movement, for use during all airborne states (Jump, Fall, Jump Whip, etc.)
Player Jump State Script: Calls the Helper Script, but does not handle any horizontal movement itself.


My new logic is still work-in-progress, but has proven fairly successful so far. The new logic is cleaner and doesn't have many of the "wall clipping" problems my last system did. I found a notable bug in the Helper Script's second condition, but it otherwise works fine. Still, I do need to fix that, so the shown code does not reflect the final product. I want to make sure this behavior is perfect before adding any other player actions.
It may be worthwhile to create a game focused on platforming without complex mechanics, so that it would be much easier to test & receive patron feedback without other mechanics getting in the way.

---
This game development blog post is different from previous posts because it focuses solely on logic and code, which I imagine limits the overall entertainment value for most viewers -- but it is interesting, and an important part of the development process.ย 
I'd also like to be less rigid with my devlogs by not requiring it to always highlight new art or features, so diversifying is nice. Whether that's showcasing a linear progression of the game engine, general game design concepts, or even experimenting with other game ideas...ย 
Don't forget to eat & sleep.
Like(7)
Comments  loading...
Sign Up or Log In to comment on this post
brellom

Vampire Hunter Beaumont Prototype - Patron Demo 

Comments (1)
Like(9)
Dislike(0)
Posted for $2, $4, $8, $10 tiers
Unlock
brellom

Game Dev - Vampire Killer Beaumont Demo 03 

+ 2 other attachments
Comments
Like(5)
Dislike(0)
Posted for $2, $4, $8, $10 tiers
Unlock
brellom

Game Dev - May 2025 #02 - More Level Tiles 

Comments
Like(4)
Dislike(0)
Posted for $2, $4, $8, $10 tiers
Unlock
brellom

Game Dev - May 2025 #01 - New Level Art Direction 

Comments
Like(5)
Dislike(0)
Posted for $2, $4, $8, $10 tiers
Unlock
brellom

Game Dev - Apr 2025 #03 - Enemies Galore 

+ 4 other attachments
+ GIFs attached
Comments (1)
Like(7)
Dislike(0)
Posted for $2, $4, $8, $10 tiers
Unlock
View next posts (6 / 17)

The subscription gives you:
  • Access to Creator's profile content.
  • Ability to support your Creator by pledging โ€“ one-time or recurring.
  • Means to reaching out to the Creator directly via Instant Messenger.
WE USE COOKIES

SubscribeStar and its trusted third parties collect browsing information as specified in the Privacy Policy and use cookies or similar technologies for analysis and technical purposes and, with your consent, for functionality, experience, and measurement as specified in the Cookies Policy.

Your Privacy Choices

We understand and respect your privacy concerns. However, some cookies are strictly necessary for proper website's functionality and cannon be denied.

Optional cookies are configurable. Disabling some of those may make related features unavailable.

We do NOT sell any information obtained through cookies to third-party marketing services.