Saturday, June 8, 2013

Skool's Out

Thursday was my last day of class. Turned in an updated demo reel, and a "Roboy" project the class as a whole was working on. Unfortunately it didn't get finished, but a few of us animators are going to continue work on it over the summer. I think in this class in particular, I've come a long way as an animator. Of course I still have tons to learn and much, much better to get... but I think I've improved more over the course of this last class than any of the previous once, since it was pretty much all my own work and not just tutorials or learning something followed by class assignments. Here's my current June 2013 reel:

Animation Reel - June 2013 from David Durston on Vimeo.


Quite an improvement, I'd say, over the last one just a few months ago:

Animation Reel - Spring 2013 from David Durston on Vimeo.

So now that's done and all the requirements for my AA in Animation are met. Just waiting for it now I suppose. I'll probably go back every now and then and take a class here and there, but in other fields that interest me like Motion Graphics and Compositing.

For now and over the summer... my first order of business is to finish up all the animations I need to do for this game Elyot I've been helping out with. Just yesterday for my first time I rigged some first-person arms and made the first sword animations for it. Once Elyot is done, I can happily go back to and start working on my own game projects again.

Of course, all the while I'm gonna still be trying to crank out new animations for my reel and otherwise as often as I can!

Friday, April 5, 2013

Busy Busy Busy

So, as a lack of posts for the last 3 weeks may have indicated, I'm taking a good break from NavTac because I just don't have time to be doing all the art and programming for it. I've actually decided to try and find a programmer to help finish it and that way I can focus on the art, along with having enough time for all the other things I'm doing.

Yesterday I caught up with class work and submitted the first versions of my portfolio site and demo reel, which are at www.durstonart.com right now, though I may change the url to just be my name. Over the next 2 weeks I'll be refining both the site, the reel, and working on some new animations - including what will be my first attempt at making an animation for the 11 Second Club monthly competition. To add to the list, I finally have time to and will resume working on animal animations for the game I've been helping out with, Elyot and the Island of Pongo.

That's all for now. Since I'm not writing near-daily or weekly logs for NavTac currently, my next post will hopefully include some new animation.

Wednesday, March 13, 2013

NavTac - Log #11

So, the last few days have been more of me being too lazy to post here than not working on the project. I've done quite a bit. Though... I'm not sure exactly what's new from the last post.

I've added some small AI to the player ships now, so they'll engage targets nearby if they haven't already been given a target by the player - though being given one will override it. I've recreated the lines that are drawn when a path is made, and also the ones that show up when one unit is following or attacking another.  I THINK nearly all of the basic combat is down now. This week I'll hopefully get around to starting on modeling the other ships, as well as the actual cannonshell and figuring out what the trail renderer should look like for it.

Webplayer

Friday, March 8, 2013

NavTac - Log #10

I really thought I'd be posting media and maybe playable demos more often with these logs. That'll probably come soon, but probably won't be much for this game.

Did some more scripting today, added a few functions to the navigation and cleaned stuff up. I did end up switching those multiple bools into an enum, which is working nicely and is cleaner to read. I also coded in two new functions for player ships, called FindPathToTarget and FollowTarget. The first one will generate a path to an enemy target the player has designated - but only if the ship is not already on a player-made path. If the ship is on this generated path and the player draws a path for it to follow, it will jump to the player-drawn path but keep its current target for combat. Player-created paths always take precedence over generated to-enemy paths.

The other one, FollowTarget, is something of a convenience/escort ability which will allow the player to drag a unit's path marker over a friendly unit, and then the ship the player was dragging from will follow that other ship wherever it goes. This cancels out player-paths, but is also cancelled by player-paths. It also cancels and is cancelled by generated to-enemy paths. So lots of leeway for whenever you decide you want one ship to follow another.

I plan to do more tomorrow, and the next thing I have on the list involves a new version of the game camera and how it works.

Monday, March 4, 2013

NavTac - Log #9

Another day of working on this game on-and-off. More accomplishments!

Biggest thing since the last post, I've gotten the basic ship AI pretty much done. It can idle, patrol on a set path (with a patrol-path script I also made that manages ordered waypoints and can loop it or not), pursue and attack enemies, or retreat to a predefined location - like a repair dock.

I've also implemented a pool manager to handle objects that will be constantly instantiated... right now that means only cannon shells being fired from the ships. This will definitely help with optimization. The scripts I'm using for this were kindly provided for free by Boon Cotter over at his personal Booniverse blog. They can be found on this page.

Unfortunately, as I'm learning more about C# programming, I'm finding things I could and should change in my scripts to make them better. For example in my ShipMovement script, I use two booleans to dictate whether the FixedUpdate() function should accelerate the ship to full speed or drag it down to a halt. This means in my AI or anywhere I want to change it, I have to flip both of those, like this:
throttleUp = false; throttleDown = true;
A much better way to do it would probably be to use enumerations for it, as I just learned and am using for my AI-states in that script. That way I could just say:

throttleState = throttle.Up;
or
throttleState = throttle.Down;

Might not seem like much of a difference here. But in my AI script, I currently have that first version repeating lots of times, usually after boolean checks to see which one is currently active also. Obviously, that wouldn't be an issue with enums. For now I'm going to continue development and then go back to refining code towards the end of the project. Right now it's on an as-needed basis but I'll probably end up doing it either way.

Won't be working on it AS much this week. I have animation work that needs to be caught up on before Thursday!

Saturday, March 2, 2013

NavTac - Log #8

To begin with a side note... I don't know if I should post when I can or try and make it at the end of the day. More than likely I'll be updating this post later today with what new stuff I've accomplished. But anyway...

Last night and this morning I've worked on navigation and AI... mostly learning rather than doing. I have gotten around to know how to work creating navigation grids and using them in Dynamic Navigation... which was such a breeze! Didn't think it would have been that easy, honestly. That was last night. This morning I've been looking at state machines, hoping to learn how to actually code them since I've only ever made them with visual editors in both Unity and CryEngine. Well, I'm going to be making a very simplistic version of a state machine for this game because quite frankly, this game's AI doesn't need much. I'm pretty sure the only states I'll have will be idle, pursue, patrol, and retreat.

As far as AI goes, I've only as of yet implemented a target-scanning method. Right now, it runs through all targets with a given tag, checks if each one is closer than the last (and if it has line-of-sight to it), and then the closest one that is sees is the current target for it. I'll end up tweaking this with some "threat level" variables maybe, so the AI is a little smarter than just engaging whatever is closest, and then it can weigh its options, so to speak.

Lastly, had my first go at making a custom gizmo :)  Made one to visualize the standard "sight" and "firing" ranges of the ships, custom icon and all:



Friday, March 1, 2013

NavTac - Log #7

So it's been like 2 weeks since I've really touched the game. Took some time to get myself back into animating, since I'm now into my last class at school - Animation Project. I'll be working with some other students who have been following either the modeling, lighting & rendering, or other course-lines to put a full short together. Looks like it's going to be a robot character with a montage of gags at the least, thinking it will be pretty fun!

Anyway, been doing a little bit with NavTac two days ago and right now. I've added target snapping, so ordering an attack/etc order is more reliable (sometimes you cant always see if your finger is over an enemy unit or beside it). Also played with creating Layer Masks to selectively ignore some layers from returning hits from Raycasts - which helped smooth out dragging the path marker around as well as issues with it hitting terrain.

In other news, been playing with Vectrosity a bit, liking it so far. Currently waiting on what seems to be a bug to be resolved so I can get more into it. Also picked up Killer Waves for $15 on the asset store two days ago - something I hope will help me implement a sort of wave-based survival mode later on. I also bought Dynamic Navigation for $25 a few weeks ago, but have yet to try it. I think I'll be getting into that soon though, as I'm running out of things to do/polish with path-based navigation and input. So I think trying my hand at AI and AI navigation will be next. Hopefully the navigation, with this asset, will be pretty easy - but I'm guessing figuring out AI and getting that to work properly will be... not so.

___________
Late Update:
Toyed some more, decided I'd figure out how I'm going to work terrains the way I want them to, and turned out easier than I thought. I'll be sculpting the terrains mostly in Unity to get the right size down... then exporting to 3ds Max to optimize the triangle count and tweak as needed, as well as uv-map it and cut it up into sections. Each section is going to have its own control point, and when captured, I'll use the same shaders I have on the boats to show the new owner's influence expanding outwards from the point.

Monday, February 18, 2013

Short Break from NavTac, nDo and dDo

Well as the title states, I have been and am taking a short break from working on NavTac to put some time back into rigging and animation (my major which I'm currently wrapping up in school with this newly-started semester). Watching some Digital Tutors videos while practicing for projects I'll be doing this semester in school. Sometime this week I will probably start working on NavTac again though. I've far from lost interest in it, it's just the second priority right now.

Two days ago I did manage to try out the beta for dDo, from the guys who made the awesome normal-creation tools nDo and nDo2. dDO is more of a diffuse-texturing solution which lets you use color maps to quickly add lots of detail to your models. By color map I mean, you just make a diffuse texture for your model of straight solid colors, each color denoting a different material that your model should have, then you can use those as a sort of selective filter to add loads of customizable details and effects. Nothing someone can't do with Photoshop alone, but it does immensely speed up the process.

Tuesday, February 12, 2013

NavTac - Log #6

Well, I didn't post two days ago since I was having comp issues but I managed to get the target leading working appropriately, and also made a small block that will randomly determine where around the target the shot will land - or basically how inaccurate it is, a measurement that gets larger with more distance between the shooter and target.

Unfortunately 2 days ago my comp decided it had enough of this world, or at least parts of it did. And those parts happen to be the ones that matter - very sure either my motherboard or RAM went out... probably the motherboard, considering I tried each piece of ram individually and it still wouldn't even boot up to BIOS at least. So I went out and bought a new cpu/mobo/ram, just now reinstalling Unity as I type this up. Haven't worked on NavTac in a few days and I'd like to keep steady progress on this one, so maybe tonight I'll get around to doing some more... probably start figuring out how to achieve want I want to do with the islands in the game.

Saturday, February 9, 2013

NavTac - Log #5

Well, it's almost 3 in the morning, and I finally have shooting done. After playing with lots of methods to get the shells to follow a certain arching trajectory, both by tweening/lerping and use of physics, I ended up finding a very helpful script someone posted on Unity Answers and was able to tweak it to my needs, implementing it into my overall turret-control script.

For the record, this is the Answers page.

So now the turret is able to track its target and shoot it with the script I've written, which I've made it to allow me to set via the Inspector:

  1. The ammo/shell prefab
  2. Maximum firing range
  3. Reload time
  4. Amount of shots to begin with
  5. Rotation damping factor for the turret
  6. And the maximum and minimum elevation angles for the turret
I think the last thing I need to do now is attempt to calculate the lead for the target. I found a script the other day meant for that purpose, hopefully I'll have luck figuring it out and including it quickly. I'll post a new webplayer with my next log.


Thursday, February 7, 2013

NavTac - Log #4

Oh juggling is not fun. Made some idle animations for animals for another game I'm helping with as animator. And then crammed today for the last day of my Project Management course, finishing reading the book, writing a journal entry for it, taking the final exam, and turning in the final project. Whew!

Back to this game... since the last log I've managed to get the gun tracking in, so the turret swivels to face the target and the cannon pitches based on how far the enemy is in preparation to fire. I think I'm just going to animate/tween the position of the shell as it heads to its target though, so far figuring out the "ballistic trajectory of a projectile" seems more difficult than I'm willing to put time into at this point. Maybe down the road I'll change it, we'll see. So yea, next I'm gonna get the shells flying, and possibly look into Vectrosity for help with rendering the lines since LineRenderer is horribly limited.

Tuesday, February 5, 2013

NavTac - Log #3

Yesterday and this morning I scripted in the camera's movement. It now supports:

  • Touch: Panning using single-touch drag
  • Touch: Zooming using pinch-to-zoom
  • Mouse: Panning using LMB-drag
  • Mouse: Panning using the edges of the screen
  • Mouse: Zooming with the school wheel or +/- keys
Made the script as reusable as possible, so the camera's min/max speed and min/max height can be adjusted in Unity's Inspector, with the speed scaling depending on the camera's current height. Now I'm going to at least start on scripting the turrets, so they at least track their targets... going to have to look into some heavy math possibly to get them to lead properly. /sadface

Sunday, February 3, 2013

NavTac - Log #2

Yesterday and today, the scripts came together that will control ship movement and designating targets for each ship, as well as a simple health script. So now, after dragging a path, the ships will begin to follow them. They do have a limited turning radius though so cannot simply turn in place or on a dime - I will have to implement functionality for the ships to slow down a bit when sharp turns are coming up to follow the path more strictly. Also now, when dragging from a ship, if you let go of the mouse button over an enemy ship, that will set it as the current target (though you will still have to give it movement orders to get there!). The health script currently just managed the amount of health each ship has and its public functions for changing it - not yet sure if I'll need any more than that for this, we'll see.

Next up on the list, I think I'm going to focus on asset production before continuing with scripting, so that I have more to work with. Then I need to touch up the path generation and movements scripts I've already made and make the following corrections/changes:
  1. Increase drag on the ship's velocity based on how sharp upcoming turns are (so they slow down for tighter turns)
  2. Only begin to decelerate when near the "true" end of the path. Currently, it slows down when it is physically near the end of the path, regardless of how far it still has to travel, so I need to base it on path completion as well.
  3. Delete points on the path as they are reached.
  4. Change the style of the marker and snap it over targets when hovering over them.
  5. Make the rays used to plot waypoints ignore terrain.
As for the paths themselves, I may end up looking into Vectrosity or learn to use the Mesh functions in Unity, because the standard Line Renderer available is too limited and won't achieve what I want.

Friday, February 1, 2013

NavTac

Oh my jeebus I made a total of two posts in 2012. Good thing the world didn't end, now I have the chance to make it right!

So since the last post, some pretty good progress was made on that sub game but I ended up abandoning it mostly due to lack of interest. Took too many breaks from working on it and it started feeling like a chore, plus the entirely 2D thing wasn't really lucrative when I'm the one doing the 2D artwork. I've really switch focus from modeling (which eventually I still do want to get better at) to game dev and animation. I'm currently the animator working on an upcoming survival/adventure game called Elyot and the Island of Pongo, doing all the creature animations and the few required human animations.

As far as personal projects go, I'm currently soloing a new one which I WILL FINISH this time no matter what. I'm really interested in this idea I have and want to see it through. It will be a simplified naval strategy game for android to begin with, possibly for iOS and the web as well if it's well-received. The gist of the game is that you will control a fleet of ships charged with either eliminating an enemy fleet or, more commonly, capturing an island by deploying marines onto it. Most missions will involve ship-to-ship combat as well as the necessity to support your autonomous marines on the island with coastal bombardments as they capture control points.

Controls will be simple: drag your finger/mouse to plot a path for each ship to follow, or drag it to an enemy to have them engage it. Visually, there will be mostly solid colors, slightly Tron-like, but not quite holographic. It will look more like a virtual simulation than real textured objects.

Ship with movement path plotted.
As of today I've worked on it for a few days. I've generated some ocean textures, set up a grid overlay, modeled a ship to test with, and tonight nearly finalized the major script which will manage pretty much all of the input and path-waypoint generation for the ships. It's only 234 lines so far but definitely the most complicated script I've written yet in Unity. Next I work on movement and getting the ships to follow those paths.