Saturday, November 10, 2012

Time for an Update

T.StartPost();

Well it's been a while since I did a post (sorry, been busy with school and some side projects) so here's an update for things that I've been doing recently.

In school I've been learning more about normal mapping and making good normal maps. The first project we had to work on was just texturing a pre-made hatch after we baked the normal map and diffuse map from it (Diffuse maps make it easier to select pieces from a model as they are baked out with the colors, so you can just select the color pieces you want to work on in Photoshop).

I ended up with this. So it's a concrete door (obviously would have hydraulic assist from the inside for lifting the door) and it's been open to the weather for a while



Next off we had to make some sci fi style props, A floor, wall and roof tile. Out of the three I did I like how my floors turn out the best so here's a viewport grab of it with the Xoliul Viewport Shader.
Basically the topic was sci fi for the new DAE building called The Level and I figured what better way to have a call out to gaming for floors than to have D-Pad style floors.


















Next thing we had to do was make 2 more props, same style but a simple and a complex one. My simple prop was stairs, not staircase in it's whole, but just the steps. This is what I came up with, this is a grab from UDK.




















So this next one is the "complex" prop which was a sci fi Computer. I decided to make a projection style computer that would project from the red ball in the middle onto the screen between the 4 corners. The corners can be tilted like any regular screen as well. 


































And finally, this is just me doing some concepting for the Chainsaw Katana project that I somewhat started a while back (but decided the original drawing I was going to go off of wasn't that great...so I'm making my own concept for it now).

This is just the hilt, but the throttle for controlling the chainsaw speed. I've thought about doing it more of like a gun trigger as well (which most chainsaw's are in) but thought this would look a bit more clean and neat when actually modeled. So it's more up the alley for a motorbike throttle, this would be the one turn able part on the hilt while the rest is quite static. Either way, it's a WIP.


Thanks for reading, hopefully I will update a bit more instead of so sporadically...

T.Out();

Monday, October 8, 2012

Unity...

T.StartPost();

Soo...the last two weeks of class have made me start using Unity.  Now...I'm going to try and not rage to hard at it cause although it has proven me wrong in it not being a bad engine (completely) it has also made it very hard to not hate it while just making a small Asteroids Game for my Integration Projects class.

So last week we had to make a "mod" for the ole Asteroids game. I threw a few things into mine (as the base game we made in the first week was just a ship that could shoot at different sized asteroids) such as
-The big asteroids would spawn smaller (anywhere from 1-4 pieces) ones when you killed it, the big ones also took 5 hits to kill and all asteroids did a "camera-shake" when they died just for a little effect.

-The controls could be done by mouse and keyboard or by 360 controller (which after some help from others and tutorials I got it figured out and must say it was decently easy to set up in Unity)

-A shield power up that you could pick up from the small asteroids sometimes (would possibly spawn them and not all the time) which would have 2 uses per pickup that you could run into asteroids and not die

-After you got a certain amount of points you would get a 1-up.

So although it's not a ton of stuff it was enough to make me rage a lot at Unity and C# scripting as I'm new to both haha and it really seems like putting those two things together makes it very hard to encapsulate properly (compared to C++ at least..)

Next up is making a prototype in Unity for a game, we'll see how much rage I get out doing that project.

Unity isn't really a bad thing but it is a lot to get used to and kind of just be dropped in and told to make stuff haha.

T.Out();

Sunday, September 30, 2012

Busy-Bee

T.StartPost();

So I have been pretty busy the last few weeks getting things ready for a few different projects as well as just getting settled back into being back in school and really just being back home in Europe.  It's always a little weird going over for the summer and then coming back for the rest of the year as I always seem to just get settled back into being over there and then just as soon, I have to come back to Europe, but I digress.

So there's a few things even just school wise that are going to be new for me this year, picking up third year courses and finishing second year ones, learning a lot of new things (the first week already had a ton of C# which I've never programmed too much in) as well as learning to make stuff in Unity and soon as well, UDK.

Reviews for games are on the way, I'm waiting to post them as there's another side project that is getting started and I don't want to have to use too much old content.

Looking forward to the very hectic year that it looks like it will be as between the side project I just mentioned (which could possibly take a decent chunk of time), school, writing reviews/playing games to write reviews and also possibly planning Study Nights for the whole (at the very least it will be for the International classes) of DAE it promises to not allow me too much time to myself this year haha. 

Some of the games that are going to be reviewed very soon are as follows

Batman: Arkham City
Torchlight 1 and 2
Borderlands 2
Dungeon Defenders
Kingdoms of Amalur : The Reckoning
Prototype2
Counter Strike : Global Offensive
Orcs Must Die 1 and 2
Gotham City Imposters

A few of these are already done and just sitting in my folder haha, just waiting to use them now.

Well I'll be posting more regularly now (hoping to do at least once a week) and we'll see how it goes for keeping up to date on everything.

Till Next Time,

T.Out();


Wednesday, August 15, 2012

Well that was interesting..

T.StartPost();

Soo...It's been a while since I had time to post. I'm posting this to do a brief catch up of what has happened recently.

Since the first few weeks of July I've been working non stop  (I've had 4 days off since the 12th) so I haven't had a lot of time to do anything that I expected to do this summer (such as learn my Uscript like I wanted to, or do any real programming) so I'm now going to try and do it in the very very very little spare time I have after work which is about an hour. I'm also going to be filling this time with trying to power out some game reviews since I've been lazy as hell about it for far to long...

Oh yea...and there was this one time like last week (or the week before...days don't really have a meaning when you work 24 in a row...) that I may have back handed a cup of tea all over my laptop which was another reason I haven't done anything for a week or two so now that I have it back I can try to start stuff..

So those are my two priorities right now, Doing reviews and some uscript learning ..and I guess I should finish a few of the models I actually started...  Anyways... Time for bed. I'll start it tomorrow after work :D

T.Out();

Tuesday, June 12, 2012

Taking my stuff and going....into UDK!

T.StartPost();

Hey, so I know I was gonna put up a video of the game I made but I don't know if I'm really proud of what it is right now to put it up (I was proud before I added some of the things to it that were required for my exam, but those things destroyed a lot of my work...). I am proud of my game but it's not what it was, I previously had normal mapping in it but for some reason, adding ShadowMapping has really messed it all up. It not only killed my Normal Mapping, like utterly and completely, but it also lit up everything on my models a ton AND didn't actually add shadows (that  I ever saw, but I think I do know why).

So I think I'm going to actually re do my models (make the rock/bricks and textures my self) and then start exporting them to UDK. I'm currently learning the syntax's for UScript (since UDK itself can't directly read c++ file without messing around) and since I just found out that Scaleform is in UDK as well, I'm learning Flash/actionscript to make my HUDs for this game now. So I'll start using trying to post some updates as they come (see how much work I can get done in the summer with working and such)

I'm gonna try to start porting my C++ code into UScript (once I figure out how to write UScript in UDK itself ...or wherever I have to put it...) and then hopefully I can get back up to speed pretty fast. Keep your eyes peeled for it cause I really hope to keep the motivation up to make this game.

T.Out();

Saturday, June 9, 2012

Explosion Shader V2.

T.StartPost();


So, from my last post with my "explosion" shader, I have made it a bit more controllable and "realistic". 

Here's a video of 3 explosions with varying "weights" of the object.
The shader isn't really that complex in it's nature and has some easily tweaked values to make it so you can determine a few things about the explosion.

As far as how it's written, I'm going to assume that if you were searching for this kind of shader that you have either been taught or know the basic pipline for Shaders (Vertex -> Optional Geometry -> Pixel) and would also like to say that I'm by no means an expert in shader writing either so if you happen to see something I could improve, feel free to leave a comment, it's always appreciated.  On to the code Snippets!

K, so this shader uses a few things that really help to determine the explosion.
//-------------
//Floats
//-------------
1 - float SpeedVariation; This will help to create differences in how much speed the exploded material will gain at explode time with 1 being a very small explosion and 5 being the kind that I used in the video.

2 - float MaterialWeight; This is what determines how fast your exploded pieces will fall after they have been propelled out.

3 - float ExplosionViolence; This is an extra parameter to help make the explosion either big or small. Smaller the EV, the smaller the explosion. (It also gives some weird explosions if you use numbers closer to 0 like 1 or 2. Greater than 3 is usually a safe bet for a decent looking explosion.

I have 3 random float2 's that I use to get some more randomness in the texture coord look up and my speed calculation as well. rand1 = 0.09, 0.05 rand2 = 0.075, 0.05 rand3 = 0.09, 0.04

Those variables coupled with a Time variable help to make it propel and fall with some realism.
//-------------------
//Sampler States
//-------------------
I use 2 sampler states for this as well, one that is used for the diffuse and the other for sampling the gradient/noise.

SamplerState samGradient
{
   Filter = MIN_MAG_MIP_LINEAR;
 Address U and V are both Clamp
}
 and the diffuse one is just AddressU and V with Wrap;

//----------------
//Textures
//-----------------
There are also 3 texture2D's that I use for this which are as follows.

1 - Diffuse - just whatever you want your object to have for it's regular texture

2- Noise - This you put in a noise texture to get some randomness for the distance the exploded pieces will travel

3 - Gradient  - I use a gradient of 1 X 256 that is white to black.

We sample the Noise and Gradient in the Geometry shader to help give just a touch more randomness.

I use triangle as my Geometry input as we only need the 3 verts per tri and the [maxvertexcount] is 3 as well since we only do the calculations for movement per tri.


//-----------------
//Geometry Shader
//-----------------

So the way I did this shader was to make it so the pieces fly in a somewhat up and out movement (Outwards explosion from the center) the way I do this is by grabbing all the normals of the tri and adding them then taking the average (divide by 3) and saving this in a float3.

I then take the average of the texture coordinates and use them to do a SampleLevel on the noise and gradient textures.

example
float Noise = 2.0f * m_TextureNoise.SampleLevel(samGradient, (aveTextureCoord +  m_random),0).r - 1.0f;


and same but a different randomvalue for the gradient one.
 
One of my math teachers loved the word Lerp and Slerp, now I never really bothered to use them that often but I figured this would be a good time to use a lerp go get a bit of randomness.

for my "speed" calculation I do a float3 (0, lerp( Noise, Gradient, m_SpeedVariation), 0);

Gravity is the negative of the "MaterialWeight" * time (only in the Y direction obviously).

Now the first bit that I was trying to get the variations to work I didn't have this calculation, this came from a friend of mine Jay Heggerud that said if I wanted to get some more variation on the speeds/distances the pieces travel to maybe try making my initial speed based on the min speed I wanted + the speed variation * random value for differences. 

So this puts my vi calculation at something like this (to get a random minimum speed on the initial we use the Noise and put it like this.

float3 vInitial = float3(Noise * m_SpeedVar , Noise * m_SpeedVar , Noise * m_SpeedVar);

Now we're pretty much at the end of the shader. The only part left is to plug things into some equations from Frank Luna's Intro to DirectX book (where I also got the idea to make an explosion shader)

So it's a somewhat basic Physics equation we put into make the triangles travel and fall kinda realistically.

 0.5 t^2 a + t vi + p0;  so this more or less translates into 0.5f * accel * time squared + vinital * time + the inital position;

for the initial Position we use another formula to represent the explosion, also from Frank Luna

p(i) = p(i) + tn where i = each vertex 1,2,3

so if we shove that in there as well we get

 0.5 t^2 a + t vi +(p + tn);

Now I deviate from the equation in the name of randomness and threw some other calculations into it as well.

The full calculation for the position of one vertex  is


pos[0] = 0.5f * gravity * (m_Time * m_Time) + (vInitial * m_Time) + ((vertices[0].Position -vertices[2].Normal * m_Time)+(normals * (m_Time*(m_ExplosionViolence * sin(cos((m_SpeedVariation * speed )))))));


Output each vertex with it's respective normals and texture coords and bam, you're done really.

Hope this has possibly helped or at least been somewhat of an interesting read, I'm gonna go write my paper for this now haha.

T.Out();

Thursday, June 7, 2012

Explosion Geometry Shader

T.StartPost();

So for my exams I also have to make and write a paper on a Geometry Shader written in ShaderModel4.0 for HLSL. My original idea was to do a grass shader because...they seem kinda fun.  Well it didn't work out so well and I had technical problems that I still don't know what was causing them.

So, instead of grass rendering I decided to make things explode!  So I wrote this shader (with some help from my teacher to try and get some more velocity on the pieces when the explosion starts) in the last little bit and I think after playing with the equations a bit I finally have a decent start on this. I am still going to try and make the pieces have some more variance in speed but it's a work in progress.

https://vimeo.com/43616612

Above, is the link to the video I took inside FXComposer2 where I wrote the shader. As I said, it's the first (good) iteration and I'm gonna try to tweak to be even a bit better than current but, that being said, there it is.

I'll also be posting the paper on it later (going to write it tonight/now-ish) and some snippets from the shader itself as there really isn't that much to go on when searching for Geometry shader help/tutorials (that I found atleast for DirectX)

T.Out();

Tuesday, June 5, 2012

T.StartPost();

So, as I think I've mentioned in the previous posts, I'm making a game for my exams that is "tentatively" called Dungeon Explorer. Yes, it's one of those dungeon games (if I had the time before the Exam I'd love to get enemies in and different weapons too but it's not gonna happen..) where you try to find loot and avoid dying. This one I decided to make "Procedurally Computer Generated".

For those that don't know what PCG is, in short it's basically the game makes itself. The only thing the player/user would have to do is tell it how big of a map you want to play in and how many rooms you want and the game will make a level based on those. Now that doesn't sound sooo fancy but the thing is, everytime you play, it will be different.

Right now I have the level generation working quite well, with A* (A-Star) pathing between the rooms as well as "treasure" tiles" and I just added Stairs Up/Down (and am working on the trigger so it will make a new level if you go Up or reload the last one if you go Down...) I still need to add locked doors/keys but that's hopefully something I'll have time for.

In the next few days I'll get a short video about it with me just running around in the level and showing new levels as well as Saving/Loading (which was kind of a pain in the butt to make.) Now that said, the movie will also be with the current textures which...aren't amazing but I wouldn't say are terrible...just don't laugh to hard at them haha ;).

Anyways, back to programming and Const Correctness Checking for the first presentation it's due for tomorrow.

T.Out();

Tuesday, May 29, 2012

T.StartPost();

Well, here's another post. I'm still not sure what to really put in these (I'm really in a crunch time for my exams right now) so I figured I'd list a few things that I will hopefully get to post about (or would like to)

-Some basic HLSL shaders would probably be fun (a geometry shader might be in there at some point too...although they are annoying...) probably basic diffuse, specular, normal mapping maybe some cube mapping.

-I might post some stuff about the A* Pathing that I used for the exam game that I'm making right now and how to go about doing the checks and the general way for 4 direction A* searching (8 isn't that much harder, just adding more checks)

-If I get the time I still want to finish developing my GUI for an inventory that would use some STL containers to make it switch between two "packs" etc.

Again, maybe some other topics people suggest.

I guess one of the projects besides my Exam Game that I'm making is a project I am starting tonight actually. It's based on this image that is floating around the web currently...The Chainsaw Katana.

 So I started modeling this in 3dsMax a lil while ago. I have the very bottom of the hilt done (had some issues on how I wanted to make it look compared to the picture so had to do it a few times before I was happy with it.) and a basic blockout of the hilt part (still debating on whether or not I should model the braids or just nDo it and then use the Normal Map for the textures as well (think in the long run it will be easier.

This is my project for giving me a much needed break from actual programming (still have to read my theory but hey, it's a work in progress).

Well thanks for reading, I'll probably add pictures later or in the next post.

T.Out();

T.Edit();
Here's the first WIP pic, just the hilt (haven't made the pull cord on the bottom or whatever the side circle thing is) gonna have to find some ref of chainsaws I think to make the next big piece believeable.
T.Out();

Sunday, May 27, 2012

T.StartBlog();

Hey there reader,

So, this is my first blog post (of hopefully which there will be more if I can find the time between school, work and and schoolwork). Right now I don't have a lot to post about so I guess I'll start with the

WHO IS THIS GUY?!

Well my name is Travis Evashkevich (as you can probably tell from my profile) and I am originally from a little middle of no where town in Alberta, Canada but was also living in Fort Mcmurray, Canada for the last few years of my high schooling days as well as for a few years of working after I graduated. Currently I'm bouncing back and forth between another small-ish town Kortrijk, Belgium for school and Fort Mcmurray for work during my summers.

I'm going to school for being a Technical Artist with a major of Game Development ( basically in our school it means that I do programming and 3D but less emphasis on the art related stuff, 3D still must look good but not much on the pre drafting and drawing stuff).

So I guess I'll probably be posting tid bits for helping other people (maybe some tutorials on 3D or c++ or maybe a few simple shaders in HLSL could be fun) or just to showcase stuff I make.

So, there's  my quick recent relevant history and hopefully the next little while (during exams might be tough) I'll get some more posts rolling here.

T.Out();