Development Log 1 - 10-19-2024

Post's image

Development Log 1

10-19-2024

Post's image

Hello!

It’s been a while. I’ve been involved in my personal life with many things, though just know that is a very important desire to work on the story Princess Proulx. Some of that progress is being made in the first volume of the comic. As I type this, the storyboards are already nearly halfway done for volume one. I, unfortunately, can’t give a specific date of when this will be out, other than saying it will be out.

To bring some more fun to the site, I’ve also decided it is time to make a game that can be played in a browser. It is a Princess Proulx themed game I’ve had in mind for a while now. Though maybe just to keep it a surprise, I’ll decide to not give the official title of it yet, however, there are fortunately no qualms with sharing the early development of this project.

Let’s start with a rough sketch of what the game is ideally going to look like as envisioned in my mind, then allow me to explain the general concepts:

Rough drawing of a first-person game.

Now, WHAT is going on? Well, it’s a first-person boxing game! You play the role of a training boxer, who is also a college student that is newly acquainting themselves on campus, with the iron might of your dickheadedness by showing those WEAKER than you that your ‘ole one-two is mightier than the pen AND the sword. Why? Why not? It’s fun to cause a little mayhem! Also, what’s wrong with getting a little practice in for your favorite hobby?

The thing is, there are supposedly rumors that the princess of France herself, Rébecca Proulx, is pretty strong herself! Now then, rumors are rumors, so let’s dispel them and see if she’s got what it takes!

I’m planning to make the whole game stylized, what with the text and the strange appearance of objects, such as the clocks being your health bar. I won’t get too deep into Princess Proulx here, but the world is a bit strange and has its own rules. I’ll summarize: Any physical damage can be regenerated instantly, regeneration causes stamina loss, and too much loss of stamina means a KO. Once you’re too fatigued, the alarm clock will ring, and your character will slam into it, falling asleep immediately as the game over text randomly displays an array of goodnight quotes, such as “Time for bed!” or “Sleep well!” Things like that.

I’m hoping the style will add to the immense violence. The drawing doesn’t do it justice for the idea in mind, but whenever you punch someone, or even get punched yourself, chunks of flesh should fly off the person as well as you. The whole point is knowing when to regenerate and when to fight. Careful though! Regenerating body parts takes bits off of your stamina gauge permanently throughout the round! Hence the gray shaded area within the clock. The green area shows a more potential area of use for body regeneration to trade for stamina.





We’re getting a bit ahead though… Right now for this log, I’d like to focus on just where the game is at, and not what holds in the future. Just focus on the present for now, like an Eastern philosopher. Take this rambling of mine as a small snippet of what’s to come. I may still use this drawing to show what the other future UI is and why it is (or maybe isn’t) necessary in the game.

To start, this game is being created in Gamemaker 2. It took some re-learning to understand the GML language, but it seems pretty standard as a programming language. It feels simple to use, the only issue is deciding what events to use in which objects and whether or not to create scripts themselves instead of scripting the object inside of its ‘step’ or ‘create’ event. It could be that I am overthinking it, but it’s an easy process, I’ve just been mostly using ‘create’, ‘step’, and ‘draw’ events, and never really found a use for the other ones yet.

So far this game can move, or at least, it can give an illusion of movement:

A GIF of the game where a grid layout is moving in conjunction with the input the user gives

If you can believe it, figuring out how to create the reference lines for the horizontal lines to show movement was time-consuming to figure out for some reason! Other than that, look at it! My beautiful creation! It has a long way to go, but now it’s something that’s cemented in time!

I need to mention that the whole control scheme will be mapped exclusively on a mouse. Honestly, I wanted to try and see if I could challenge myself by having a very simple set of controls, and the mouse provided the least amount of options, so it made the most sense. How is the player moving? By scrolling the mouse wheel. As strange as it is, I noticed there was a bit of serendipity from mapping it this way as I’d like to imagine that the player is moving like a real boxer due to the pauses being made to keep scrolling up/down by moving the finger back to the bottom/top of the mouse.

Imagining the movement of the player character moving alongside the input of the mouse scroll.

The next hurdle is to show the environment. It’d be cool to fight in a black endless abyss and all, but it’s just not right without some life involved! Where are we?! Are there any signs of history?! Some Earth?! Optical dating of the exposed feldspar and quartz minerals poking out of the orogeny with the normal fault?!?!?!?! NOTHING! It’s all flat… All boring… Thus we introduce the finest homes in all of France! (Or as they say in French, ‘Luh Maysaw’ or ‘la maison’ however they pronounce it in their amazing language of silent letter endings).

The best goddamn drawing of a house you'll ever see

Ah, look at it… Finest architecture in France… Now don’t stare at it for too long! Maison here hates people who stare at her! They come across as creeps! This sprite will be used in the 3D environment as a test to see its perspective of how a building may look when the player walks towards/away. This may not only be for buildings though, but the whole environment if possible. The plan is to make it a DOOM type of look, with flat sprites that give off an illusion of 3D by slanting them at specifically correct angles for the POV. There is even a future idea of doing what the N64 does by providing some sprites to be completely 2D, but from the 3D perspective will always face the camera for the simpler objects that need not a 3D rendition, such as plants, door knobs, or even people.

How is this to be accomplished in Gamemaker? Well, I found a function that does shear sprites at desired angles. The function draw_sprite_pos will do the trick, as it provides four x coordinates and four y coordinates in space, to which it will warp the sprite inside the area of the given four coordinates of each x and y value.

Example given from Gamemaker 2's post on the function for draw_sprite_pos()

I’d like to first point out I am NOT an expert in Gamemaker 2, so while there may be better ways of going about this, it will work for now. With that out of the way, let’s implement this function!

Showcasing the function being used on the example house sprite

This does work, but I noticed it’s not truly accurate to the perspective being provided. Plus, as a test, this is going to suck ass when trying to apply movement from the player to the sprite, as it is quite literally just hardcoded values to see what the building may look like in this type of environment.

A few lines of code showing the draw_sprite_pos() being used for the house sprite with specific coordinates.

This is NOT ideal, but it is good as a reference! My biggest problem is I’m pretty sure that the whole point of reference lines, especially vertically, is that the base and top of the object agree with the fact that they must all point towards the line of center. The line of center for this example appears to be vaguely defined as it’s not in an exact spot on the horizon, but rather above the game window somewhere… Therefore, the top of the building should not point to the direction of the line of center, otherwise it would look extremely slanted. Here’s a drawing to show what I mean, as well as why I have an issue with why this house is rendered this way despite giving a 3D appearance:

The perspective grid of the game.
A regular perspective grid.

So in this regard, I guess it will look best for the base of the building to be the only ‘line’ to follow the vertical lines strictly as they are being applied along the horizon. The top of the building can just be eyeballed and made to look a bit jarring. Of course, this is all for now and may be drastically changed in the future when I decide this look is too strange to implement.

As the static placement of the house is being commented out in the code, an idea popped up to just display as many vertical lines as possible to pretty much give almost every potential line to be used for the base of the house to correctly sit on. Not only that, let’s create a line that moves through every line and highlights it blue!

The many many white lines in the game being renderred as well as a blue moving line showing all of the possible vertical lines that are correctly following the perspective given.

Well, that was easy enough! How does the house look when we put the base on the blue line?

The dangerous flat piece of paper weighing the mass of a house.

AMAZING! Well, not really, the building is too large and the sprite is too stretched. Therein arises another hurdle, how can we shrink the size of the sprite to be the original size that it is (512 x 512 pixels) but still remain slanted, appearing 3D for the player? I’ve found Gamemaker 2 has a way to draw a line based on length, similar to how I’m doing it, but it does it based on an angle, which is just what I needed! If I can find the consistent angle of the grid, this can be applied to the building, and, for future use, it can always be updated with the distance it is from the player, whether it’s close in the center, or far to the left/right!

So, here goes! Let’s try using lengthdir_x and lengthdir_y!

A wonky red line and a static green line on the plane.

… And this is where I left off. The red line is trying to utilize the lengthdir_x and lengthdir_y with movement, while the static green line is using lengthdir_x and lengthdir_y without movement. The green line is not accurate either. So far, I find the red line silly, but I need to figure out how to, one, get the angle of the line, and two, figure out the correct length to shrink the house to its original sprite.

Afterward, the sprite will need to move with the player and yadda yadda blah blah.

Look, this whole post is to say that there is work being made, and there is a comic being worked on. I’ll be happy to keep providing updates on the game as it comes along, but for now, I believe I’ve shown enough and typed plenty of ears off.

Stay tuned for the game, and especially for the comic!


Back