Bad Things Happen in Space: Panic Build

So it's done. I completed Rami's challenge... only 13 hours late. I don't really know what the conditions were for him to play my game or what I'd get or if anything would happen at all if I completed it on time. I suppose that the main idea behind the challenge was to get me to build a prototype at all - and it worked!

Here's the link: https://docs.google.com/file/d/0B209xEE7EEixNDNERDNlMlhmbU0/edit?usp=sharing

I don't know what the bandwidth limits are like on google drive (cursory search indicates within the range of 600 mb/day), but if the link doesn't work, try again later. Or tell me, and if it gets to be too much of a problem, I'll host it somewhere else.

I'll copy and paste the shitty instructions I wrote:

controls:
wasd to move
shift to sprint
left ctrl to crouch
space to jump (though you can't jump very high without hitting your head)
e to interact
q to drop an item if you're holding one
each tool has two modes of usage: 
wrench-welder: left click to hit fractured debris back into place, right click to weld the seams 
entropy capacitor: right click to float/attract cubes, left click to shoot them 
megatongs: right click to grapple fuelium rod, left click hold to charge forcelight, left click release to launch fuelium rod.
Tips: Press start server to start playing.Once you've figured out the ship, the helm is where you can access a few different scenarios. 
Performance is really shitty, so you'll probably need a really good computer to get decent frame rates. 
The entropy capacitor (cube sphere gun thing) puts out fires if you shoot cubes at fires. 
You can open up specific doors from the map in the security room. 
That weird glowing chamber thing in the life support room will heal you if you step into it. 
the weapons room has been temporarily re-purposed for oxygen canister storage. 
The megatongs are used by right clicking on a fuelium rod and then holding down left click (while still holding right click) until your light glows big to shoot out the fuelium rod (probably into the big swirling reactor thing...) 
There are 4 distinct and bad scenarios to try.


Also some minor news: I have been asked to give a talk about echobox and the Rift at some unannounced conference thing in november. The Rift integration was actually one of the easiest parts of echobox, but that's not saying much.

The Ultracrunch

Apparently I have the tendency to ultracrunch before deadlines. For instance, not sleeping or eating for the three days prior to the deadline. The same thing happened when I was working on echobox (and to a lesser extent with Blood too) right before it was due. I have a feeling that this is unsustainable and probably extremely unhealthy. I felt like I was constantly about to pass out or die. Productivity goes way down too. Unfortunately, if there isn't a deadline, I have a tendency to focus on infrastructure and technology rather than actual gameplay mechanics. I fall into the trap of "making it easier to make a game" rather than actually making a game. I should find some way to impose actual real deadlines and react to them in a way that is less torturous- because ultracrunching is ridiculously stressful.

Team work(!??!)

Yeah! Bad Things may be an anticooperative game, but that doesn't mean that making Bad Things has to be. I enlisted the expert (zero previous experience) modeling skills of a friend (gosia) to make some of the art in the Panic Build and also I am teaming up with some super sweet (no joke this time) game design dude (joe) to help me hammer out the mechanics and concepts. Like balancing realism vs rule of cool vs fun. Specifically, Joe really helped me narrow down the scope into a viable set of systems and especially helped with clarifying how the oxygen system should work. Eventually (probably never) I'll just implement shipwide navier-stokes math for the oxygen flow and let physics figure it out, but until then, I'll use a volume/concentration based approach.

Good/Bad Things

I'll outline some stuff I am particularly pleased with, and some stuff I think is the weakest:

Good Things:
  • I really really like the look of crisp high resolution text as part of the environment. It makes it really seem like a very cohesive experience.
  • Hitting fracture debris with the wrench is super satisfying.
  • Shooting entropy cubes at fire looks really cool. Actually, maybe I like everything about the entropy capacitor.
  • Managing oxygen canisters really hammers in that sense of being-alone-in-space. That feeling of don't fuck this up or you'll die.
  • Actually getting the area behind the fracture sites to look like outer space (probably the most novel technical trick in the build).
  • The door control map actually works!
  •  damn, I love floating cubes.
Bad Things:
  • Multiplayer is broken. There are some panic hacks that are super-not-multiplayer-implementable. And also the physics. Physics based stuff in multiplayer games tend to not work out very well. We'll see.
  • Welding fracture pieces together is hard, there's not a lot of feedback to know what you can weld, or how much you need to weld, or when welding is done.
  • Picking up fuelium rods with the megatongs is too floaty, it needs to be more gravity-gun like. This isn't hard to implement, but I didn't want to spend too much time on getting it perfect for the panic build. Similarly, with shooting fuelium rods into the reactor it is hard to predict where the rod will go, and there's not enough feedback when you do get it into the reactor. And most of all, it's just not very fun or mechanically satisfying. 
  • Ship power isn't important enough. Currently some systems shut down if the power is too low, but that's about it. The oxygen system stops pumping, the doors require manual work to open, can't warp, lights go dark (though indirect lighting is still there... thanks lightmaps (I'll probably fix this eventually)) (idea- sensors, door labels should not work either). Eventually you'll die from not having enough oxygen, but that's about the only threat to your life from power loss.
  • Performance is horrible. Most of the frame time is spent "culling". I don't think that's normal, and it might be a bug in the 4.3 beta that I'm using. I get 60 fps in bad areas and 150 fps in staring at a wall, and that's on a Haswell i7 and a gtx780, so performance is going to be mostly unplayable on merely mortal computers. And the occlusion culling system is broken too, so that doesn't particularly help. Also, rendering the scene 3 times per frame (this can probably be fixed, eventually). Oops.
  • Difficulty is super high. Especially considering welding fracture pieces works poorly in the first place, you don't have much room for error when repairing a fracture. You have about 5 seconds before you start taking damage from asphyxiation, and then about 20 seconds after that you'll die, if you're at full health. Balancing this is hard, but not fundamentally problematic. Also fire is really dangerous. And there's no way to repair the hull yet. It's a prototype after all.
  • Not enough scenarios or compelling situations. The power goes out, the oxygen vents, fire breaks out, and fractures occur. None of these things occur simultaneously in the current scenarios (and if they did, they would probably kill you), and having conflicting priorities is where real panic comes from.
  • I didn't have enough time to finish the weapons room, or any weapon systems or ship combat or anything like that, so that will come eventually.
Other Things:

  • Graphics programming is amazing. I feel super cool about solving some problem with getting the fracture pattern to show up behind the actual fracture. I render the fracture geometry from a closed position and use a shader that outputs all black, and then use that as a texture for the space behind it.
  • I had to write my own hinge physics system (more vector math) to get the fracture debris to behave like I wanted it to. Unity's collision conditions are kind of a pain to work with, but I think I've worked around it for the most part.
  • Getting the fracture geometry to actually work in at arbitrary rotations was kind of difficult. I did the proof of concept oriented along the major scene axes, and it required some tough vector math (actually just cross products) to un-hardcode those assumptions. 
  • The Unity beta is full of bugs. Again, this is my fault for trying to do game dev on beta builds, but still, man, every time you remove an item with occlusion culling on, the editor crashes. Change a script in play mode, editor crash. Do anything while baking lightmaps and you'll get a blue screen of death (maybe the fault of overclocking). And the new monodevelop can be super slow for some reason.
  • There was a super crisis problem that took two hours to fix. For some reason the editor builds were working fine, but the standalone executables were just showing a blank screen. Turns out it had something to do with the camera order, but I don't even know why that's happening. I put a band-aid on it and it seems to be working now.
So that's about it. Feedback would be super great if you have any.

Comments

  1. The Department shall refer credible allegations of prohibited conduct by any particular person to the appropriate law-enforcement entity. B. The Director might impose a monetary penalty for each violation of this section. For a person determined to have made its premises obtainable for putting sports activities bets using the Internet, the penalty shall not exceed $1,000 per day per particular person who locations a casino.edu.kg sports activities bet. For a person determined to have advertised that its premises could also be} used for such objective, the penalty shall not exceed $10,000 per violation. For any request made pursuant to subdivision 1, the requester shall bear the burden of establishing to the satisfaction of the Director that the relevant betting or different exercise poses a big and unreasonable integrity threat. The Director shall seek input from affected permit holders before making a determination on such request.

    ReplyDelete

Post a Comment

Popular posts from this blog

iamagamer game jam: Blood

How to render to HDR displays on Windows 10

Reverse Engineering Unity Games