|
GGPO, the famous rollback-based netcode is now open-source. Commonly used in fighting games but it can also be used in other projects. This is a big deal especially for the fighting game community as this guarantees new games to have better online. Maybe this can be useful for you guys too. https://twitter.com/Pond3r/status/1181800172184977408?s=09
|
# ? Oct 10, 2019 01:42 |
|
|
# ? Jun 5, 2024 05:29 |
|
Big Scary Owl posted:GGPO, the famous rollback-based netcode is now open-source. Commonly used in fighting games but it can also be used in other projects. This is a big deal especially for the fighting game community as this guarantees new games to have better online. Maybe this can be useful for you guys too. We're already making sure our brawler can accommodate it, it's really big news.
|
# ? Oct 10, 2019 02:22 |
|
Zaphod42 posted:The 8-bit VR game I was talking about was COMPOUND Ohhh yeah, compound is heckin' rad! I'm curious if VR is going to go through a similar cycle that PC did. Early games left a lot to the imagination, graphically. Doom and Quake relied pretty heavily on abstraction and it feels like it wasn't until, like, Duke Nukem 3D? that we got recreations of actual locations that looked like it. Maybe we're going to see the same popularity in those abstract games and cutting edge VR graphics until the technology/framerate catches up to the PC more? Either way, there's always a crowd for stylized art Lucky us.
|
# ? Oct 10, 2019 03:10 |
|
SweetBro posted:Interesting. I'm curious about the technique used to get such crisped shadows. Are they just part of the sprite? Rusty Bucket Bay in Banjo-Kazooie has one of my favorite examples of this, it has some quite dramatic shadows that look really impressive for the system it's on but if you disable the vertex colors... and a look at the geometry shows that they literally modelled in the shadows and used vertex coloring to darken the faces
|
# ? Oct 10, 2019 04:46 |
|
Metos posted:This is actually not true, I've attended a talk where the person who made their custom tool for sprite packing went through their entire process and how the sprites are so weirdly sliced and reused for an incredible amount of efficiency and looking at their sheets is complete nonsense. It must unpack itself during installation or it may have been something used on the development end because all the visible files in the Unity asset packages are fully pieced together. There's some sprites that are bits and pieces like someone's arm separate from their body, but the game files are like tens of thousands of sprites for animations designed for 60fps, it's nuts. I don't even remember "douchebag" but he has like 500 frames of animation.
|
# ? Oct 10, 2019 05:45 |
|
Your Computer posted:in that example (that looks awesome by the way, if I had a VR setup I would be interested just due to the aesthetics!) it looks like it's just hand-drawn, which was already mentioned, but another technique to get really crisp shadows is by simply building it into the geometry! That's awesome. Yeah I can see exactly how you do it, and it makes sense that a competent artist with an understanding of shadow can bake very convincing textures, especially with highly polygonal environments. But then if you showed me that picture I would never guess. It just looks ... perfect. It feels like those shadows must be rendered! That's something I've noticed psychologically in games, its funny how willing your brain is to fill in certain details and imagine that the game is doing more than it actually is, if that makes any sense. Like I've been noticing how lots of video games have bird-call noises but you don't actually even see birds anywhere. Just hearing birds makes you feel like you're outdoors and seems appropriate to trees. As a player if you hear a bird and don't see them, you figure they just flew off and must have been behind you when you weren't looking or hidden in a tree. But its entirely possible its just a bird.wav sound effect triggering on proximity to some bushes. Still, hearing the bird makes you imagine a bird which makes the world feel more alive. Funny how that works. E: Now I'm trying to think of how you could algorithmically compute geometry based shadows. And then that lead me to asking, has anybody ever tried to represent a shadow map as vector art?! Hmmm, could you do that in a shader? You'd probably be limited on the total number of shadow vertices in the scene or something... Zaphod42 fucked around with this message at 06:51 on Oct 10, 2019 |
# ? Oct 10, 2019 06:43 |
|
Zaphod42 posted:That's something I've noticed psychologically in games, its funny how willing your brain is to fill in certain details and imagine that the game is doing more than it actually is, if that makes any sense. Zaphod42 posted:Looks great, although I feel like some of the amazing detail is lost. it looks like like moldy spaghetti and poop, but it doesn't matter because when it's scaled down to 64x64 pixels and ran through texture filtering it gives the impression of far more detail. It practically feels like cheating, but I'm very happy about it
|
# ? Oct 10, 2019 07:45 |
|
Zaphod42 posted:Like I've been noticing how lots of video games have bird-call noises but you don't actually even see birds anywhere. Just hearing birds makes you feel like you're outdoors and seems appropriate to trees. As a player if you hear a bird and don't see them, you figure they just flew off and must have been behind you when you weren't looking or hidden in a tree. But its entirely possible its just a bird.wav sound effect triggering on proximity to some bushes. Still, hearing the bird makes you imagine a bird which makes the world feel more alive. Funny how that works. I know you are just using this as an example, but on this specific topic my team recently realized we may have a legit problem making atmosphere sounds for an outdoorsy game in which birds are people. Should we just handwave this and use bird noises anyway, assuming there's bird PEOPLE and then also just bird birds in this world? Or is it better to avoid strange implications entirely and just find other noises to fill in the "outdoors" atmosphere? I guess cartoons handwave this a lot but it never ceases to weird me out. EDIT: Additionally, we may actually use bird chirps/etc as sound effects for the bird kids, so I guess this also has potential playability ramifications?
|
# ? Oct 10, 2019 07:46 |
|
Bert of the Forest posted:I know you are just using this as an example, but on this specific topic my team recently realized we may have a legit problem making atmosphere sounds for an outdoorsy game in which birds are people. Should we just handwave this and use bird noises anyway, assuming there's bird PEOPLE and then also just bird birds in this world? Or is it better to avoid strange implications entirely and just find other noises to fill in the "outdoors" atmosphere? I guess cartoons handwave this a lot but it never ceases to weird me out. Hahaha, I have no idea but that's pretty funny. Maybe you could get by with Cicadas and Crickets and insect noises? I'm kinda running into a similar thing in my game, where the theme is cooking monsters into meals, which works pretty well for like Dragons and Dinosaurs, who wouldn't want a T-Rex Burger? But then you run into some animals like Centaurs and Minotaurs which are ... potentially sentient and human-like? Cooking a centaur burger is probably not gonna fly. I have zero interest in making a cannibal simulator So I'm grappling with a similar problem. Right now I'm thinking I may have some humanoid enemies but have them drop no ingredients of any kind whatsoever, simply act as guardians that block you from accessing some rare plants or something. But I may end up avoiding it entirely. Although I also have an image in my head of having ghost enemies that if you defeat them with magic or something, they drop "ghost meat" which is invisible but lets you cook with it, and produces like a burger that's just a bun floating above another bun. Maybe that's too far out of an idea but it stuck with me. But then, "ghost meat" just creates a ton of questions. Ectoplasm? lol. E: Also, today I had to google "types of salads" for my game. So that was fun. Zaphod42 fucked around with this message at 07:52 on Oct 10, 2019 |
# ? Oct 10, 2019 07:50 |
|
Zaphod42 posted:Hahaha, I have no idea but that's pretty funny. Maybe you could get by with Cicadas and Crickets and insect noises? You had me at ghost burger. The humanoid thing makes total sense, I can see trying to avoid weird implications there, but if the art style presents ghosts as like, floating sheet monsters or slimer or whatever, I think ghost burgers are too tempting to pass up. That's a press release all on its own right there.
|
# ? Oct 10, 2019 07:54 |
|
Zaphod42 posted:Although I also have an image in my head of having ghost enemies that if you defeat them with magic or something, they drop "ghost meat" which is invisible but lets you cook with it, and produces like a burger that's just a bun floating above another bun. Maybe that's too far out of an idea but it stuck with me. Zaphod42 posted:I'm kinda running into a similar thing in my game, where the theme is cooking monsters into meals, which works pretty well for like Dragons and Dinosaurs, who wouldn't want a T-Rex Burger? But then you run into some animals like Centaurs and Minotaurs which are ... potentially sentient and human-like? Cooking a centaur burger is probably not gonna fly. I have zero interest in making a cannibal simulator Bert of the Forest posted:I know you are just using this as an example, but on this specific topic my team recently realized we may have a legit problem making atmosphere sounds for an outdoorsy game in which birds are people. Should we just handwave this and use bird noises anyway, assuming there's bird PEOPLE and then also just bird birds in this world? Or is it better to avoid strange implications entirely and just find other noises to fill in the "outdoors" atmosphere? I guess cartoons handwave this a lot but it never ceases to weird me out.
|
# ? Oct 10, 2019 08:08 |
|
Anybody familiar with Disney knows the separation between animal and "funny animal." If you want an in-universe explanation then just say birds share a common ancestor with bird-people.
|
# ? Oct 10, 2019 11:03 |
|
Don't explain it at all but instead lampshade it at the end by having a character refer to the obnoxious group of party-birds that were making an insane racket all week.
|
# ? Oct 10, 2019 11:18 |
|
Maybe the bird people can make human sounds but also bird noises? So the chirps in the background are basically the equivalent of ambient crowd noise? Bird rhubarb and silverpaper? On a practical level if you wanna use chirps for important characters, just putting an echo on the background chirps might put them in a different enough 'space' that the foreground chirps will still catch the attention...
|
# ? Oct 10, 2019 14:35 |
|
Fangz posted:Don't explain it at all but instead lampshade it at the end by having a character refer to the obnoxious group of party-birds that were making an insane racket all week. I was thinking something similar, except have a character that you can occasionally find in the bushes, practicing their birdcalls. EDIT: well, poo poo. The actual gameplay is different from what I'm going for, but dangit their ship designer is waaaaaay shinier than anything I can realistically put out. I was hoping that "design your own ships" would be a strong differentiator for me. TooMuchAbstraction fucked around with this message at 14:59 on Oct 10, 2019 |
# ? Oct 10, 2019 14:53 |
|
Don't focus on that. Literally any idea you come up with had been done before in some way. Focus on making the game your want to make and making it fun. Unless you quit your job to make this, it's a hobby and you should make what makes you happy.
|
# ? Oct 10, 2019 15:11 |
|
TooMuchAbstraction posted:I was thinking something similar, except have a character that you can occasionally find in the bushes, practicing their birdcalls. Just rip all the best parts of their designer for yourself. That's called inspiration!
|
# ? Oct 10, 2019 15:54 |
|
So I just wanted to show off for a sec cos I'm proud of myself but I finally dealt with a feature (it's kind of not a feature) I've wanted to implement for aaaages. I've been calling it Soft-persistence in my notes because I don't know what it really is called, but basically you know how in some games, most notably 2d Zeldas, you can kill everything in a room and then return to it soon after and everything is still dead but bushes and other things have respawned? Also you know how in some rooms you would get a guaranteed drop of a heart or a fairy or something when you smashed a pot but only once unless you reset the game or re-entered the dungeon? I wanted that in Game maker, without using object or room persistence. Objects when they persist will teleport to other rooms when you go to them, useful for the player's object and a few things but not enemies. Room persistence is messy and can only be controlled while you are still in a room, so I could reset the room's status but only when returning to the room, otherwise the room's state just sits in your memory forever so no to that. It also wouldn't let me reset other items so double bad. Inspiration hit yesterday and I went mad in my notebook and planned out a huge system. The game on creating a room (which happens every time you change from one room to another) would reserve 10 spots or so on a global table and then assign the ID of each enemy and other object in the room to it and then every time they died or were used the table would reflect this. And then when you entered a room each object would look up their spot on the table and if they were used before it wouldn't let them spawn completely. Yeah, I spent about 2 hours figuring this out, with colour coded notes for each variable and flag I would use and where, and then loving exhausted myself by the time I went to make it real. Just as well, because it was super complex and wouldnt have worked at all. I realised a little bit later there was no way to get a room to know which part of the table it had reserved for itself previously in another life. Also an object's ID would be different on each iteration of the room. It was almost completely unviable. So here's what I actually did. When a room has no enemies left alive in it, it's ID get's written into an entry in a list. When a room is entered, the game looks at this list and if the map is there a flag trips, preventing monsters from spawning in that room, if it's not on there they all are able to spawn as normal. The list is only 4 entries long so it loops and overwrites itself, removing cleared rooms from the list, allowing monsters to spawn again in them. That includes regular rooms with no monsters so you can reset the list quicker. And it works https://twitter.com/Shoehead_art/status/1182305845121617920 I have to set up a system for object still, because I DO want it to work on an item to item basis. Without hard coding some sort of id for them (which is how I have treasure chests stay closed)
|
# ? Oct 10, 2019 16:22 |
I had the exact same struggle in my own game. Turns out it's a ton easier when you don't use Game Maker, because then I just save a copy of the entire room in memory, and when switching rooms I check if there is a copy of that room in memory and if so use the one in memory, if not make a copy and add the copy to memory. The individual object state problem was also easily solved the same way by replacing the 'fresh' object with the copy in memory with the same ID on room load. No idea how you're gonna do something similar in Game Maker without meticulously adding states for each object to a list. Polio Vax Scene fucked around with this message at 16:36 on Oct 10, 2019 |
|
# ? Oct 10, 2019 16:30 |
|
Polio Vax Scene posted:I had the exact same struggle in my own game. Turns out it's a ton easier when you don't use Game Maker, because then I just save a copy of the entire room in memory, and when switching rooms I check if there is a copy of that room in memory and if so use the one in memory, if not make a copy and add the copy to memory. I had considered something similar but I needed other things to respawn for the player and I figure it would always be easier to stop 4 or 5 monsters from spawning than having possibly 20 pots or bushes respawn from nothing. Plus I was worried about using a heap of memory or having something getting stuck in a persistent room. Game maker definitely didnt make it easier for me though. You'd think you'd be able to say "Hey this one room should stop being persistent" no matter what room you're in just for the sake of ease. I do wish as well there was a separate level of variables for rooms only. You can get around it with the room's creation event to set globals (which I use for map tracking) but I'd love a built in feature
|
# ? Oct 10, 2019 16:43 |
|
KillHour posted:Don't focus on that. Literally any idea you come up with had been done before in some way. Focus on making the game your want to make and making it fun. Unless you quit your job to make this, it's a hobby and you should make what makes you happy. Yeah, it's not so much "they stole my idea" as it is "I was hoping to have a slice of the market to myself". There are certain fronts that I'm inevitably going to come up short on -- stuff like graphics and voice acting -- so the more differentiators I can have to say "yeah but I'm doing something nobody else currently is doing", the easier it is for me to justify to myself what I'm doing. Which is a silly thing in some senses -- it's not like I can churn out a crappy build-your-own-warship game and people will buy it just because there's nothing else with that feature on the market. It's pretty much purely a matter of psychology. As for income, I've been working on this full-time for a few months now; it's basically how I'm coping with coming down from a stressful job. Ultimately I'll almost certainly have to go back to traditional employment, but for the time being I'm treating this as a moonshot. novamute posted:Just rip all the best parts of their designer for yourself. That's called inspiration! Literally already did this with a different game as the source. What I will say though is that Ultimate Admiral's designer seems to be much more constrained, like, your big guns can only go on the centerline even if they'd physically fit elsewhere. That's historically accurate, of course (firing a big gun that's not on the centerline might cause serious damage to the ship), but implies to me that the ship designer isn't so much of a central focus to that game as it is to mine. It's like, uhhh...the difference between Fisher Price People and Legos. The ability to make your own hulls is neat though. I hadn't even considered trying to do that.
|
# ? Oct 10, 2019 16:43 |
|
TooMuchAbstraction posted:I was thinking something similar, except have a character that you can occasionally find in the bushes, practicing their birdcalls. That's a bummer, but odds are your combat is gonna be pretty different than how theirs plays, right? Shoehead posted:Inspiration hit yesterday and I went mad in my notebook and planned out a huge system. The game on creating a room (which happens every time you change from one room to another) would reserve 10 spots or so on a global table and then assign the ID of each enemy and other object in the room to it and then every time they died or were used the table would reflect this. And then when you entered a room each object would look up their spot on the table and if they were used before it wouldn't let them spawn completely. Yeah, nice. That's basically like what skyrim does right? It has base level data but then it can have saves of item states or whatever which override the base campaign data of where things should be originally. Although with skyrim its an unbounded table so your save files get bigger forever I've also been thinking about the same kind of thing. I think I'm going to go even further with it for my game, I've been theorycrafting a system where there's dynamic spawns, and you can place certain baits in order to influence the world spawn table. So if you go into the snowy mountain by default you see lots and lots of bunnies and a few foxes and rare deer. But if you manage to catch a deer and create deer bait, then it'll start spawning several more foxes and also dire wolves. If you want to hunt dire wolves, you have to learn the predator-prey ecosystem in order to get them to spawn in the first place. Something like that. I haven't fully thought it through and it may end up being a hassle or not very fun to engage with so I may not bother. But I'm gonna play with it.
|
# ? Oct 10, 2019 16:52 |
|
al-azad posted:Create a default plane in blender. Create a material for it, open shader editor, and add a tileset as an image texture with "closest" interpolation (this is nearest neighbor). Open UV editor, load the image texture, and set "snap to pixel corner." Drag the edges of the plane's UV (hold ctrl for per-pixel movement) until it aligns with your tileset. You've just made a 3D "tile." I am garbage, but if you can tell me how you got nice looking shadows on sprites i would be eternally grateful :3
|
# ? Oct 10, 2019 17:10 |
|
Zaphod42 posted:That's a bummer, but odds are your combat is gonna be pretty different than how theirs plays, right? One of the things I've been thinking about recently is how to present the hook to the player in the first few levels. Making a level that teaches the controls, fits into the story, and excites the player is really hard! Especially that third part -- it's easy to do tutorials when there's nothing going on. My original plan for the tutorial was to have it be in calm waters with no enemies, the captain just running the crew through some drills with navigational beacons and some target practice buoys. But I worry that that'll bore the player. Doing an in-media-res start where you're in a battle and Actually Doing Things while learning the controls is more exciting, but runs the risk of the player going off the rails because they haven't figured everything out yet. And of course, once I get that figured out, then I need to figure out how to dial up the absurdity just a notch so the player realizes this is very much not historically accurate. This will probably involve the Top Secret ship the player is escorting (the mobile floating dock / factory where the ship designer parts of the game take place), but exactly how, I haven't yet determined. Again, ideally this happens in the first mission so the player can think "wait WTF is going on here" and feels compelled to stick around to see where the story's going. quote:I've also been thinking about the same kind of thing. I think I'm going to go even further with it for my game, I've been theorycrafting a system where there's dynamic spawns, and you can place certain baits in order to influence the world spawn table. So if you go into the snowy mountain by default you see lots and lots of bunnies and a few foxes and rare deer. But if you manage to catch a deer and create deer bait, then it'll start spawning several more foxes and also dire wolves. If you want to hunt dire wolves, you have to learn the predator-prey ecosystem in order to get them to spawn in the first place. This sounds like a cool idea to me; basically you're giving the player a ladder to climb in each zone, so that they can make it progressively more dangerous to get access to more dangerous/lucrative monsters to hunt. The big things I'd want to think about are:
|
# ? Oct 10, 2019 17:11 |
|
TooMuchAbstraction posted:This sounds like a cool idea to me; basically you're giving the player a ladder to climb in each zone, so that they can make it progressively more dangerous to get access to more dangerous/lucrative monsters to hunt. The big things I'd want to think about are: Yeah I've been thinking about these. I have a nice variety of tilemaps so I'm thinking more wide than deep as far as the ladder goes, there'd only be a couple things that would really require it in each area. Also, the way my crafting system works, I can create ingredients that do the same things as other ingredients, but more. So it can be an optional reward. If you choose to hunt a dire wolf, that dire wolf meat will allow you to increase your total HP temporarily, making it easier to survive. But there's nothing saying you have to cook a dire wolf meal to beat the game. You could just have like rabbit stew instead; but you'll be surviving on a couple less hearts. Something like that. As for how to figure it out, yeah, that's part of the issue. A cool way would be having the player observe animals in the wild, maybe if you're far enough they haven't agro'd the player yet, you see them eating each other and you learn. But that requires them to already spawn. It works for something that spawns rarely and you could make common, but not if I want to require you to bait to have it spawn at all. For that, I'd have to drop like a note in the game world, or have an NPC just tell the player. Which works but feels less rewarding or clever. And I was thinking it'd be like an equip slot, like you equip "deer bait" to your bait slot and run around with that modifier active until you replace it. Like you're spraying a scent on yourself. I don't think like tossing a bait on the ground and then hiding in a bush waiting for enemies to come along makes sense for my style of game (zelda like) so probably won't make it very complicated. At any time you could "wipe off" your scent, or spray a new one.
|
# ? Oct 10, 2019 17:23 |
|
Zaphod42 posted:As for how to figure it out, yeah, that's part of the issue. A cool way would be having the player observe animals in the wild, maybe if you're far enough they haven't agro'd the player yet, you see them eating each other and you learn. But that requires them to already spawn. Can you see what potential craftables you can make given a set of ingredients? If so, then seeing that you can make "Deer scent: attracts predators in Ancient Woods" might be enough. It lets the players "discover" it on their own instead of being tutorialized, while also being very easily discoverable. The equip slot approach sounds reasonable to me. I guess you could also do it like Pokemon with lures/repels, but the time-based nature of them always struck me as kind of annoying, so making it a toggle seems like a good streamlining.
|
# ? Oct 10, 2019 17:49 |
|
Zaphod42 posted:So I'm grappling with a similar problem. Right now I'm thinking I may have some humanoid enemies but have them drop no ingredients of any kind whatsoever, simply act as guardians that block you from accessing some rare plants or something. But I may end up avoiding it entirely. The humanoids could also drop non-meat items. Like herbs that can enhance other foods, or limited use cooking tools. Or if they’re a hunting species, meat (or preserved meat?) from other creatures.
|
# ? Oct 10, 2019 18:06 |
|
Reiley posted:We're already making sure our brawler can accommodate it, it's really big news. I read the blurb on their website (or maybe it was a GitHub page) and it wasn't exactly clear to me how it operates -- does it train an "AI" based on how you play the game then have that AI running on the other end until it receives contradictory input or something?
|
# ? Oct 10, 2019 18:23 |
|
Ghetto SuperCzar posted:I am garbage, but if you can tell me how you got nice looking shadows on sprites i would be eternally grateful :3 Unity standard shader lol
|
# ? Oct 10, 2019 18:24 |
|
Your Computer posted:in that example (that looks awesome by the way, if I had a VR setup I would be interested just due to the aesthetics!) it looks like it's just hand-drawn, which was already mentioned, but another technique to get really crisp shadows is by simply building it into the geometry! Man, memories; I remember doing this with Forge when making Marathon levels back in the day.
|
# ? Oct 10, 2019 18:40 |
|
Hammer Bro. posted:I read the blurb on their website (or maybe it was a GitHub page) and it wasn't exactly clear to me how it operates -- does it train an "AI" based on how you play the game then have that AI running on the other end until it receives contradictory input or something? From my understanding it constantly makes save states in the background, which is why your game "must be able to load, save, and execute a single simulation frame without rendering the result of that frame." It guesses what will happen next and if it doesn't guess right it rolls back to the last confirmed save state, which is stored without being rendered. Our game's combat has a rhythm mechanic to it so making sure you can time inputs online is important to us and GGPO becoming free is like the clouds parting and a ray of sunshine reaching down to us from above.
|
# ? Oct 10, 2019 18:47 |
|
al-azad posted:Unity standard shader lol Shut up, is this new? I tried doing a similar style a year ago and i just couldn't get the shadows to work and the official forum people said i needed to write my own shader edit: I still can't figure it out lol Ghetto SuperCzar fucked around with this message at 18:53 on Oct 10, 2019 |
# ? Oct 10, 2019 18:47 |
|
Ghetto SuperCzar posted:Shut up, is this new? I'll upload the project when I get the time. I'm using the latest version of Unity so 2019.8 or something.
|
# ? Oct 10, 2019 19:02 |
|
al-azad posted:I'll upload the project when I get the time. I'm using the latest version of Unity so 2019.8 or something. Thank you kind soul
|
# ? Oct 10, 2019 19:03 |
|
Hammer Bro. posted:I read the blurb on their website (or maybe it was a GitHub page) and it wasn't exactly clear to me how it operates -- does it train an "AI" based on how you play the game then have that AI running on the other end until it receives contradictory input or something? GGPO? Nah nah this has nothing to do with AI. Its entirely just prediction and then resolution of getting prediction wrong to handle latency in mulitplayer situations. It allows for two people to play the game as though both of them were the server, hosting. Like you know how if you play a peer-to-peer mulitplayer game, sometimes you can tell who the host is, and they have a better ping and response time than everybody else? And if they're somewhere weird then everybody else gets massive latency in the game because they're far away? GGPO makes it so that more or less regardless of latency, your game plays smoothly as though you were hosting the match. Everybody is hosting. Its a big peer mesh. And then when latency causes a merge conflict between my hosted state and your hosted state, it walks the game backwards, figures out who should have priority, figures out where the game should be based on that, and then gets you to a new state where you're both moving forward. It does predict game states but it does it in the way Quake used to, I think you just set likely conditions on a base game level, not a per-player level. A character running is likely to keep moving forward, a character standing still is likely to stay there for a bit. Just basic stuff like that. The more important stuff is in the merging. Basically, its just a referee that decides who overrides who if there's a merge conflict between local game states. But pulling that off obviously isn't easy and requires a lot of specific things in a mulitplayer game. Its this: https://en.wikipedia.org/wiki/Client-side_prediction but for p2p. E: Although I suppose you could totally apply machine learning on a per-player basis to make prediction more likely, and thus require fewer merges / rollbacks. That's a pretty cool idea. I just don't think GGPO does anything like that yet. And its potentially unnecessary. Reiley posted:From my understanding it constantly makes save states in the background, which is why your game "must be able to load, save, and execute a single simulation frame without rendering the result of that frame." It guesses what will happen next and if it doesn't guess right it rolls back to the last confirmed save state, which is stored without being rendered. Our game's combat has a rhythm mechanic to it so making sure you can time inputs online is important to us and GGPO becoming free is like the clouds parting and a ray of sunshine reaching down to us from above. Yeah, and then that requirement makes extra sense because when it does a merge, a roll-back, it loads a previous game state and then applies all the players' inputs in a fair order in order to determine who did what in actuality, so that requires you to burn through a few frames real fast calculating where things should be, but you don't need to render them, it would be a waste of time to do so. You're just trying to get back to what is the current frame as quick as possible. These are past frames being re-calculated a second time. Zaphod42 fucked around with this message at 19:43 on Oct 10, 2019 |
# ? Oct 10, 2019 19:33 |
|
TooMuchAbstraction posted:
It's not: That's the HMS Dreadnought. Centerline has advantage that it can fire to both sides, wing turrets might have an easier time firing forward without needing superfiring (raised turrets). See also:cross-deck firing wing turrets for extra fun (and all sorts of engineering complications)
|
# ? Oct 10, 2019 19:41 |
|
This is probably stupid as hell but has anybody ever tried to turn a battleship by firing those guns in different directions at the same time?
|
# ? Oct 10, 2019 19:45 |
|
Me and my big mouth. Thanks for the correction.Zaphod42 posted:This is probably stupid as hell but has anybody ever tried to turn a battleship by firing those guns in different directions at the same time? The amount of kinetic energy released by firing a gun is peanuts compared to the amount required to get a battleship to turn. The USS Iowa displaces 60000 tons of water. People keep asking me if I'm going to make firing all the guns push the ship around, and while I might because that sounds hilarious, from a realism standpoint it's a non-starter. You do get cool shockwave effects when the guns fire, though:
|
# ? Oct 10, 2019 19:50 |
|
Reiley posted:Our game's combat has a rhythm mechanic to it so making sure you can time inputs online is important to us and GGPO becoming free is like the clouds parting and a ray of sunshine reaching down to us from above. Right on. I just wrote my networking stack not that long ago so unless it proves problematic I don't think I'll go down that route, but it's a neat concept. Zaphod42 posted:It allows for two people to play the game as though both of them were the server, hosting. Like you know how if you play a peer-to-peer mulitplayer game, sometimes you can tell who the host is, and they have a better ping and response time than everybody else? It's much less sophisticated but my attempt at addressing that problem was to make each individual player the network master of things they have logical control over. So you'll never experience rubber-banding on your own character, nor any of the ball types if you were the last person to interact with them (they change ownership based on activity), though the other players might bounce a bit and if you thought you hit them but they didn't think they got hit by you then they shan't be hit. Still sounds like a better idea than that other networking thing which just gave Godot a bunch of money but I hope they don't abandon their own abstraction for.
|
# ? Oct 10, 2019 19:53 |
|
|
# ? Jun 5, 2024 05:29 |
|
Yeah, I figured. Maybe with wooden ships, but then the guns are different sizes and mounted differently anyways
|
# ? Oct 10, 2019 19:53 |