Tuesday, January 21, 2014

2D platformer... thing...

Lately I've been putting together a 2D platformer.

I had this idea for a game that revolved around a single item. In this case, a table. I know, it sounds odd. The idea was that you'd find a multitude of uses for a single object, rather than having a whole ton of objects with single functions. It sounded great in my head.

So I started working on it. But, the more I built the prototype, it just wasn't nearly as fun in practice as it sounded in my head. I built out the first function of the table (blocking) and was starting to work on other functions (as a parachute, a springboard, a weapon, etc, etc) only to find that instead of making each of those functions cool, it felt like each of them were really forced. So instead, I made a gun and put that in. At that point, the whole concept was shot(get it?)

I guess that's the beauty of prototyping though. You can flesh out a concept enough to judge it without having to commit fully to developing something.

Either way, I learned a ton about Unity's new 2D tools, a lot of what-not-to-do's (specifically with physics) as well as a lot of better practices. Even with a failed prototype, we succeed if we learn something right?

Honestly, after the first thing I built failed (years ago), I felt pretty crummy. But now, it's a lot easier to focus on all the things I've learned in the process. Even a project that I consider to be an abysmal failure, I still feel really good about the things I've picked up along the way.

I still really like the idea of the character and the "item" having independent movement. It kind of reminds me of smashTV where firing wasn't tied to character position or facing. Sadly, the table just wasn't fun. *shrug*

(And before you ask, NO. I was not going to steal graphics from Castlevania. Alucard just happened to be the most complete spritesheet I could find with a quick google search. It allowed me to play with animations and such)

You can check out the prototype here: 2DGameTest

(wasd/space for movement, ijkl control the table. I know the controls feel awkward, but it was intended for dual joysticks, and it was just a proof of concept prototype, you understand.)

Thursday, August 8, 2013

Slowly, but surely.

Progress!

I'm starting to get a bit nervous about potentially needing art asserts in the future. I feel comfortable handling all the coding/logic/scripting/etc, but when it comes to creating art assets? pfffft. newp.

Over the past few days I've been able to implement the following:

  • Mouse wheel lets you zoom in and out! yay.
  • Ability to switch camera modes. 
    • push the "End" key to toggle between modes. 
      • Mode1 (default): Fixed camera, chases you around. 
        • This mode is intended for use with click to move (default)
      • Mode 2 : full camera control by holding right-click and dragging
        • This mode is intended for use with WASD movement (Not implemented yet)
  • Added a player health bar
    • Very ugly placeholder. -- but works
  • Added an "Action bar"
    • Ability icons (temp, thank you http://opengameart.org)
    • Ability tooltips
      • tooltips are dynamic, they update automatically based on damage/target/range numbers.
    • Clickable ability usage
    • Eventually abilities will be able to be dragged from slot to slot. 
      • Vital to the ability advancement system in the future. 
  • Enemies will auto-acquire targets when they are damaged. 
  • Added enemy spawning. 
  • Made 2 variations of the fireball
    • Variant 1 homes in on target
    • Variant 2 is a "dumb fire" spell and moves in a straight line no matter what.
  • Created an enemy ability control system that defines what abilities enemies use and when. 
    • Allows for customization of spell order, preference, decision making, etc. 
  • Made a flag for abilities to "require viable target"
    • This prevents you from using the fireball spell without a potential target. Before you could cast it, nothing would come out, and you'd still suffer the cooldown. Now, it requires a viable target or won't cast/animate at all. 
As usual, you can check it out below the break.

Saturday, August 3, 2013

Creating Abilities, Testing them out, and adding some feedback.

Well, here we are again.

Lately, I haven't been able to spend nearly as much time in Unity as I'd like. I know, it's mostly my fault... well... Borderlands 2's fault I suppose (have you checked out the Tiny Tina DLC? I loved it!). 

I've still be able to find some time to work on how the ability system is going to play out. 

Last time I gave you a look at the targeting system that I'd built for use by abilities, this time I've put together two simple abilities and added some really basic animations to them. This is mostly just to figure out how all of them pieces work together and to get things to actually work. This is all, of course, very very placeholder prototype style stuff. I am NOT an artist, or an animator... so this is what you get. :P 

With that out of the way, let's look at what we've got here. 
  • You can use the buttons at the bottom to increase/decrease the number of targets these abilities can hit. (make the numbers big, it's way more gratifying).
  • Character is HUGE -- I exaggerated the size of the character so I could see how things move.
  • He should kind of breathe a bit during idle. It's subtle, but it's there. 
  • He carries around a sword now, that can be easily swapped to whatever other weapon we want. 
  • He runs, sort of... Due to how huge he is, he can get stuck going ON TOP of the enemies in the scene. 
  • the 1 key will allow you to do a melee ranged cleave with the sword. 
    • The damage should happen right in the middle of the swing.
  • the 2 key shoots a fireball
    • The fireball should launch when he extends his hands, and do a little "burst" when he launches it, then the same "burst" when it hits. 
Working on this has actually given me some great emergent issues to work out. 
  • The character needs a "dead range" where he decides that he's in melee range and will stop running towards a selected target or point. 
    • (when you mouse up, if you do so on an enemy, he will target/chase the enemy and get all wonky cause he can't get as close as he wants. Versus releasing mouse on the ground where he just defines a point to run towards.)
  • This can also cause for some "quick spinning" of your character, which isn't exactly bad... but compounds the next point. 
  • The camera is a bitch. It can cause pretty significant confusion as to which way you are facing and where your spells/abilities are going to go. 
    • I'm debating adding a "ring" around the feet of the character that helps to display which way you are facing. Similar to a selection reticule on the ground with an arrow or something signifying forward. I think this option will work very well, especially in a game with 5+ people and a buttload of monsters in the scene, but I feel like it's a bit ugly. Maybe if I find an artist that's something I can get help figuring out. 
Anyways.. I feel like it's coming along well. I'm still learning *BOATLOADS* by the day. I'm finding some of the most difficult challenges to be less about unity and the software, but more about keeping myself in check. Every time I learn something new, or really begin to click with some aspect of Unity, I have to fight myself from going back to previous parts and completely reworking them. I've already reworked this character, and the npcs at least 4 times now. In that same vein, every time I learn/click with something I have to stop myself from trying to add in 400 new features/mechanics that just seem to make sense with my new knowledge! 

I suppose there are much worse problems to have than "I've figured out a better way" and "oh, this gives me loads of new ideas!" 

Check it out below the break :

Saturday, July 20, 2013

Targeting System

Boy... Building a targeting system wasn't as cut and dry as I thought it would be.

This is going to be a background system that abilities use to define viable targets for attacking.

  • It allows for selecting of both players and/or enemies (so I can re-purpose it for players, enemies, pvp, whatever)
  • Allows for any number of targets to be selected (test scene only has 460... I can't imagine ever needing more)
  • Has "Frontal" capabilities. (not sure if there's a real term here..)
  • Allows you to define the cone of the frontal selection (up to a full 360)
    • this allows you go from a full 360 degree area attack, down to a focused cone attack, or even a beam type attack.
  • Can specify minimum and maximum ranges. Allows for rings to be selected.
  • Able to specify the number of targets returned, from 0 to 460. 
  • Lets you randomize your target selection 
    • if you have a very large range, with a wide cone (or no cone) the system will pick targets within that range at random until it reaches your required number of targets. 
    • if random is NOT selected, it will always prefer closer targets over far ones. 
Overall, I'm pretty thrilled with how well it turned out. This can easily fit itself from anything to a single target melee, to a long range AOE or even a room-wide boss ability that picks random spots to attack or random people to target. 

Check it out here, play with the options, use the T button to perform the targeting function and highlight viable targets.

(I know it can kind of be a pain to move around in this room due to all the boxes, and that the fact that the options box on the left does NOT block clicks, so your character runs to the corner while messing with the options... but it's a test... so live with it. :D)

Tuesday, July 16, 2013

Quick Update

OK, let's do a quick update on tonights work. It doesn't seem like much, but progress is progress.
  • Added a ranged enemy
    • He should chase you until you're in range, then shoot an (ugly) fireball at you. 
    • He's blue. 
    • Ability is broken up into pieces, projectile can be easily swapped to anything. 
  • Enemies have a "call for help" allowing them to act more pack-like. 
    • Call for help is set to 5 "units" (pretty small)
  • Changed the map around to have "pulls" or "packs" or whatever you want to call them. 
    • This was mostly for testing "call for help" functionality and to make it seem like more than 1 room.
  • Changed the 2 button to 100% heal / 3 sec cooldown.
    • Again, this is for testing only. 

Friday, July 12, 2013

It's only been two weeks!? Lies...

EDIT: you need this plugin to play. I guess the app doesn't auto direct you to the plugin : http://unity3d.com/webplayer 

My god... It feels like it's been *WAY* longer than two weeks since my last update on this project. I feel like it's been months.

Anyways, I've put a bunch more time into it. Got a lot of systems that I'm concepting out to eventually find their way into this project.

Honestly, I'm pretty happy with how it's going so far. Being as I'm only really focusing on the game systems and how things operate at this point, I feel like I've made a lot of progress. It's also unbelievable how much I've learned about unity. It's honestly shocking to me that it's only been two weeks so far...

Back on point! I've packed this full of fire and monsters. I did this "monster and fire overload" to just load up the scene like crazy and see if it messed with my performance. Once I packed the scene full and ran around, the ridiculousness of it made me chuckle to myself, and I decided it was worth updating on the blog. So you get to see it too.

This time, I'll put the game above the "update notes" so you don't have to scroll too far unless you want to read the update notes (which are kinda boring and more for my personal notes, but hey click "read more" if you want!)

Wednesday, June 26, 2013

Collision / Movement / Camera tests

So relieved!

I'm not sure if you've ever tried to make a game. There are tons of tools, and lots of quality solo-made games coming out every day. If you haven't though, let me tell you a secret. It's all the little bits and pieces that are the biggest killers.

We can talk all day about big sweeping mechanics, and crazy radical changes, but it's the little shit that you don't even notice that are often of huge importance. When was the last time you played super mario? I'm talking the old school mario. Now, tell me about the camera system in that game, I bet that never even crossed your mind before. Why? Because it was implemented so well that you didn't even notice it. Or how responsive were the controls? Things like this slide under the radar most of the time, and that's good. But when one of those (seemingly) basic systems breaks, or fails (think about the camera stopping in mario, but your character just runs off the side) it completely destroys the game.

That's what makes these core systems so important, that they have to be invisible.

Anyways, enough rambling about core systems, I built this over my weekend. I realize this doesn't seem like much, yet. But getting these core systems down in a tool i just started using yesterday has been a big task. I lost sleep over it! 

This is the very first baby steps towards an eventual handheld mobile game. I won't spill too many details here, but I figured it would be worth sharing.

If you have anything to say about it, or any thoughts, or if something breaks, let me know. Leave a comment or email me or whatever.