Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

socks and hair

23
Posts
1
Topics
1
Followers
1
Following
A member registered Sep 28, 2021 · View creator page →

Creator of

Recent community posts

the game was interesting! i like how the levels are all interconnected via rooms, it adds for more immersion. the variety in enemies is great, but some enemies felt a bit buggy or painful to work with where it was unclear how they actually function and thusly making it a bit of a challenge to get deal with them. the music was nice, but i think adding some sound effects would be great to making the experience better, especially with how it can add a greater layer of responsiveness to the player. there were also parts that seemed too difficult with too many enemies crowding an area, or enemies being too close in areas that need to be accessed and also parts that seemed nearly impossible to do due to jump height. with some more time and work, this has a lot of potential because a some systems are done very well with it, and since this is chapter 0, i'm looking forwards to when new content is added and more updates patch things. cheers!

(1 edit)

I usually never use caps lock (it's funny writing styles exis dee) but for the sake of legibility, I will right now.

I am the programmer for this game, and I learnt a lot from working on the online multiplayer aspect of it. I have worked with online multiplayer in the past using GDevelop's peer to peer options, but never got past small, barely functional prototypes.

Here's what I've found!

How does it even work???

It is both easier and harder than you'd imagine.

Think of it as a text message in a group chat. When you write the message, the message may be stored on your end in text before you send it, but it won't be sent yet so nobody else can see it. That data is stuck with you, the client, and you control what happens to it. However, if you do send the message, then that data will be sent to other people in the group chat. It wouldn't just be on your client but everybody else.

That is essentially how it works with online multiplayer through peer to peer connections. You take action in your client, that data gets sent to other people, and those clients take action based on what they receive. And of course, you can choose to have some data not be sent at all and keep it with the individual client.

In this case, say Kiffen (the blonde player) jumps. The client would send that they, Kiffen, jumped to other clients. Those clients would then tell Kiffen to jump once receiving the event. That's pretty simple and straightforwards.

The Catch: Latency

But it's not all straightforwards, because lag exists. Latency exists.

When you send the message on your phone, there may be a slight delay before other people get it. The same applies for emails when you get a verification code sent to your inbox, and the same happens here with the actual video game.

When the client controlling Kiffen jumps, they appear to jump. When the client controlling Maintane jumps, she appears to jump. But if there is any delay, then Kiffen may appear to jump at a different timing than Maintane, and Maintane may appear to jump at a different timing than Kiffen. 

That's to be expected, each player could be in a different building, or town/city, or county, or state, or country, or even continent. So... what can you do to help adjust? If lag is a guarantee, how do you keep everything having client parity?

Well... correctional code, or accommodating for the inevitable.

Correctional Code

For example, when Kiffen jumps, the jump may be triggered slightly behind on Maintane's end, but if Kiffen jumps and runs, there may be a chance that the timing between each event is different for Maintane. Maintane will just see that her friend jumped and ran into a wall instead of jumping over a wall. Meanwhile, Kiffen will be just standing happily at the other side of the wall, and if they choose to run forwards more, they can continue and do more things. Except... for Maintane, Kiffen will appear to be still running into that same wall they never jumped over.

To fix this, having code to send Kiffen's exact coordinates after a set interval and force Kiffen to appear in that position on Maintane's end will do one of two things:

  • nothing because the clients are synced so Kiffen is in the proper place each time (in the best case scenario with good connectivity)
  • ensure Kiffen is closer to where they actually are each time (ex. instead of still running into a wall, Kiffen may teleport behind the wall at the right position. It may break immersion a little, but so is Kiffen running into a wall for 2 minutes instead of being behind and past it)

This correctional code fixes the biggest problem (sometimes): the players being so out of sync at times that they are completely far from where they are supposed to. But I say sometimes, because sometimes lag will be where it is so bad that each player is way too delayed for the game to handle. Because if the game delays inputs, what prevents it from delaying position corrections? There just will always be cases like this at some point with peer to peer connections and you have to be able to accept not everybody will be able to get the perfect experience. You just need to find a balance and spot to be happy with.

Accommodations for the Inevitable

Here's an example.

Enemies exist in the game. How do they sync with each player? You can choose for one player to act for it, where enemies move normally for them and enemy movement is sent to other clients. But... what about lag? That can lead to enemies teleporting and unfairly killing players.

For this, a solution (and the one this game takes) is having enemies be only player-side, aside from when enemies die. That means all players will always have their enemies where they see them which prevents unfair deaths, but... what about the fact the enemies may be off sync for others? The enemy could be on the right for Kiffen but on the left for Maintane.

This is the compromise and accommodation. Leaving the players not synced aside from when they are brutally jumped on to death is always going to have its own flaw of enemies possibly being in different positions for other players, but it stops a bigger issue of unfair dying. And this is what has to be done for a smooth multiplayer experience. You have to be willing to let some parts not be as perfect with peer to peer, because each client is connecting to each other to make it even work and they are not relying on a big server somewhere that controls everything.

Other Interesting Notes

I guess that takes care of the big stuff, so let's get into various stuff I learned.

  • Have checks for what player is what whenever you can! Each client for this game stores what player number they are to properly check if input happened and what player they were so they can move the player accordinglyThese checks will come up a lot, so if you step back and think "man this code is cluttered with checking every time what player you are," yeah, it happens.
  • Take advantage of a host vs joining client. The host can let you designate one place for authority over some issues which may happen and need a singular player to make a decision. 
  • Keep in mind what to display for each player. In this game, some sound effects only play for specific players when they do things. This includes killing an enemy, because if a different player kills the enemy, that sound effect may happen when others are nowhere near the dead enemy. This is just an example of making sure to know what data to send and what not to send.
  • Open two previews of the game at once when testing and have them join each other. Yes, you can do that. Yes, I didn't realize that until this project and I've been using GDevelop since GDevelop 4 with years of experience. It took a bit for me to figure this out instead of purely making a debug mode (that became the single player mode. not that making a debug mode is bad, it just makes some issues harder to test before compiling).

So... what else?

There's honestly not much else to say.

Just always remember: no matter what you do, online multiplayer is impossible to make a perfect experience. But if you do what you can to ensure the smoothest possible experience knowing some issues will occur and prepare your game for the event of that happening, then things can be hopefully successful!

I hope this was helpful in understanding some aspects of peer to peer connections. I think most of what I said applies to the majority of game engines with peer to peer multiplayer support, so hey, if you are using multiple game engines for different projects like me, this might be beneficial for you!

If you also are new to peer to peer with GDevelop, I recommend looking up "The Gem Dev GDevelop Multiplayer" on YouTube for a good and detailed guide on getting it setup.

This game jam has been fun, and I'm very proud of what Maren (me + ren who is the artist and epic like a boss) has made. Good luck to everybody and have a good one!

the graphics are simple and the bullet shooting is fun, but it is very difficult to actually ride a bullet due to the speeds and sizes and when firing a bullet, because it spawns on top of the player, it makes the player move a little which is not great. the lack of sound is a bit apparent, having any audio at all would make the experience a little nicer. i also think that part of the design is a bit too difficult due to the lack of checkpoints (at least from how far i was able to get past). it made it a little frustrating at times. i also don't see how it relates to the theme of building.

besides that, it was a nice game. with a lot more tweaks and some time spent on it, i think it could end up being a really nice and fun experience. hopefully after the jam some of these issues are ironed out since the concept is really interesting. nice game and cheers!

the art is simple, and some mechanics like parts to modify the player is really neat. some level design was a bit... too difficult? one area in particular was level 2. the autoscrolling is neat but the area with the first turret is quite miserable without double jump due to both the bats and the turret and very precise jumping being required. that though is just my personal thought on its difficulty, but as for the game design, one major issue was the fact that the autoscrolling has no barriers at the start or end of the camera. i was confused and jumped off a cliff at the start because i didn't realize it was an autoscroller because the camera only moved after a few seconds of waiting, and had a barrier been there, then it would have both prevented the fall as well as made me see clearly first it autoscrolls. you can see this used in games like super mario bros 3 in its autoscrolling levels. another critique would be turrets. because they angle at the player location before shooting, it makes the visual off in that a bullet would be fired but then the turret immediately faces another direction. stopping the movement for a moment to fire and then wait and then continue rotating would make the turret visual feel a bit nicer since it is required to be looked at in order to avoid being shot.

the levels were fun on their design though and the music was nice. some changes just would make it a little nicer and more smooth and overall feel better to play. regardless, nice work!

interesting game, a few critiques:

  • the movement is a bit stiff, it would feel a bit smoother if the player could be a little faster
  • because of the size of some objects, it made things like the bridge hard to move due to how much can be seen onscreen at once as a result of the camera. zooming out the camera a bit could be nicer, or scaling down some objects and things
  • the music was a bit repetitive
  • don't see how the game relates to the theme

i do think that limiting the amount of times you can drag an object until you get a potion(?) is an interesting and good way to limit the player somewhat in how much they can, well, move objects since that pushes the player to be smarter and think more about how to get past. besides that, nice game and cheers!

interesting game, reminds me of that one io game that involved zombies with the topdown perspective. something i'll note, the distance to the next object was very bugged. it changed even when i wasn't moving and at such a speed that it made it incredibly hard to tell if i was going the right direction. the music also got a bit repetitive with time. fixing those two things would make the game a bit more fluid and fun. that's all, cheers!

ah, that makes sense then!

hi! when you press "host," there is a singleplayer button. this video should how clearly how to start

reminds me of space invaders and some atari games in the visuals and gameplay, it was fun! my main criticism is that the enemies spawn too quickly with too little hp, so it gets very overwhelming very quickly. besides that, quite fun

oh, didn't realize there's a different boss! it was the one that attacks on the ground and runs, and can jump upwards and destroy blocks it hits when it jumps. i hope that is descriptive enough, not sure how else to describe it

the visuals look nice, but it would be great if they were a bit brighter if that makes sense. it was very dark so it was hard to see where to go without turning up my screen brightness

the controls aren't really that clear and i can't seem to be able to change my weapon reliably, i know there is a way to change it since it became an axe at one point but i can't seem to figure out how to get it working

the controls aren't really that clear and i can't seem to be able to change my weapon reliably, i know there is a way to change it since it became an axe at one point but i can't seem to figure out how to get it working

(1 edit)

i think there's a confusion that seems a bit more widespread than i thought, so i think it was the wording "select a player" being different from "click a player"

when on the player select screen, you have to select a player first, so if you aren't able to proceed to the game it's probably because you didn't select one. just click any of the characters to select, and then you should be good! i recorded myself doing so to show it works

this is done so that the game can wait for all players to choose who they want to be so that the game knows who can be controlled and which player is which when handling multiplayer, as well as give the freedom to select which character they like more in singleplayer. it is just clear the wording "select a player" wasn't clear enough, so i'll have to fix that after the jam. good to know and keep in mind for the future!

(1 edit)

i think there's a confusion that seems a bit more widespread than i thought, so i think it was the wording "select a player" being different from "click a player"

when on the player select screen, you have to select a player first, so if you aren't able to proceed to the game it's probably because you didn't select one. just click any of the characters to select, and then you should be good!

i recorded myself doing so to show it works

this is done so that the game can wait for all players to choose who they want to be so that the game knows who can be controlled and which player is which when handling multiplayer, as well as give the freedom to select which character they like more in singleplayer. it is just clear the wording "select a player" wasn't clear enough, so i'll have to fix that after the jam. good to know and keep in mind for the future!

i think the level design was great and the best part, and the harder but optional route of collecting coins/filling blocks was cool. a lot of levels clearly worked trying to make sure to use the ai in creative ways.

that said, this game has a major flaw which is not explaining things, such as how you can even press down on a skull platform to go under it (which took forever to find out and caused me to think a level was impossible for a while). 

this issue is also there for how to kill the bosses, but i think the bosses are... honestly way too difficult to the point of not feeling like a challenge but just frustrating, if that makes sense? i really wanted to see the game to the end but i couldn't get past the second boss no matter what i tried. i thought that somehow blocks falling on it when it hits them could be the way, but it was nearly impossible to reproduce and it was way too easy to die to it due to the speed so i wound up struggling for 15 minutes before giving up. the bosses need adjustments or at least a more clear way to fight them because i also have no idea how i defeated the first boss at all, and the first boss stops movement completely if you run out of blocks to place which i think is a bug.

this is a bit of a harsh critique on the bosses, because they felt just too punishing. an easy mode to add hp could be a nice addition or some other way to help alleviate the struggle aside from a clearer explanation on what to do for each boss.

but, aside from my own pain with the boss, i had a fun time. again, level design was the strongest part to me. it kept me interested in what the next level would be like and some levels had some crazy weird puzzles and combinations with what order to try and get all coins and blocks filled. but if you ever update the game, it absolutely needs a clearer explanation on some mechanics and adjustments to the bosses. regardless, great job and good luck, it was a fun experience and i'd be happy to play again if it ever gets an update to adjust things!

(1 edit)

after you select your player, the screen should say "press u" and then it should take you to the game. thanks for the feedback, will have to make it more clear after the game jam ends!

there is a singleplayer mode if you would like to try that instead! just go to "host" and press the singleplayer button. cheers!

it was a nice and simple game, but some feedback:

  • it wasn't super clear that you have to drop the block from the very top
  • it felt a little... too easy? in that you can just opt for specific pieces like long ones to guarantee tower stability. a bit more  to that with weird or obtuse pieces to give variety and challenge could be great
  • the music was alright, but repetitive and looped too quickly. that was unfortunately a downside
  • it was fun but a bit lacking on replayability for lack of a better word to make it feel like it has a lot of content, if that makes sense? a case where it feels like once you've played it once, you've played the entire game, if that makes sense

it was nice though and definitely matching the theme quite a bit. i recall seeing some footage of this on the discord as well. overall, good job, and good luck!

this game was short but honestly a lot of fun! the levels felt well designed and the music was alright. it reminds me of those games from coolmathgames. i will note though that it didn't feel too original since dragging platforms and all aren't super unique in my opinion. and as mentioned by dreamkingmovies, yeah, this game is a bit far from the theme. i don't see too well how it relates or feel much of it being... relevant, i guess, for lack of a better word? these feel like the two biggest issues to me, but it still was a very fun experience. regardless, nice work!

(1 edit)

disclaimer: did not play multiplayer, played by myself

the core protection seems pretty solid and interesting. it seems like a really fun party game and i'll definitely be coming back later to play with somebody on it. building though is a bit off because it doesn't feel like there's much... variety, for lack of a better word? especially with the core placement, if there could be choosing when to place the core or knowing how many pieces remain or some more aspects improved there it could be a lot better. especially since the theme is building, i want it to lean more in on the building depth for the gameplay

the actual combat seems fun for some quick rounds. there was an issue though of bullets flying through the corner to hit a core (like, the very bottom corner of an L shape for lack of a better word to try and describe it).

the music was okay, it wasn't amazing and memorable but it wasn't bad and the sound effects were fitting.

as a big fan of tetris who has hundreds of hours in puyo puyo tetris, tetris ds and tetris party deluxe, the name for the game honestly feels very misleading? the only tetris element is the way blocks fall, but they can't be rotated, so it is missing another key tetris element. this is a big thing i personally take issue with here, because it feels like it could be a cool original party game but it's completely reliant on another, very different game for the name.

overall, it was a fun project and again, i'll be sure to play again sometime to try out the multiplayer more. good luck and cheers!

pros:

  • the building in the home world is diverse and a really cool feature
  • the ui was fairly easy to understand, at least enough for me
  • the diverse range of weapons and tools was nice
  • some effects were cool like hitting/hurting enemies
  • the idea was interesting with the gameplay elements in collecting resources and killing zombies
  • the amount of worlds to explore is nice

cons:

  • could not for the life of me understand how to get more of the building block material to place ingame, or how to destroy blocks placed
  • blocks are completely bugged: you press on the button to select them and it places them as well, making them only able to be placed where that ui is
  • took a while to understand how to mine with the pickaxe because it wasn't super clear to select the pickaxe, just to press w, and when pressing w even without anything equipped there is a sound so it was hard to tell if the game was bugging out or not
  • the building was only ever feeling relevant inside the home world, rather than anywhere else, even with using the block mechanic in other parts
  • the graphics felt very out of place and definitely was clear they weren't original and used a free resource. not that using free graphics is bad, it just felt like the choice did not blend well together or feel fitting
  • while the sound effects were there, it felt very mediocre at best and more of an afterthought
  • there are some grammar and spelling mistakes through the game (capitalization randomly in the middle of a word, etc.)
  • the gameplay felt a bit boring and slow at times because the zombies don't pose much of a threat if you spam berries and the w button to kill them
  • the worlds all felt different graphically but not so much in content
  • zombies were spread very close to the spawn which made it a bit painful

feedback on changes to make the game better:

  • more detail with making worlds stand out would be nice
  • more clear instructions for how to do things
  • adding some original music and possibly selecting other sounds to make it feel more memorable and fun would be cool
  • unique custom graphics could easily make the presentation look a lot nicer
  • some more elements to combat would be great since it's just spamming w a lot to kill zombies and berries are a bit overpowered

overall, good work! my critique is a bit harsh, even with this being a game jam, but it is feedback to help so that if you ever build this game further in the future or try working on other projects, my thoughts can help with improvements. there are definitely a lot of areas that feel like they need more work, and the gameplay felt a bit too stiff with not much to do besides spamming w to kill enemies, but there is a lot of potential for this game to grow. nice job and cheers!