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.