Show Posts
|
|
Pages: 1 ... 3 4 [5] 6 7 ... 20
|
|
81
|
Community / DevLogs / Re: Wobbledogs
|
on: September 07, 2017, 05:20:28 PM
|
Looks like you got some great feedback!
Yeah it was really useful! I think it'll be a bit before I'm ready to show publicly again but it was a good experience. I really dig how the eyes of the dogs let you understand their feelings. That makes it super nice when you take a screenshot of a bunch of them. You should definitely make sure that the hilarious part of the game doesn't get lost while you work on it  Thanks, I'm happy with them too! Making sure the game stays goofy is one of my highest priorities, so definitely don't worry about those aspects getting lost. wait waitwait are you gonna make the dogs actually fuck that would be an important addition
lol, well not like, super explicitly or anything but it'd be pretty funny to work the physics into their reproduction ritual somehow. I have a few ideas for how to get it to work but we'll see. So cool!
Thank you! Remember the Voxel doggo?
Also, here's a more AI focused question: If doggo gets dropped out on elevated ground, let's say, on top of a horizontal pipe, will doggo make proper memory of it? If the doggo falls off, will doggo know how get back on top?
Yeah, I doubt voxel boy's coming back at this point but it was fun to try out. As far as AI goes, dogs remember their paths through the world and the places they've been but at the moment they can only really remember how to get to connected areas that they can traverse on their own. If you physically drop them places they couldn't walk to then they wouldn't know how to get back, but they would still remember being there. -- Phew ok I've been kinda all over the place since last update. I've been working on lots of different things because testing out ways of giving players unlocks is useless if there's no variety in what I can give them. So, bigger things I've been working on: Started working on genetic pills that'll mutate the dog who munches them in whatever way I set up. I made a cheat command to spawn items by name so that testing this was easier, and then because of all the Dog Builder work I did for the recent demo, I already had a lot of code in place to modify specific sections of a dog's genetics! Getting these working wasn't too bad though it'll take some more work to make them easy to set up on my end for more complicated mutations, and as usual there were still a few issues to solve along the way. I decided on pills rather than something like injections or special machines or whatever else because I like the slight unpredictability that pills give me. With a pill you have to actually wait for the dog in question to eat it, you can't really just force it on them. Plus, if you're not careful, another dog could end up stealing it away from you. I also spent some time experimenting with an accessories system. The hat can fall off if there's enough force, which seems important, and putting this in gave me a good idea of what work's required for a full-featured version to exist. The answer is "a lot", by the way. Besides just general implementation and system requirements, dynamic head and snout setups make it hard to guarantee that any hat can fit any dog. There's probably no way I'm going to be able to reasonably avoid clipping and wonkiness for a feature like this. If I end up going full steam ahead with accessories, which I'd kinda like to at some point, I think I'll just have to deal with the fact that certain dogs just won't look that great with many of them. To an extent I think that's ok because of this game's tone, but I'd still like to minimize that stuff if possible so I'll probably be thinking about it some more. Then I started working on some new GUI stuff. The original inventory screen I made was nice but super disruptive. The more items I've added, the more it's been an irritation to have to travel to an entirely new screen to switch between them and so I've wanted to add something like this for a while. Still very WIP obviously but you get the idea. Right now I'm imagining this'll completely replace the previous inventory screen, though there are a few other things I'll have to add to it before that can be the case. And finally, I took a break from the above GUI work to throw together some dog barfing. Still lots to polish here but the very base is in. If dogs eat too much they'll barf. Barf is a liquid just like anything else so it spreads and mixes just like anything else. Barfing makes them hungry again and gives them some anxiety. Eventually it seems like it'd probably make sense for dogs to be able to eat their own puke, because dogs are gross and that's something they do, but getting dogs to interact with liquid puddles is a bigger piece of system work so I'll leave that alone for now. I'd also eventually like barfing to give a negative association with the food they'd just been eating. That's it for now! This has been a pretty gif-heavy post so I won't drop any random ones at the end this time.
|
|
|
|
|
82
|
Community / DevLogs / Re: Wobbledogs
|
on: August 27, 2017, 11:10:44 AM
|
enjoying all the dogs itt
I'm envious of the fact that every screenshot is hilarious and good
Thanks! I was worried early on that the game would only look good in motion, but I've been super pleasantly surprised that screenshots sell it pretty well on their own. The physical movement translates really nicely to action shots. I really really want to get my hands on that dog maker  I dunno if it'll be making many more public appearances but at the moment I'm thinking it'll at least be something to include as a cheat feature (and/or possibly some sort of late game unlock) in the final game. -- I don't have any good pictures of my setup, but the first public showing went well! I've been unpacking my thoughts on it over the past few days. There were some basic playtest issues, stuff like bits of non-obvious UI and controls, a few physics bugs, a crash I still need to fix, but this stuff isn't really what I'm interested in discovering at this point. It could just be that I was standing nearby and so people were being polite, but the game did actually feel like it's got a worthwhile base. Takeaways: - Multiple people laughed out loud while playing, and a few took cellphone screenshots of their dogs. This was a relief because it kinda proved to me that the game's goofiness and appeal isn't just limited to the moments I curate. Even within a short, self-driven session people are able to find good moments.
- People really like making large, long dogs. I should do some work to make them more viable. That said, people also really like the completely helpless dogs so I shouldn't erase them completely.
- Pacing is going to be super important. I already knew this but watching people really drove home how huge it's gonna be to give a steady stream of new things to do. If I can do that well, I think I'll be in a very good place.
- The dogs get tangled together a lot, especially the more monstrous ones, and people really like to point out that it looks like they're humping each other. If I can pull off physically animated mating, people would go wild.
- People ascribe motivation and intent to everything the dogs do, even if there is none. I don't know if this will hold up with long-term play, but it's a huge asset in the short term at least. It'll take a lot for AI bugs to legitimately feel like bugs to people. I also should remove all subtlety from my AI designs. Unless I'm adding support for very distinct, readable behaviors, the AI underpinnings will be overshadowed by the physical randomness. A dog's body determines its apparent personality to a huge degree. Also, to a certain extent I could probably get the most immediate mileage by representing complexity with thought bubbles or something similar.
- People are into the visuals. I got a lot of comparisons to Cubivore, Katamari, Spore, and The Sims. I shouldn't be afraid to lean into that stuff a bit more because people are always excited when they get to bring those games up, and the comparison is a great way to ease people into things and start stuff off with good vibes. Even with the Spore comparison, people meant it in terms of what they wanted that game to be or liked about it and so it was still a positive frame of reference.
- There've been points where I'd considered making dogs fairly expendable, but after watching several people almost lose dogs to hunger, it's obvious to me now that I need to make sure it's very hard for dogs to actually die and that there's a lot of telegraphed lead-up before they do, so you're never surprised. There's nothing fun about petting a dog only to have it randomly drop dead while you're doing so.
- Granted, the audience for this event leaned towards people already paying attention to the scene, but I had a decent chunk of people mention that they'd seen gifs of the game before which means my "marketing" is working. That said, an equal number of people mentioned that despite liking the gifs, they had no idea what the game was. Fair because so far I mostly don't either, but I really need to come up with a strong pitch.
- Never use a wireless mouse for a demo in a room with a ton of other games.
So yeah, that's about it for now. Honestly it was more positive than I was expecting. I think for some people the novelty will wear off quick, but I also think there is legitimately an audience for it, assuming I can make the pacing work. It's not there yet, obviously, but I don't think I'm wasting my time. I'm looking forward to digging into the game some more.
|
|
|
|
|
84
|
Community / DevLogs / Re: Wobbledogs
|
on: August 18, 2017, 06:18:48 PM
|
while drawing a wobbledogs thing (i'll post it on twitter later, i'm busy right now), i listened to dogsong medleys to help me get in the mood. and it dawned on me that there should be at least one track consisting of barks. it's too early to think about the soundtrack but im suggesting it anyways. another suggestion: show/race names for dogs like the ones horses have. i want them mostly because of how strange they tend to be. and i think this has been asked alredy, but will we be able to walk dogs?
The bark thing is totally gonna have to depend on what ends up happening with the SFX. Bark songs are cute but if my in-game dogs also bark then it'd be bad to have bg music that made the same sounds! I don't know if you'll be able to walk the dogs or not but I was thinking about implementing some sort of leash-tech at some point to let you restrain dogs to in-game posts or something. I'll have to give it more thought! -- Been a bit so I figured now's a good time for an update. A lot of my work since the last update has been on prototype stuff. I've been desperately trying to figure out a good core interaction loop for this project (a recurring theme) and so I was trying out some stuff. I kept running into the same problem, that it's very hard to create a meaningful gameplay loop that "does it all". After talking with a friend I kinda came to the conclusion that I've been overthinking things for far too long. I've been trying to make this a game for "everyone". It's a rare game that can do that and I'm at an even larger disadvantage than usual in that I have a few aspects of this project that are completely immovable at this point. I still have big plans for this game--I do mean for it to be more than just a surface level pet game--but I need to be more OK with defining an audience for myself. With that said, I'm planning a renewed focus on the customization and simulation aspects of the experience and I won't be trying to shoehorn in entirely new outside systems at this point. I have what I think will be a good plan to drip-feed unlocks and new content (more on that another time), and my hope is that that minimal progression will be enough to keep people interested. After all, the dogs are really the stars here and I don't want to lose sight of that. I know this is all pretty vague at the moment but hopefully it'll make more sense later. I still plan for this game to be rich with stuff to do and discover, but ultimately I'm no longer going to try as hard to cater to the type of player who isn't gonna base-level just enjoy playing with and watching the dogs themselves. All that said, I've spent most of my time recently working on something unrelated to everything I just talked about!
The game co-working space I'm a part of in LA (Glitch City) is hosting a fundraising event this coming Wednesday where among other things we'll be showing off our projects. It's pretty low-pressure but I figured it'd be a good opportunity to get some hands on this thing so I wanted to put together something solid to let people play around with. Since it's not really an experience at this point I decided to just expose all my customization stuff and let people go wild with those tools. Super nervous about this because it'll be the first time I've ever really shown this thing off. At the very least, this is gonna be a killer debug tool for me once I get back into dog genetic content, but I also imagine I'll let you cheat this thing up in some form during the final release, because it's pretty fun to play with. I have all the sliders being created dynamically based on the master dog genetic definition, so they should just update as I add more or change things around later. It was an interesting problem to try and set this up, however. The basics weren't too bad. I already convert genetic values to floats internally for most things, and because of a decision I made early on they're mostly meant to represent values between 0 and 1 (percentages of a modification), so converting them to slider values was mostly straightforward after working out a few kinks. The reverse direction was a little more complicated but still not bad. I essentially round the slider's value to the nearest available permutation for a binary string of the desired length. In the case the resultant string is too short, I just tack on zeros to the front of it to make up the difference. float range = maxVal - minVal; float permutations = GetNumBinaryPermutations(desiredGeneLength);
float increaseVal = range / permutations; int valuePermutation = Mathf.RoundToInt(sliderVal/ increaseVal);
string finalSequence = GetBinaryStringFromInt(valuePermutation);
OF COURSE, it's not quite that simple. This works for most genes but not all. Some genes are too long for me to fit their permutation num in a float, for example. For those genes I cheat. I split those up into usable chunks and increment each chunk uniformly as the slider increases. Not very accurate but accurate enough for what they're being used for at the moment. Another problem is that some genes are used in a "looped" way. These are genes that I iterate over and can infinitely grab sections from. There's no meaningful way to "increment" those genes because they aren't used all at once to generate a raw value. For these I check the incremental length, figure out which "section" the slider falls inside of, and increment only that section as the slider moves. This is still not ideal because some of these values (specifically for patterns) loop back on themselves as they're evaluated, but again, it does an acceptable job for now. Anyways, working on all this stuff has gotten me playing with dog variation a bunch. It's particularly fun to just mutate a dog and see where it ends up. I also like testing the limits of my dog locomotion. Not everything works but I was a little surprised this guy was able to walk. And of course the addition of the puppy button meant that I played around with these babies some more. Anyways, that's about it for now. I'll leave you with a screenshot story I took.
|
|
|
|
|
85
|
Community / DevLogs / Re: Wobbledogs
|
on: August 08, 2017, 03:10:21 PM
|
As I mentioned on Youtube; what's happening with the dog in the back at 3:20? It's going full  Haha, I was hoping people would notice that. It's because it's standing partially inside the exit to a vacuum pipe. Every time its face gets inside it gets blown back out again but with not quite enough force to push the dog completely out of the way.
|
|
|
|
|
86
|
Community / DevLogs / Re: Wobbledogs
|
on: August 08, 2017, 02:24:17 PM
|
Made a new devlog vid (the last one was about a year ago, haha). Nothing super new if you've been reading this thread but you do at least get some extended video of the current build!
|
|
|
|
|
87
|
Community / DevLogs / Re: Wobbledogs
|
on: August 01, 2017, 09:24:56 AM
|
Don't care if 8 legs spider doge, still totes adorbs.
Yeah I have a real soft spot for the wilder dogmorphs. Hope to get some truly bizarre variation possibilities in once I'm full steam ahead with content creation. What ProgramGamer said Also, your Sims heritage is starting to leak through  Haha yeah, I know. I'm trying to be super conscious of the similarities and ultimately this game is gonna be very very different but it's hard not to fall back to inspiration from a project I spent 3 years working on. It's super funny to me how many of the decisions made on that game that I never fully understood or really thought about make perfect sense to me now that I'm trying to solve similar problems. I figure it's best to get the inspiration out of my system upfront in the first pass of this stuff and then refine things towards what'll work the best for this project as I go. There are already a few aspects of this HUD setup that I know I'll end up changing but it's super helpful to get a functional base in as quick as I can.
|
|
|
|
|
88
|
Community / DevLogs / Re: Wobbledogs
|
on: July 31, 2017, 05:07:26 PM
|
very cutie dogs!
Thank you! you should make it either a hidden easter egg or a random chance that a dog gets the original face instead of the current one  I second this i third this also, very happy to see petting technology has finally been implemented. i can't believe i didn't think about it before. howThe best I can do for now is to let everyone know that I plan to have a bunch of different types of heads in the final game once I get heavy into content creation. I'm not gonna promise specifics at this point but I am WELL aware of how much ppl are into the original heads, haha. --- I've been hard at work and have landed back in the UI zone for a bit. I still dread UI work for the most part but I think I'm getting better at it so that's cool at least. Still working on the prototype stuff but it's become one of those things where I've realized I need to shore up a lot of other systems in order to really test it out. The good news is that most of the UI work I'm doing is stuff that I already knew I was going to have to do at some point regardless. My main focus has been on getting dog information surfaced to the user. While part of me likes the idea of having extremely limited UI and forcing players to pay close attention to their dogs to figure out what their needs are, there are a lot of reasons why that's not practical. For now I'd rather start with too much UI and downsize as I go along if possible. I'm pretty sure I'll never end up removing major bits of UI, but I'll probably at least ship my current hotkey setup so people can hide the GUI if they don't wanna see it. The big things I need to show the player are the emotions and needs of their dogs. It really can't be a surprise when your dog dies of hunger, that's extremely unfair. At first I hoped I could get by with just the bare minimum by surfacing each dog's current emotion. This is funny but it's also very limiting. This information is 1 dimensional. It doesn't give you details just broad strokes and honestly it's kind of redundant since dogs already get particle effects that represent their major emotions. So I moved on from this and dived straight into a major HUD addition which got me here. I'm sure this won't be final (I'm already aware that the icons are not obvious enough) but I'm super pleased with it so far. The camera icon in the lower left corner lets you snap the camera to the selected dog, names and needs are displayed prominently, and each canine in your crew gets its own little thumbnail on the bar you can click to switch between them. After this screenshot was taken I also updated the tinier portraits so they each show little icons representing their associated dog's current emotion so you can evaluate things at a glance. And of course, dogs now have their names surfaced above them, which I really love. Originally I was changing portrait color based on how intense a dog's emotional needs were but that felt a little awkward. Not all emotions are things you can "solve" for yourself. While it's important for you to be able to know how your dogs are feeling, a dog being super tired isn't necessarily always something that requires your attention. To that end I might replace the bottom two bars (fear and anger) with descriptors. I'm not sure yet. This view has already been worthwhile. Having all this in-game rather than just in a debug view has already made testing much easier, and it's helped me make some pretty major balance tweaks to emotions. There's a lot of polish potential with this view but I'm not going to spend much time on that until I'm more confident that all the individual elements are close to final. I've also implemented a super WIP shop (that third icon on the right). It just re-uses the inventory GUI for now so there's no reason to show it off but it does its job for now and is gonna be very important for letting me get in a little feedback loop (make money, spend money). The last big thing for now is that at this point I've replaced almost all of my in-game text with Text Mesh Pro (a little more work than I thought... I have a lot of text in this game already). Way way nicer to look at. And of course, some final dog gifs. This guy is the best walker I've literally ever seen in this game. The peak of dog evolution... And then at the opposite end of that spectrum...
|
|
|
|
|
89
|
Community / DevLogs / Re: Wobbledogs
|
on: July 20, 2017, 06:18:22 PM
|
Will there be belly rubs?
Squeezed in a little work on context sensitive petting at the end of the day today! Eventually I think I wanna try giving dogs individual preferences for where they like being petted but for now it's just global. I don't know when I'll tackle it but I'm very excited to get a custom cursor in place for this. I think it's really gonna go the extra mile towards selling this interaction. Looks neat! Will these dogs receive some customization like color changing, clothes etc.?
Definitely! I already have a lot of variation in what dogs you can get and I hope to add a ton more before this project's over. Clothes/accessories is definitely something I wanna try and implement as well at some point. -- Other than the above petting update I've been working more on my prototype gameplay stuff. Still not ready to talk in more detail about it but hopefully soon.
|
|
|
|
|
90
|
Community / DevLogs / Re: Wobbledogs
|
on: July 18, 2017, 04:25:23 PM
|
Back again to bring you this important update. After nearly 1 1/2 years of development, you can finally pet the dogs. For now it's fairly basic--it lowers their stress and anger levels as you pet them and they go through a little statemachine of movements the longer you keep at it. Eventually I think I'd like to do something with preferred body parts, dogs that like/disklike petting to various degrees based off personality, and I should probably add leg twitches in there as well for if you're hitting a sweet spot. I'm undecided so far if I wanna make petting reinforce behaviors the dog was just running or if that should be a separate "good dog" style command. Gotta think on it. I also want to add some legit cursors to this game at some point and I'll have something special for when you're patting a pooch. In other news, I've started prototyping out some legit mechanics. I want to get a little further with it before I talk about it in detail, in case things don't work out (though I'm cautiously optimistic), but here's a preview. I also did some brief work to make dogs feel weightier when falling. Essentially they just double their personal gravity when I detect they're for sure in the air. This makes flinging them around much more satisfying and they feel more in line with other objects physically, without sacrificing any of their ground movements. And then finally, here's me playing catch with some fruit and stacking things on a heavy sleeper. Hope to have more gameplay info soon!
|
|
|
|
|
91
|
Community / DevLogs / Re: Wobbledogs
|
on: July 07, 2017, 05:51:54 PM
|
Not a ton of updates today. I took the 4th off but otherwise I've mostly been fixing bugs and doing some prototyping stuff I don't want to show yet. Main new thing is that I made a decision to get rid of the transparent pen walls. They were causing some weird graphical bugs (particularly with particles) and I actually really like the more contained feeling you get with opaque walls. Plus at this point I'm pretty sold on having lots of wallpaper and flooring options for people to choose from. Anyways, other than that I just have a few gifs to drop off.
|
|
|
|
|
92
|
Community / DevLogs / Re: Wobbledogs
|
on: July 03, 2017, 03:35:39 PM
|
It's like one of those gifs that makes you feel depth perception by gently moving back and forth around a central pivot.
haha yeah that's what I was going for. Pretty pleased with how it came out since I didn't have a script ready and just dragged the camera by hand. Could be a cool screenshot feature! Well, export-to-gif feature Yeah, it'd be super nice to have stuff like this eventually. Mostly depends on how efficient I can get an internal gif exporter to be. What The internal one I'm using to avoid missing moments right now is ridiculously slow, haha. --- Tiny update today. I have a strategy for pathing through pipes. It works for the time being but we'll see how it holds up. I think the underlying idea is sound but I might have to shore up my actual flow for it eventually--it's a little messy right now. Anyways, the first step was to get the navmesh to stop flowing through pipes. Dogs shouldn't think they can navigate through them freely. They're non-deterministic portals. So pipe entrances and exits now have invisible blocking colliders that only affect navmesh generation and LOS raycasting (so dogs don't think they can walk straight at something on the other end). The second step is to do what I already am for every path, use a dog's rough association node model of the world to generate a node path to the object we're trying to interact with. This path has no issues moving through pipes (though it takes direction into account as appropriate), so it leaves me with me with a valid (although not very precise), path. I then go through this generated path and check for pipes. If none exist, I just proceed as normal and generate a navmesh path to the target. If any do exist, however, then I stop at the first one and request a navmesh plan to that pipe's entrance instead. Once that finishes, I tack on an additional routing point to the end of the path that leads dogs directly into the pipe in question. This gets the dog into the first pipe, but there's still one more problem to solve and that's figuring out the appropriate time to re-plan after exiting this pipe. To do that I add a callback to the last segment in the pipe we're trying to enter. The callback triggers as the dog leaves that segment, and that triggers a new coroutine that continuously checks the dog's current association node. Once the dog has a new, valid, node not associated with any pipes, we're allowed to replan to our stored target.  This works pretty well for now, but it's a little hacked together so I'm sure I'll have to revisit it again later. The main other issue with it is that the requested replan gets cleared very liberally to avoid stale data, which means there are lots of cases where the dog can lose its initial action before finishing the entire multi-step path. I'm ok with this for now since if it's anything super important the dog's AI should correctly get it to retry, but it'd be nice to have a little more safety built in there. Anyways, that wraps up this routing refactor! Phew.
|
|
|
|
|
93
|
Community / DevLogs / Re: Wobbledogs
|
on: June 30, 2017, 08:47:50 AM
|
It's like one of those gifs that makes you feel depth perception by gently moving back and forth around a central pivot.
haha yeah that's what I was going for. Pretty pleased with how it came out since I didn't have a script ready and just dragged the camera by hand. I love those leaf particles and cannot get over how nice the trees look. Is there any ambient occlusion happening?
Thanks! I was trying to keep their first pass graphics fairly prototype-y (they're just textureless cones and spheres right now) so I'm happy they look as nice as they do. I have AO turned on in the unity post FX stack and it really makes a difference, especially with objects like these with overlapping geometry. It looks even better without the gif compression.
|
|
|
|
|
94
|
Community / DevLogs / Re: Wobbledogs
|
on: June 29, 2017, 05:44:31 PM
|
Phew, lots of progress, ok let's see. Foliage now disappears after dropping too many leaves. If it's attached to a branch it'll regrow but if it's on the ground it's gone for good. This stops the pen from getting overly cluttered when trees break and it's also a nice visual. I also put fruit into the game. It grows on trees every so often and falls out when its owning foliage goes away, or randomly when a dog shakes the tree at all. Dogs can eat it or toss it around or whatever they wanna do. Eventually I'll want some way to turn fruit into another plant but I'm fine with where it's at for now. I also fully implemented plant save/load, which was a bit time consuming because of the object complexity but it's working fine now. Another reason to be happy I started figuring this stuff out now rather than waiting on persistence work. Since I've been dealing with routing updates I've also fixed a ton of pathing and behavior bugs/weirdness (like targeting fruit that's still in a tree and out of reach or not ending a path early if we come in contact with the target before we expect), so that's just generally feeling much nicer. I also got pathfinding to dynamically update the agent radius to match the dog doing the path request. I was testing that here but there was another bug (again, now fixed) making dogs walk into walls. Bad in context, good as a gif. I also threw motion blur back into the game with the caveat that it turns off temporarily whenever the camera moves. Good compromise I think because it looks nice when dogs are wobbling about but was making me motion sick when I'd rotate the camera around. Plants aren't done but they're in an acceptable place for now so I'm gonna move on from them. Very happy with what they've added to the game and with the larger pathing changes they forced me to make. Finally, I made some changes to dog turning. I was having trouble getting a good gif of this but essentially dogs can now do planted turns using either their front or back legs depending on if they have blocking objects nearby. If there are blocking objects on both sides of their body, they just buck instead, which should eventually move 'em somewhere reasonable. This means they get stuck way less often and they're much better little navigators when in compact spaces! There's still one thing I have to do for the pathing refactor but I don't have a great plan yet. The new system doesn't work with pipes and it's not super straightforward to add support for them because where they take dogs isn't really deterministic. I might just have to store linked rooms and then re-plan paths every time a dog moves between them. Definitely solvable, I just have to figure out the right strategy. Anyways, I'm ending the post with a nice little all-inclusive gif that has dog movement I'm very pleased with, as well as a link to a bonus gif because the source file is on my laptop and I'm too lazy to power that on and re-upload.
|
|
|
|
|
95
|
Community / DevLogs / Re: Wobbledogs
|
on: June 22, 2017, 06:09:43 PM
|
Too adorbs.
Their ability to fall asleep in pretty much any situation is one of my favorite things about them right now. Whenever I get around to personalities, I wanna have some sort of "good sleeper" trait that stops them from being woken up by noise or jostling. I can't believe we are 26 pages into this devlog and nobody thought of sticks before!  lol, I know! You guys are slacking... Sticks change everything.
I love the growing trees, also really great talk ActualDog!
Thanks! --- I'm making some pretty good progress towards solving my object density issues. I've got an, uh, interesting strategy but I'm feeling fairly confident so far. Basically, I'm melding my existing pathfinding and association node system with unity's navmesh system. Until now I've rolled my own pathfinding and navigation system. Dogs drop nodes as they explore their world and they keep track of objects and locations they've witnessed. This means that dogs each have a unique perception of their space and it can often be inaccurate. They might think that an area has food even though all that food has since been moved, or they might not know about a new room you just built because they haven't been near it yet. I think this feature is cool, but it presents some issues. A big one is that pathfinding is a little tricky. Since their internal "navmesh" is dynamically generated based on their POV, there are lots of edge cases and those edge cases multiply like crazy the more dense the stage layout is. This model works well for getting dogs to keep track of what locations and objects they know about but has proven super bad at getting them to smoothly pathfind and route. So, dogs still keep their internal models as before, but now instead of pathfinding using their internal sets of nodes, they pathfind using a central, shared navmesh that's guaranteed to be objective and correct about the state of the world. Dogs still can't interact with objects or locations they don't know about, because they only consider nodes and objects that they have internally mapped and connected to their POV of the space, but once it comes time to actually move to a specific location, a shared navmesh should keep things much more accurate (and also much easier to debug). Once I decided on this model, my next step was to figure out the best way to implement it. Since Unity already has a navmesh and pathfinding system, it seemed like the right call to see if I could hijack that rather than implement my own from the ground up. The first limitation I ran into was that Unity doesn't currently support live navmesh updates, something I absolutely require. However, I found an unreleased version of some navmesh system updates that allows for this( https://github.com/Unity-Technologies/NavMeshComponents), and so far it all seems to be working well and relatively quickly. Since I'm only using the navmesh system to generate a mesh and find a path, it wasn't too wild to get it hooked up to my existing movement system, though there was some refactoring involved. There's been a lot of bug fixing involved in this update now that I'm really stressing my navigation code, but there's one issue in the above gif that's unrelated to my own implementation of things, and that's that the path Unity generates hugs the navmesh corners super tight. This isn't necessarily a problem in general use-cases of this system, but since I'm moving things with inaccurate dog physics, hugging geometry makes it even harder to accurately follow a path. Rounding corners becomes a nightmare. BUT, after thinking about it for a bit I came up with a way to smooth paths away from corners, and so far it seems to be working super well. The basic idea is that I loop through the generated path and look at groups of 3 connected points. I try to move the middle point outwards and as long as the new point is still on the navmesh and has the same closest navmesh edge as the original point, it should theoretically be safe. I don't know if that explanation makes a ton of sense, but hopefully these images demonstrate what I'm doing. The nodes are the new, smoothed, path, and the red lines show how the navpoints were pushed outwards. The solution seems to be holding up so far even with denser geometry like in that last image, and it's doing a great job giving dogs easier paths to follow. They get stuck way less often. This refactor isn't done yet, I still have to figure out a good way of dealing with pipes and there are some bugs I have to fix, but it's already feeling better than what I had before so I'm calling this a success! After this I still need to give dogs some more ways of turning around (there are certain configurations where they basically get stuck forever), but I'm feeling very good about all this.
|
|
|
|
|
96
|
Community / DevLogs / Re: Wobbledogs
|
on: June 20, 2017, 04:54:22 PM
|
Great work as always. I really want there to be dogs that have less smarts, it would remind me of my own dog  I have a design for procedural personalities, I just haven't gotten around to implementing it yet. Hopefully I can make it work! It'd be interesting if they could squeeze a little, changing their scale a bit, to try to pass through places smaller than their bodies! I think it would add to the cartooness of it and is also something that sort of actually happens considering fur and soft tissue and all.
Anyway, looking good!
I love the idea but that's not super simple to put in since ultimately everything here is just using rigidbody physics. There are probably some angles I could explore but I probably won't end up going down that route. Fun to think about though! I'd actually prefer to see the bamboos/trees to bend instead, but simply making the dogs get frustrated and give up is fine too.
I'd like to have bendable plants but I'm gonna have to be fairly careful with that so I don't eat up a ton more of my physics budget. I'm already a little worried that the way I'm doing trees is too expensive if there's a bunch. Might explore some shader jiggle for stalks and smaller plants. Your devlogs are always interesting. And a bit creepy. As for your doubts regarding gameplay features, have you ever played the Creatures series? It has many elements you talked about, like genetic injections and a simple way to teach commands to your creatures. It might have some interesting ideas to recycle, maybe? (For example, I remember you teach a command to a creature by clicking on an item while typying a word. Through repetition, the creature learn to associate the word with the command. Sometimes. They were pretty stupid.) Thank you! I'm definitely aware of Creatures but never actually played it. tbh I've been avoiding learning too much about it so I don't unconsciously copy it, but I'm probably overthinking things and it would maybe be a good idea to look into it and see what I can learn. hello, i read your entire devlog a few days ago and i really like how this game's coming along! and you should take a look at viva piƱata too, wobbledogs reminded me of it because it also has a cute and colorful aesthetic.
Thanks! I've never played it but I've poked around at some reference pictures at points to see what I could learn from its art style. It'd be cool to check it out at some point though. I've never owned an xbox so it's just never really been something I've had an opportunity to play. --- Hmmm so let's see. Decent amount of plant progress. First of all I made it so that when dogs chomp onto trees they shake, when foliage gets shook it drops leaves, and I did a real pass at plant life so that if dogs bite 'em too much they break apart. This also means that the game finally has sticks in it. Classic dog interactable. And then I played around with getting trees to grow procedurally rather than just all at once. Different tree types are defined by different spacing and growth rules and different sets of modular tree parts (I only have 1 for testing right now but the system supports whatever I want). Branches don't grow/expand if there's no space so you can get some fun variations. It's nothing too complex but it's enough to support a decent variety of trees and it's already fun to play with even though the parameters are limited. Lastly, I took a pass at updating pathfinding to use boxcasts instead of raycasts. This has turned out to be a bit of a rabbithole. Not because my solution didn't work, the boxcasts fixed what they needed to, but fixing these bugs sort of exposed a whole mess of other issues that I had never really run into before because the object density was lower. This is basically my issue: How is a dog supposed to interact with this? Which plants are available for biting? Which parts of available plants are actually available for biting, and from which angles? Also, at what point should a plant start blockign line of sight? Does it need to be a certain height for that? A certain thickness? If the dog's standing directly in front of this little grove and doesn't need a specific target, none of this is a huge deal to figure out. If the dog is two pens over and decides it wants to bite a random plant, however, it's super not trivial to figure out which one of these it can bite and where specifically it needs to go to bite it. So... I've got some things to think about. There are lots of ways to solve problems like this but I need to decide which is best for me and which trade-offs I'm willing to live with. All I can say for sure right now is that my current approach to pathfinding and targeting is pushed past its limit now that I'm explore denser groups of objects (which I'd really like to support). Even if my answer to all this is just that I can't support dense groups of objects, I'd like to explore things a bit and take a firm stance so I know my limitations going forward. Hopefully this is something I can figure out soon! Oh, and one more thing. I gave a super quick talk last week on the genetic algorithm and it just got put online. Nothing super new if you've been following this devlog closely, and I simplify things a bit, but it's probably the most concise I've ever been when talking about that stuff before so in case anyone's interested:
I also highly recommend checking out the other talks from that night (they're on the same channel). Some really interesting stuff!
|
|
|
|
|
97
|
Community / DevLogs / Re: Wobbledogs
|
on: June 14, 2017, 06:52:51 PM
|
Not where I wanna be with plants yet but it's getting kinda big so I'm gonna post what I have so far to split things up a bit. Anyways, I'm working on the full life-cycle for trees and I'm making it as generalized as possible so it's easy to add more plants in the future. They start as seeds that take root as soon as they hit the ground. At the moment they can grow on any surface tagged as the stage, so that includes walls and stuff, but in the future it'll probably be floor only. Then, they slowly sprout upwards over time. As they get closer to the height of their final form, they also evenly transition through different phase models I throw into a list, which you'll see in some of the gifs below. At this point the biggest problem I was running into was space. With no spacial awareness and no rigid tile-based placement system, plants were getting a little overcrowded and flipping out a tiny bit. To fix this for the time being I'm doing bounding box checks at each growth update and only allowing things to proceed if the plant has space. This works pretty well for now but I'm probably going to tie this into either eventual plant death from overcrowding or some sort of dwarf plant model hierarchy for plants that have less room. Plants have also pushed the limits of my pathfinding system a bit. Right now dogs have no concept of the size of their bodies. If they can see something they assume they can get to it. This is easy enough to fix I think (I can probably just use body-size boxcasts instead of linecasts for this stuff), but it's pretty funny and kinda dog-like so I'm considering leaving this in for dogs with lower smarts (once I get around to implementing that concept). Anyways, that's about where I am for now. I still need to let dogs bite and kill growing plants and I'd like to also try out fruit growth on the trees for a sort of self sustaining life-cycle (and potential way to make cash), but I'm enjoying the way things are coming along and can see a lot of potential for more types of plants in the future. For the time being, I'm just happy that a little tree grove makes sleeping dogs even cuter than they were previously.
|
|
|
|
|
98
|
Community / DevLogs / Re: Wobbledogs
|
on: June 08, 2017, 06:54:03 PM
|
I read the whole log, i must say i'm amazed, you put a lot of work in this. Genetics and breeding stuff is great.
Ah, thanks! Here's hoping the next 25 pages are just as interesting. --- Not-too-substantial update today but I'm hopping on a plane tomorrow and wanted to get some stuff written before the end of the week. Now that the file system is in place and accessible I'm moving back towards mechanics and gameplay prototyping. The idea right now is to try and get in a few things that really encourage you to micromanage the dogs and do things moment to moment. I have a bunch of ideas of things that I want to try out, but the first thing I'm throwing in is trees. The rough idea is that they'll grow over time and maybe like, do tree stuff like drop fruit. The catch is that if dogs hassle them too much they'll die, especially when they're smaller, so you'll probably wanna keep an eye on them. This might also be a good lead up feature for a real implementation of dog scolding and dog praising since the connection there should be pretty obvious. This is just a super rough pass at them for now. Just some prefab art and they don't have all the functionality I mentioned above yet. For now they just snap to the pen wherever the trunk first touches. And of course I added some basic physics and let the dogs go to town. Some like the trees better than others. I have them breaking apart if bitten too much but there are some other issues I want to solve before showing that off. That said, even in this basic form I'm kinda already into the trees. They don't do much right now but just plopping a few down really helps the pen feel fuller and I'm already pretty much sold on having a variety of stuff like this to personalize your space with, even if it doesn't all do too much (though obviously I prefer that everything has SOME purpose). In other news, I also discovered by way of Many Eggs that my debug visualization for dog brains is super not adequate SO I'll probably be improving that sometime in the near future. The system itself works fine with this number of objects, it's just that my debug view of it is unusable. And one final gif of a pair I liked.
|
|
|
|
|
99
|
Community / DevLogs / Re: Wobbledogs
|
on: June 05, 2017, 05:46:10 PM
|
Goddamit, how did i miss these wonderful doggos, i have to read all 25 pages of devlog, i'm intrigued!
I'm glad you like my dogs! So basically, you don't want the game to be like Goat Simulator: "the player controls a goat aimed at doing as much damage as possible around an open world map, without any other larger goals."
I've never actually played Goat Sim, but yeah, I wanna make sure this has some overarching goals to it. Maybe this can just be a breeder simulation where the goal is to win at Breeder Cups. For this you will need to no only breed a species, but also to train it and love it until it can perform at its top level. The game can have several cups to win, with different minigames.
The game can have several cups to win, with different minigames.
I think a talent show format could work, but the actual competitions need to be random and dysfunctional, i.e. it can't be straightforward races or rhythm-game style button mashing. And it can't have real winners. Instead, you get strange and random awards for seemingly nonsensical categories. It would still be an achievement-hunting style of game, but there aren't clear goals and there's no pressure to grow/train your doggo in some "optimized" way. E.g. A "Fruity Loops" competition where there's a big hamster-wheel with a few fruits on it. You give your doggo a few commands or drag a few things here and there. After say 15 seconds your turn is ended. Out of the three competitor doggos, there would be awards for "Touched bananas more times than any other fruits. Healthy!" "Most rolls on the wheel. Agile!" "Slowest to react to commands. Proudy!" "Shiniest skin among the dogs. Shows your owner cares!" "Purple. My mother always love purple. 10 points from me." Might not be what you look for. Just throwing some ideas out there. Also: Games like Poly Bridge has a video/gif sharing function that seems pretty in line with the game's goofiness. I think many people will just be glad to have a pet simulator game and chill with their doggos with shenanigans and share some weird pictures or videos online. Yeah, these are fun ideas! Also, an internal gif sharing function is something I've thought about before and I really like the idea of having that but gif compression and capture isn't something I know a lot about so no promises. I have an internal gif recorder I'm using in case something cool happens when I'm not recording, but it's extremely slow to save out so it wouldn't be usable in the shipping game. Might look into it more further on down the line! There are a few other issues I'd have to solve too though. For Poly Bridge I'm assuming there isn't really any "editing" they need to support since you're saving gifs of your solution. For a general purpose embedded capture here I'd probably have to support some sort of internal gif editing, or at least come up with a good design to bypass that, and that's not super straightforward either I imagine. Did you do this on purpose?
EVERYTHING I do is on purpose. --- Ok, so, I finally have save/load working with a full UI flow surrounding the file select screen. Phew. Way more work than I expected (as always). Still a few more things it needs (for example, files should probably sort by last played date), and there are some design aspects I want to revisit or improve at some point, but I'm super happy to have this in. Before even starting in on the UI I went through and actually implemented the guts of the save system. This by itself took about a week and I'm very happy I did it now instead of waiting too much longer because I had to refactor a huge amount of the game to make things work. The main issues I ran into were with objects, parts, and other misc things not being uniquely identifiable. As a first pass most of my references to things were stored as full GameObjects so I had to convert things to ID refs in a ton of different systems. Some obvious places like objects, but also stuff like dog pathfinding and association nodes. Save/load also forced me to shore up my flows for dog creation and game initialization, which I really appreciate, and I had to come up with some way of save/loading physics objects. For dogs themselves I'm just storing the room they were inside of and respawning them in the middle of it on load, because they're way too complicated for it to be reasonable to try and preserve their specific behaviors and positions, but for physics objects like food it would be super irritating to spend time putting them in specific locations and stacks only to have them reset the next time you tried to load into the game. The main issue with saving those physics objects is that I don't want them to have any physics freakouts on load, which is unsurprisingly a very easy situation to set up for yourself. I created a serializable class structure for these guys that automatically trolls through their hierarchy and saves off all relevant physics/transform/gameobject data, but the real final piece of the puzzle involves me setting them to be kinematic for a single frame before restoring their rigidbody info. I don't know exactly why it's necessary but I suspect there's something internal that checks a few things on instantiation. In any case, I actually have safe and clean loading for all my physics objects, regardless of placement, which I wasn't sure I'd be able to do. After the core system worked I wanted to actually put in some UI for it. It'll be helpful for testing to have multiple files I can pick from, and I also really wanted to get this in so the game felt a little more "real", if that makes sense. My initial concept for the screen was a take on those gradeschool activity pin boards where everyone writes their name on a construction paper cutout of a shape. The texturing is obviously very different than what I do anywhere else, but I wanted to get a mood across for the concept. Things simplified a LOT as I worked on this and I ended up removing most elements but I'm very happy with where it's at now. Every aspect of this flow is functional, and I've added a few new ease types to my repertoire. Probably the biggest thing I want to change (not now, just at some point down the line) is the scrolling bg. Scrolling bg squares are pretty common so I'd like to either change them to be something more thematic, or come up with some other effect. I did some shader experimentation for a bit today but mostly I just ended up making myself a little sick. There's a much nicer version of this with very subtle pulsing but I was finding that any visible amount of this was enough to disorient me. ANYWAYS... like I said, I'm happy with things for now. As usual, I'll leave you with a classic dog gif. I left the game running for a bit and when I came back to it, two dogs had explored their pen and found the food I put out for them and the third dog had decided to go throw a temper tantrum in the corner.
|
|
|
|
|