A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Works In Progress' started by newjerseyrunner, May 18, 2018.
Nice progress past month. Keep up.
Sorry no more comments at this time.
Hey thanks, freelancing has been slow at the end of the year so I had plenty of time to work on it. I hope I can keep up a good pace with the new year. I have an ever decreasing list of things to do in order to finish up the demo, I should be able to knock them all out by mid-February, then I'll release a demo and monitor feedback while I start pumping out levels and finish up the second half of the enemies, which are largely already done.
I’m considering adding more theatrics to my demo’s final boss fight. I was unhappy using the same boss music for the last fight so I turned the music off and played it over and over again and hated how everything worked. Some were good fits but sounded just plain generic. Then for some reason Mark Brown came into my head with something he said during his analysis of DOOM, which is the type of pacing that I’m going for. He described the combat as sort of a dance, where you circle your partner and time your bullets. That made me consider dance music instead of the surreal guitar and metal I’d been using. Again Mark Browns analysis of super Mario came to mind, how Nintendo made the underwater levels use the beat of a waltz. I threw on waltz of the flowers and it all became clear. It’s so amazing how well it fits and nobody else has a WALTZ as their boss music.
So I went to my keyboard. Damn, this isn’t working, nothing sounds right. Screw it, I’m better with an electric guitar anyway. F*** this isn’t working either, nothing sounds epic enough. Maybe I need to do the percussion first? Back to the keyboard. Grrr it doesn’t sound right and I don’t know how to play drums for real. Damn it’s almost if I wish the drums made explosion sounds.
...wait a minute. I have a lot of explosion sounds, can I compose a track with that? How? Brain starts braining.
Do it in engine!
If a barrel blows up, it damages a barrel next to it, which of course blows it up. But there is a .25 second delay... that’s a quarter beat. Shotguns have a half beat between shots. Bullets make high pitch pings when the bounce off a wall and a dull thud when impacting, and I can delay these events by moving walls away from fixed shooters. Oh this is going to be fun. I’m essentially making a Mario maker music level.
Oh yeah, that is definitly an improvement!
As for which scenes gives me more trouble, Id say any scene with brighter lighting, it washes out the colors a bit and seems to make some edges less defined. See "Mitten finds a chicken" for a good example.
I checked the latess video you posted, looks good but that multilevel gameplay and camera angle is still buzzing my brain. Since it may just be me I think you should try to do some play tests with friends to find out. But dont skip on this, from all the guides I read, this is the kind of thing that could kill your fan base. (IF it turns out to not only be me)
I still think that adding textures near the edges of walls would help. It all depends on what you are trying to acheive but more texture diversity usally does wonders. The idea is to make it look more organic. If you are not targetting mobile, I wouldnt worry about texture atlases with that level of details.
Regarding performance, the game doesnt seem performance hungry, did you check all your code with the profiler? What kind of fps are you getting?
Oh and last but not least, that camera (fixed dead center on the player) really makes your player look stiff. I suggest adding a little dead zone and having it smoothly catch up to the player when moving out of the dead zone.
Cinemachine has a very good camera for that (and its FREEE!!!!!) if you try it load up the "Free look" cam. With so many settings cinemachine can be intimidating but it opens up so many doors, especially for cinematics.
EDIT: Just rechecked the video, I realized that your cam is allready setup how I described. Mmm... Not sure how I missed it My impression is that the player seems a little stiff, maybe its the arms?
EDIT 2: Oh ok, its the upper part of your character, it doesnt seem animated which gives it that look. If you dont want to mess around with upper body animation you could figure out a way to make those hair move. I suggest reading about secondary motion, it's a nice trick.
Keep us updated! and as usual feel free to file all of this under senile
Hey thanks for the tips. I’ll add a little more animation to the upper body. It’s all IK calculations so it’s quite easy to just add another cycle or something. Maybe I’ll make his arms and head bob a little bit with his feet.
The camera has a small dead zone, but perhaps I c an make it a little bigger. It’s hard to define exactly what the camera is doing at all times because they’re a ton of AI helping it navigate around the world geometry.
I’m capping the frame rate at 30, but it usually can handle between 45 and 60 on my MacBook. The reason for the cap is because some of the jumps are very precise in the hardest levels and I showed an exponentially increasing amount of variability in jump performance as framerate increased much beyond that. It has to do with the quantized nature of time in video games, it makes derivatives blocky and have high degrees of error.
I’ll definately consider more textures in an additional round of polishing.
I’ve been working on an alternative control scheme for controllers. Controlling the cursor like a pseudo mouse just isn’t intuitive so I’m trying different ways of doing a radial aiming system.
I’ve made the decision that aim going to demo a new game. This serves a purpose: I have a rudimentary networking system for a Mittens, but it’s out of date with the rest of the code and cobbled together anyway.
I’m going to whip up a quick first person shooter and use that to build a robust, generic networking system. This will allow me to massively iterate on it without having to worry about deep integration with all of the preexisting functionality, I can focus exclusively on the networking. The FPS will be thrown away at the end, but serve as a basis for my second game
I don’t want to fubar the rest of the code because it’s too complicated to integrate and I think having something that almost exclusively networking will make debugging so much easier.
I thought some people might be curious to what my external sandbox actually looks like. I just needed something with movement, shooting, and throwing grenades, so I tried to emulate the feel of Halo, down to the rate of fire of the pistol, to the exact FOV. I thought about whipping up a quick Halo level, but was inspired by MC Escher's "Relativity." It's a work that I've always wished I could explore, so I implemented some quick and dirty wall running.
It's actually a lot of fun to figure out how to get around to kill everything, I've always loved games like Mario Galaxy and Mario Kart 8 where you had to work with gravity to get around. Running around here kinda feels like one of the Zelda Divine Beasts. My second game is in this demo somewhere, but I'll figure out exactly what it'll be once Mittens' Adventure is already out the door.
Networking is partially built, I'me working on generalizing it more so that I can just plop it into Mittens.
This is like completely different game
I like concept of walking on walls
Only superficially, I’m terms of RPCs and syncing, it’s exactly the same. I like it too, I’m definately going to keep this little project around for when I’m done.
Haven’t had a ton of time. I added camera shake and set up the network lobby. I think in the next week I’ll have the entire menu system set up and ready for demo. I just need to add a way to log in and out remotely without screwing with the session.
I also moved “rebuild Mittens body” to before the demo release rather than later. It’ll give it a better sense of polish as well as allow me to animate it slightly more.
The last thing is finishing the scoring and spawning for the multiple versions of Yarnball. I also noticed some ways to get outside of the map fairly easily so I need to add some cliffs or something (I hate invisible barriers, if I have the skill to rocket jump outside of a map, I should be allowed to, like Halo CE.)
I wrote a shader today. Added some really sweet volumetric lights. Certain lights in dusty areas now have a volumetric system, and all of the guns' flashlights. It's very subtle, but looks really good.
Check out a test of my volumetric lighting system. It's totally smoke and mirrors, but I think the effect is really nice. I because it's all fake, it's super efficient, so I was able to add lots of these subtle volumes all over the place.
I also made all of the outdoor areas have warmer shadows by setting a blue light to go in the opposite direction as the sun. It's a technique I use when painting, and I like how it works in 3D.
I've had some commissions, so work on Mittens has been a little slow so far this month. Tonight I worked on registering and deregistering controllers and players, getting ready to fit in the networked joining and leaving lobbies.
I'm still alive, just been busy so I've had little time to work on the game. I should have more time in a week or so.
I’m still working on networking, it’s a larger task than I had initially planned. I’m having difficulty making sure things like weapons go off in sync so I need to actually have a seperate random number generator for any components that are networked so that I can seed them and the bullet trajectories will be consistent without having to actually sync them.
I know a bunch of people have been watching my thread and I feel like I need to explain my absence. I was trying so hard to get a demonrrady by the end of the year because I knew that’s when I’d be starting a new full time job and wouldn’t have the time to put in for big projects like networking code. For that reason, I’ve reduced the scope of my game.
Networking is removed. The code is still there but because it takes so much time to debug network code, I’ll go without it. If it gets popular, I’ll add it and it’s not as necessary as it was originall since I figured out splitscreen.
With the smaller expected party size, I can’t use campaign maps for multiplayer. So I’m creating a few small specialized map for multiplayer.
I’m considering it he sandbox done (I actually have about a dozen secret enemies and systems that i never posted on here) I just didn’t have levels fully built for them yet. I can do a level in one day, so I plan on slapwing adding levels one or two per week until I’m done.
Then I’ll take some time off of work and polish it properly.
Hi its been a while, been busy coding.
Glad to see things moving along. That rock texture in your FPS video really comes out great and the lighting really brings the scene together in that last video!
Speaking of which, in that last video the camera being so high, the walls end up taking lots of screen space. Have you tried adjusting the camera's FOV just to see what it does? Not sure its going to do anything good but just in case.
Im guessing there's stuff going on up a bove in parts of your levels and thats why you want the camera so high. In that case a system that zooms the fov out when there's stuff to see or zoom in when its just plain walls may be a good addition. A simple way to do this would be using trigger collders to signal the camera when to zoom in the fov (or out depending on which is less work) and on trigger exit you restore the default FOV.
It may be possible to automate this using (to many) raycasts or clever use of the camera's depth texture but I think it would take a while to develop and not be as reliable as colliders.
Keep it up man!
I added a much more levels whoch were already populated with enemies and doing the art on them four or five at a time.
In response to tcz8 (I saw your post a while ago and meant to come back and respond but I guess I forgot.)
The walls are high there because they’re just hallways. Most of the levels are built more like arenas and high walls tend to mark boundaries. The reason for this is because Mittens can jump off of walls so can get a lot of height going back and forth. Some places I angle the ceiling to prevent climbing out of the map and sometimes I just make it very high with a mechanical ceiling (you enter a trigger zone where wall jumps stop working.). There are many multilevel maps though and sometimes there is stuff hidden up high. I greatly encourage players to try creative ways to get out of the map. The area with the high walls is actually way above the normal path through the map.
Fov and camera height is determined by a bunch of factors. The camera will dip under bridges and things (it has raycasting AI to keep the player in view as much as possible and may even swing to the side slightly.). It also increases in heigh when you are in a vehicle. Fov is determine by the weapon type: the sword has a low fov to have greater focus on what’s immediatelt around you where the sniper rifle’s fov lets you see halfway across some of the maps. Regular guns are in between.
I see you allready gave some serious thought to all that hehe. About what you said: " I greatly encourage players to try creative ways to get out of the map" I must admit I love that kind of gameplay. I allways try to break stuff and go places. This is getting more and more interesting!
I've been working on later levels, so I can't post any videos or anything. I'm making sure that the end of the game is not spoiled. It's a big mystery what's underneath the ancient dome. It's expected to be full of advanced technologies like the artifacts that have been found. Maybe Mittens will leak a picture of some of the wondrous things on the other side? Oh dear, something is seriously wrong down under there.
I thought people might be interested in how the game actually works. Check out this screenshot of one of the more complex levels.
The Level Info object to the right is responsible for activating campaign or multiplayer specific game objects when the level is loaded. When you load in on normal difficulty on the campaign, it'll activate everything in the list for that setup. The levels are fairly small, but they are very densely packed (something like 300 enemies) and the AI Is expensive, so not all enemies get dropped in at load time. This particular map has 9 parts with trigger zones that activate them one by one. This is a nice way that I can also fill in parts of the map behind you, to make it seem like enemies are flanking you. Most maps only have three or four triggers but this one is meant for you to feel like you are being swarmed.
That's a nice approach. It's always interesting to see how people tackle thing like the state of the entire game level.
You can find so many tutorials and examples of individual components and triggers but nothing to really ties everything together.
I find It so much fun designing levels and adding events at different locations - feels like you're really building a story when you get to that point.
Good on you for sticking to this project for so long, keep it up!
Thanks, I’m also one of those people. As a speedrun we, I’m always trying to figure out how my favorite games work and how to cheat them. Another interesting note from the screenshot is the snippet microphone. That’s how I manage to blend audio from multiple players at the same time.
Today I did some work making a level that’s got an organic component more dynamic by adding some animated objects that make it look like the geometry is breathing and flexing.
I figured out a way to make some of the walls look like they're breathing by manipulating the texture in real time. It gives it a really nice organic feel.
I spent a few hours today finishing up the death sequence for one of the later enemies in the game. When damaged, they self destruct in a cloud of smoke and liquid, which looks and sounds sweet. It's actually kind of gross, I used very wet sound effects for the explosion, but it's designed to be a little unsettling.
I doubled the system as a secondary gibbing system. My characters are all made of lots of components like old n64 games, not a single mesh and if they're killed hard enough, they'll explode and their pieces will go flying. I've also now made it that if you're killed with even more overkill, the enemy will simply vaporize in a cloud of whatever their blood color is. It looks really cool.
To self: idiot! You moaned and complained that you couldn’t record demo files like old games because the frame rate was variable and some variables were tied to the frame rate so would act differently on slower computers and desync. Duh, record the frame rate too. It’s four bytes per frame, like a millionth the size of a video frame. You should have thought of that like a year ago so you could create blackbox tests that should repeat themselves as I add things. It’s like four classes and a hundred lines of code and could knock it out tomorrow afternoon. Moron!
This also allows me the problem of a level being too hard for a player and to save frustration, I’d want to have a way for the player to skip it without feeling like they’re being babied. Instead of just skipping the level, you can just autorun the level and even turn off the demo in the middle, which allows you to skip a part that was hard that you’ve already beaten and don’t want to bang up against a few times again but then still have tension because if you fail now, you have to replay the demo.
Oh and I’m also going to double by new vaporization tech as a way for the flamethrower to actually turn characters into ash, fire, and smoke.
By Demo files do you mean like a replay system? Do you save the objects every single frame? Would it make more sense to save in fixed update? That way you'd have a consistent save rate. I suppose you'd get a less smooth playback, unless you're lerping the positions between the saved frames.
I might be completely wrong here, just spitballing I've never experimented with replays.
I have a frame rate cap at thirty, even for more powerful systems. It gives me plenty of speed for more expensive effects and have has one of those really nice “old school” effects that you won’t actually be able to put your finger on.
I’m not recording anything about any objects. For every frame I will record Time.deltaTime and either a special nochange value or a state of the mouse/keyboard/controllers.
The deltaTime records end up being 7.2KB per minute, about 10kb per minute including inputs. I can load ten minutes of gameplay from a file smaller than the average 128x128 texture and play it like a movie in the background.
Lots of old games did this: DOOM did it which allowed people to share their runs with each other in days when sharing videos was impossible, it just recorded the input. I think the demonstration of Mario running in the background of the SMW menu is also just sending the engine a series of inputs.
The key is determinism. The game has to do exactly the same thing given exactly the same conditions. The RNG seed is also saved and set so even random events replay exactly.
@newjerseyrunner Oh wow I never thought of doing it that way. Is there any possibility it could go out of sync? for example you create a demo file and then open the game in a new version where the level has a wall where there was none before, your recorded inputs will try to move through the wall but can't.
I suppose that would be an issue with most replay systems though... I think even fortnite replays don't work if they're too old.
Thanks for the detailed response! I could learn a lot from you!
I don't think it can go out of sync since all of the variable are recorded and the frame counter is the same system that does the playback. It's not like running a TAS from outside. Yeah, if the level changes, the recording will have to be redone, but I plan mostly to use this on levels that are already complete just to make sure that existing features don't break.
Tonight I textured part of the forest level. I’m trying to make each atlas have repeated textures as well as unique ones. Texturing the forest floor was fun, lots of piles of leaves and thick brush with worn paths of bare rock. I’m still working on how to take hyper real textures and making them more cartoony to fit the art style. In this level you have to activate switches to lower two dams. When you lower then, water flows to the next so there are lots of dynamic elements.