Friday, 15 June 2012

Cooking the Game

I heard that this would be a bit of a pain, but with the help of some videos, it went rather smoothly.
There were the straightforward tutorials, about cooking your game into an exe but they never really mentioned what to change in the scripts, so I thought I'd post this here for future reference. I am using the September 2011 version of UDK, which is no longer available for download, but these are some extra precautions you can take to make sure that Unreal Frontend takes all your packages and game type.

Monday, 28 May 2012

Cecilia Final Render

Knowing that it's over, I still wanted to improve her texture, and here it is.

And here's her naked body, bahaha:

Thursday, 24 May 2012

Trailer & Final level for Viva

I've been up to my eyeballs with work and yesterday I did my final Viva. The year is over. Woopee!
The updates are rather bad this month. I think it is really due to the fact there's nothing impressive to show anymore. However here is a trailer for the game along with screenshots of the level.

Outdoor area (newly constructed)
Hallway, with new particles going on!
Gate with more locks!
One of two grey keys to open the lock above
The final key to open the above

A key idea that never got made :(

Tuesday, 8 May 2012

Tower & Bridge WIP01

Started modelling the tower and bridges, I realised there's a lot of work to do for the roofs too. I'm hoping to create something to repeat so I can quickly construct these. Planks and metal bars are a great idea!

Vase x2

These Vases were rendered using a software called Marmoset, it's super awesome for rendering game props, I must recommend anyone needing this stuff for portfolio to use it!!
I think I may have a second texture for this pair, just ot mix it up a bit.

Sunday, 6 May 2012

Emerald Round table

Took a day to model/texture this. It's odd that Maya's transparency map is the inverse of what you would use in UDK's material editor. Another annoyance I'm trying to overcome is rendering the normals with the diffuse in Maya, at least you can see how it looks in the UDK screenshots.

There is a random hard edge problem I get when I import from Maya to UDK, and it always happens, even though I tick the option 'Smoothing Groups' in the FBX exporter, and tick 'Import Tangents' when importing it to UDK.

Problem solved when you don't use the 'Triangulate' option in the FBX exporter- it's weird, but I guess the only way to avoid random hard edges is to triangulate your model before exporting.

Friday, 4 May 2012

Wall Liners and Improvements on Cecilia

Improvements on Cecilia's texture, her hair, face and dress and corrected normals (less clean cut egdes etc). Now the Hallway also has added wall Liner/structure to make it appear less square.

Friday, 27 April 2012

Aesthetics List

List of assets to create and think about:

  • Keys
  • Themed rooms
  • Bridges
  • Staircases
  • Building structures
  • Dolls
  • Room with smoke and fire particle effects
  • Vases with dead flowers
  • Pillars/wall beams
  • More wall/floor textures
  • More lighting/Lamps
  • Mirrors
  • Cages
  • Chains
  • Light switch
Improvement to:
  • Cecilia's texture, possibly sculpt
  • In-game sounds
  • Blood spatter
  • Elaborate on some items

Monday, 23 April 2012

'Key' Ideas

Here are some ideas that were floating around in my head during Easter for more puzzles and the theme of the maze:

3 Differen Keys for Different Purposes
  • Regular Coloured key (colours will differ to indicate door it matches. Old school)
  • Theme key (for special rooms with context)
  • FINAL key (for the exit)
Also I'm realising now that perhaps the keys don't actually have to be keys, but cryptical objects, I don't know, maybe if you are trying to unlocked a themed room, you must find an object that goes with the theme. Like the typical one would be dolls, a little girl's room full of creepy dolls. Find 3 pieces of a broken doll and you get access to the doll room. Once you walk in, you'll find the reminants of a horror story, something terrible that happened there.

Thursday, 29 March 2012


So after two wonderful and relaxing days after my Viva (which went pretty well I think), I've been thinking up some ideas to better enhance my level, namely the assets and symbols in the level that can help the players solve the puzzle.
My main and probably only puzzle is 'find a key, unlock the door'. Which I admit is very basic and boring. The only thing I have going for it is to make the keys and doors look 'pretty'. I thought of other things like themes behind rooms- which would contain the next key to the next room.
I've put together a sort-of moodboard to help me decide on these little themes:

There cartoon ones, short, long, bulky, symbolic, gothic, eccentric, bold and even simple types. I personally really dig the gothic kind, but I think I want to try bring them out, so combining them with a cartoon look should do the trick. Think Kingdom Hearts only not as cartoony!

Monday, 26 March 2012

Special Post!

Here's some cool gifs I made for my Viva, neat aren't they?


Sunday, 25 March 2012

Dissonance Progress Video (Viva 02)

Here's the progress video of my project. It shows my current achievments with some mechanics, though it had to be cut down quite a bit since I'll be using this for my second Viva.

User Interface Concept

Concpet for Scaleform UI

Pause screen

Death screen

Thursday, 22 March 2012

Somewhat Finished Decor of Bedroom

I just wish I had more time, maybe another day and I could do so much more.... off to Leamington Spa I go. Here's the latest shot of the room, it's looking good, the challenge is to get everything else to look as good.

Tuesday, 20 March 2012

Asset Models/Texture no. 2

More assets, and now this is probably where I'll need to stop (although it doesn't mean I definitely will), time to prepare my level and presentation.

Door Frame  Tris: 432

Victorian Frame 03  Tris: 224
Simple Chair  Tris: 468
Simple Bed  Tris: 464
Arm Chair  Tris: 616

Monday, 19 March 2012

Asset Modelling/Texturing Crazy

In preparation for a good second Viva, I've been busting my bottom to get these out as quickly while trying to maintain the quality I try to stand by at all times. It was difficult trying to cut my time, unfortunately I hate it when things aren't as perfect as I wanted them to be, so these are rough- but I'm not done with them yet! I will continue to modify and improve and model more for the final Viva.
Standard Door  Tris: 684
Simple Lamp  Tris: 296
Trap Chandelier  Tris: 1424
Cupid Bracket  Tris: 196
Victorian Frame 01  Tris: 878
Victorian Frame 02  Tris: 166
Morbid Mermaid Candle Holder  Tris: 734

I actually have more models to texture (it's been a very productive weekend), but that will be updated tomorrow.

More to come soon, these will be the last of the batch:
Arm Chair
Victorian Frame 03
Simple chair
Simple Bed
Door Frame
Book case

Thursday, 15 March 2012

Path Node Finding

The path node finding is scripted almost entirely, now I can place as many path nodes in my game level and the monster will randomly choose the destination and head towards it. Therefore I don't need to rely on the MoveToActor kismet.

I cannot take much credit for the code I used to get pathfinding using nodes and scripts. After the pylons were placed into the map, mougli's code worked. So the only problem I really had with it in the first place was a lack of a navmesh. The pylons made everything work!

The code used before to calculated the velocity/speed/distance of the monster when travelling towards the player is now uneccessary. Because of that, I was able to use Mougli's AI Script mentioned in previous posts. Christian Skogen helped me out again especially with two parts of the code that would allow the monster to randomly choose any pathnode on the level and travel to it, of course it has to be within the range of the pylon placed there.

I will explain the additional parts of code here:

I used Mougli's code for AI with slight alterations like changing state names.
Then when it worked and the monster could navigate around corners, I tried looking up a way to call pathnodes into script (my monstersaicontroller). I came across this thread which told me about the arrays. This adds the pathnodes into an Array- a list of data. So then you can begin to use them in script.

simulated event PostBeginPlay()
    local Pathnode Current;

    foreach Worldinfo.AllActors(class'Pathnode', Current)
Then looked up Random function, and vector maths (with much of christian's help). Applied that until I had a AIcontroller class that would make the monster choose random path nodes, navigate and travel to them. The chasing state (chasing the character) is still intact and just contains Mougli's code. Instead of an Idle, I changed it to Patrol, since it would no longer be idle and just copy/pasted mougli's code again.

He explained how vector maths worked so I could grasp the last bit of code. The last part of the code is an if statement- basically IF the distance between the monster and the player is less than the chaseDistance=1000 (which was alterable in the Default properties), the monster would give up and go back to finding patrol nodes.
 This was placed at the end of the Chase state just before 'goto Begin;'
    if (VSize(target.Location - self.pawn.Location) > chaseDistance)
        WorldInfo.Game.Broadcast(self, "Lost player");

About Pylons

I was quite wrong about my 'discovery' yesterday. It seems that Pylons are picky about the ceiling height of your sub/add brush- they don't dislike subtractive brushes at all, as I tested again and it turns out the real issue was the height of the sub and add brushes. If you have a floor and also a ceiling there seems to be minimum height requirement. Which sucks really that I couldn't figure this out sooner. I was left scratching my head until now.

Wednesday, 14 March 2012

Navmesh Alternative or is it?

I tried and tried to impliment the code from the previous post in so many ways, I gave up. I looked far and high for a solution, and finally after four painful hours of self-inflicted mental torture there was a god... I mean,  videos:

Still now I'm not sure why the code from before did not work, but I found that I can at least cheat the patrolling of my monster by using path nodes. Very generously Ben Townley shared me a kismet sequence he discovered last year that could attach a volume to a spawned bot and kill the player. Since I haven't enough time to get a full melee system working, this is a very important alternative for me. Thank you again Ben, you've saved me.
I had also used a 'MoveActorTo' sequence, and it should have worked perfectly but it didn't. At first I thought it was the nature of my AIController code, so I tried replacing everything with premade code (copy/paste). But nothing worked, besides the code I already had, and I had lost it. My housemate tried to calm me down and tried to help me look for anything to do with Pylons (because i had started muttering it and remembered Ed had mentioned it vaguely for navigational meshes). I felt like I looked it up almost everywhere, there wasn't any tutorials out there that would guide me except for the videos above (which were found not by me but my amazing housemate).

I watched it with the biggest feeling of doubt ever, since nothing was working I didn't think this would either. The current UDK version uses pylons with a area distinguished by a cube rather than a shere/cylinder/circle as shown in the video. I tried what the man in the tutorial had done but it gave me an error:
'error:Could not find ground position for pylon - this pylon will not build paths' 
These lines appeared after building paths with the pylon.
... I then tried it on one of the simple premade levels, it worked, the paths built just fine. The floor there was a static mesh, and I took a very big note of that. Next then I had tried it in an empty level with and Add brush and subtractive brush inside, it didn't work...

So I was questioning if it was because it didn't work on brushes period... this made my heart sink very low. But that was stupid, either it was because the brushes had some form of navigational mesh there already and this pylon business was unessessary or I was doing something wrong- or both.

In the tutorial I finally noticed he was using and additive brush, and everything else was actually a static mesh. My level consists heavily of subtractive brushes. Turns out the pylons do not bod well with subtractive brushes... *BEEP*ing hell.
So i tested this again.

It works!! The monster travels to the second pathnode. This may mean I have to do some heavy reconstruction to my level. Sorry if this seemed obvious to you, but I am an incredible script/code noob. :)

Turns out I was wrong again. Check the next post.

Monday, 12 March 2012

Nav Mesh and Step sound trouble

I've progressed a lot, but it seems these two things are something that should be easy but are not for the reason that, I've got a crap load of code already and I don't know how to get it working with new code.

Mougli's Navigational Mesh tutorial
This guy Mougli is no doubt brilliant, but his code is something I would have to try and literally integrate with my own.

The customAIPawn is fine, but the customAIController is hard to impliment, here is Mougli's:

My dilemma is I don't know how to integrate his code into my own. I've tried many things, but alas I don't have enough scripting/code knowledge to do this.
Here is my code, you can see I've started to put in some code, I already have and Idle and Chase state though, and all the inner workings of the speed/velocity of the monster to player. However instead of using this odd 'Go to begin' method, I applied it per 'Tick' which is like a refresh, and probably considered a more stable method (as told by a programmer).

Footsteps trouble shoot thread
The guy who started the thread has solved his problems but I don't know what he means when he explains:
 "Got it working, it seems like the footstep animnotify calls PlayFootStepSound(); already, so all I had to do was setup the playsound functions, and the footstep notify in the Animset."

Maya to MotionBuilder: Importing C3D and mapping Actor

Been asked for help by Neasa, so I thought I'd blog it here, it would be nice for others too, mind you this is super vague and I'm not an expert so I'm just showing how I went about it.
Video Tutorials on Maya to Motion Part 1, Part 2 from adachan1 on youtube.

Firstly, you need to have your animation data from ViconIQ, in .c3d format- or fbx if you've already messed about with it.  You need Maya 2012 if you want to import/export it easily like I did.  Also this tutorial uses the skeleton generated by the MotionBuilder characterisation plugin in maya. So if you have a custom skeleton, I can't help you too much with that.

Open up your MotionBuilder, and for your sake, set the keyboard configuration to 'Maya' so you won't have to relearn all the controls again for MotionBuilder. This means things like the move, scale and rotate tools are all asigned to the same 'W, E, R' keys. 

Settings > Keyboard Configuration > Maya

Importing your Animation Data

In the Asset Browser tab under the 'Resources' area, you can selet useful files here like the Actor dummy. I added a file directory containing all my animation data, so it was easy for me to access. Right click > Add favourite path. You won't regret it.

So with your folder added, you can quickly select your files through this browser. Click and drag the file over, select the 'Import' option.