Wednesday, May 21, 2014

Trying out UE4.

So now that the Uni is over I have some time to test out some of the software that has come out in the past few months. Including UE4. Especially UE4.
They've changed a lot of stuff in the editor, but overall it is still Unreal we all know and love. Well, at least I do. So far it is very pleasant to work with. I've modelled some stuff and set up a simple scene. Did some sculpting in order to refresh my ZBrush skills as well.
Here's how it looks so far with just a plain flat material.

Can't wait to get to texturing all this stuff. Node-based material editor is the best thing that happened to game development since in-editor game previews.

Tuesday, May 6, 2014


Here's the last update on the FMP. The last week or so was quite busy since I was trying to finish all things and bring the level to completion. The old buildings looked too monotonous since there were only two sets, so I've spend a couple of days making a third one. It is deliberately more gray and blocky than the first two in order to be more versatile in reagards to placement opportunities. The fourth building in that old square still consists of parts of the other sets, but I've replaced the materials with different coloured ones. Some additional facade decorations have been made as well. Existing decorations have been improved by getting a baked-in ambient occlusion maps.
Now, having more building modules, I have assembled a slightly more believable background in the inaccesible areas. It doesn not look like the same building copied and pasted around anymore.

A lot of smaller assets have been created to fill the scene. I've added pallets of bricks and cement bags to the areas with scaffolding. They serve both as vision occluders and additional stuff to look at.
A small adition to the futuristic area is the cleaning robot. It didn't come out as good as I wanted it to be, but still is a nice little point of interest. I've also added some signs and an ad poster. The latter looked a bit out of place, so I decided to place it only in the places where it is not very visible.
In order to breathe some life into the scene, I've decided to add some movement. Now there are seagulls circling around in the sky. From technical point of view, they are just planes with a picture of a bird, animated to continuously move in circles. There's also an animated vane on the spire of the old building extrusion, but it is less noticeable.

Some more movement is added by the falling leaf particles next to the trees. I've based the system on the particle that comes together with Cryengine, tweaking the values and changing the used texture to mine.

Other important part of immersion is sound. I've used some sound files that come with the editor. I'm not getting a degree in sound engineering, so I hope this is fine? Anyway, I've added randomized seagull calls, water sound next to the pond, general ambient wind, as well as cloth fluttering sounds. At least the scene doesn't seem to be dead when you walk around it.
And probably the last thing is the camera setup and video output. The work with trackview is enjoyable, however apparently it is impossible to get the render output rght and without any issues straight away. Like most things with Cryengine, nothing is easy and straigtforward.

So, here are some final renders and the video, enjoy.


The project is far from ideal. I definitely have taken on more that I should have. I had to take many shortcuts in order to get so much stuff done, and this means that the quality is sacrificed. Optimization is nonexistant, and the debugger screams at me with many warnings of exceeded budget.
Ideally, materials have to be reworked altogether in order not to have several duplicates. I am so used to UDKs system where you assign materials to IDs of each model that the way it is done in Cryengine seems very inefficient now.
LODs don't exist in this project. I've originally made all individual meshes in such a way that most of them are sub 1000 triangles, and cutting out any would distort the shape too much. However, there are still around 10-20 meshes which could benefit from creating a lowew-poly version of them. I simply did not have time for that, and performance seemed okay.
And while I get decent FPS even now, I can see how I can nearly double that by spending two weeks on optimization.
In any case, I am sort of glad that I've decided to take on such a large project. First of all, the fact that I could alternate between modern and old assets allowed me to not get bored of doind the same thing for nearly four months. This also allowed me to use the full spectrum of techniques that I know - sculpting, image-based texturing, spline and poly modelling. I even had a chance to make some simple animations. At some point in my life I would like to spend a couple of years making my own game with a small team, so the lessons I have learned will definitely be increadibly useful when building something even bigger than this.
Planning was rather funny. I tried to schedule what kind of stuff to do quite early in the production, but most of the plans had to be rearranged as priorities shifted. I'll have to come up with something when planning my future environments to minimize the rescheduling.
Other than that, this was quite interesting. Yes, I had periods when i was just too tired and bored of this, but generally it was rather fun. A great excersice in modularity. However, the next thing I'll do will probably be something small but detailed.

In creation of this project the following resources were used:
Cry Dev forums
DMUGA facebook pages
3dmotive tutorials
Eat 3d tutorials
Polycount forums
Varisous tutorials on Youtube
Various small blogs and forums
Help from the coursemates and tutors

← Previous post

Friday, April 25, 2014

Almost there.

This is probably the last update before finish, since we only have 11 days before submission. So without further ado, let's get this blog up to date.
The past couple of weeks I've spent working on the futuristic area. Most of it was already modelled, but I've made a lot of small tweaks, as well as adding new stuff. Obviously, the texturing was the main issue. In real life modern minimalistic building can have a completely plain, white surface, and this will work pretty well in correct lighting. Games, however, are still far away from realistic realtime global illumination, so this kind of plain material will look absolutely flat. So I settled on a couple of variations of concrete.

A new addition to already existing abundance of curves is the abstract sculpture in the central plaza.
In order to break up the clean whiteness, I've decided to add a bunch of organic stuff - rocks, grass, waterlilies. If I'll have some time, I'll add fishes to the pond as well.

Distance buildings don't look exactly as I wanted them to be, but they look detailed enough to serve as a fairly neutral background. Thre are 5 or so models that I've rotated and scaled in order to create this composition.

I still want to place more decals to add some dirt, as well as make the areas look more unique than just a bunch of surfaces with tiling textures on them.

Some funny things have occured as well. I was experimenting with wheteher it is possible to make a dynamic puddle using the dafault water shader. Turns out it's not. But there is an increadibly interesting glitch that occurs if you try to apply a water volume material to a custom plane.

Applying a solid decal messed up the look of the bricks. I've solved the issue by cutting out the bricks, so it's slightly better. Limits usability though.

Another issue that I'm still experiencing and can't find how to solve is some weird shadow behaviour. Basically, as the player moves around shadows that are supposed to be solid spaz out and let some light through. There are some issues with sun shadow casting range, where it works fine in some areas abut not the others. So far no solutions that I've found online work, so I'm out of ideas.

I plan to spend the last week getting the old area in order, adding some stuff, changing the existing things. A lot of stuff still doesn't have collision yet, so there's that. Plenty of work to do, but it should be fine.

← Previous post Next Post

Thursday, April 3, 2014

Area population

I've spent some time populating the old area. Now I want to move on to the futuristic area, since it's completely empty. Some assets that I want to make are going to be reusable, so it should all work out in the end.

A very major issue I'm having at the moment is the fact that decals refuse to project on brush geometry. They do project on flat collision and terrain.
Hopefully I'll be able to fix this, or I'm screwed.

← Previous post Next Post

Sunday, March 9, 2014

Rowing, rowing down the stream.

I did quite a lot of different things in the past two or so weeks. For one, I tried to sort out the background of the level. Originally, I planned to have just planes with pre-rendered images on them, but it did not work that well - they were obviously flat. So I replaced them with some simple models.

As you can hopefully see, I refined the modern plaza area as well. I assume I'll be able to texture the area soon.
Most of the old buildings are textured now, but still I need more meshes to break up the area.

Another nice addition is the trees. The foliage movement was a bit tricky to work out. Three Vertex Paint modifiers stacked together and used as RGB channels? Really, was there no way to make it work with just one?
Some similar issues were happening to the cloth pieces I used for the scaffolding. I don't really get why the editor is so adamant on only working with the materials created in 3ds Max. Why should it care whether the material used for viewport display is physicalized? I understand that there is some optimization going on in the background, but it is very annoying when you have to spend an hour trying to solve some stupid problem instead of doing actual work.

← Previous postNext Post

Friday, February 21, 2014

Yet another update

I probably should write slightly more often, but I keep forgetting about this blog. In any case, since last time I've added some materials to the buildings. I planned to use interchangeable texture sheets originally, but so far it seems like separate tileable materials are a better fit even if there is a small performance hit.

Figuring out the way maps work in CryEngine was definitely fun. I wonder who thought that it was a good idea to save displacement map as an alpha of an empty texture. It used to be an alpha of the normal map, which kind of makes sense, but apparently they wanted it to be a separate map. I wish I could just export specular, gloss and displacement maps as grayscale files, but oh well.
Additionally, there was a lot of glitches with how cubemaps worked. One of the issues included environment map rendering everything flat.

Luckily, this particular issue seems to have solved itself.
Additionally, I changed the museum building slightly, as well as added water. It's not like the player is going to see it a lot, but it is useful for the fly through video.

← Previous postNext Post

Tuesday, February 11, 2014

Level layout

This update is a bit overdue, but better later than never, right? For the past week or so I've been working on getting a semi-final level layout finished. The main issue that people pointed out to me during the presentation was that the idea was not entirely clear yet. So I've built some rough modular dam pieces and the futuristic museum building. Not final models, I'm not exactly happy with them, but at least I was able to set up a level layout.

I plan to make some basic textures for the level so that it is not just white. I'll need to figure out a smart way to set it all up in order to be able to swap the materials around easily.

← Previous postNext Post

Sunday, February 2, 2014

Work in progress

I'm done modelling two out of three sets of main modular pieces. I'm pretty sure I'll be able to finish the last one in next week. Last Friday I found out that all 45° walls are shorter than they are supposed to be, and therefore the wall ring can not be closed. So I had to spend several hours fixing all existing models. The good news is that I can finally make some semblance of a district layout. I'll also will have to find a way to create slopes so that the level is not as flat as it is now.

The plan for the nearest future is to create that layout, finish the last set of modules, add some simple materials, and start making futuristic background assets. I need to break it up slightly, just for the sake of my sanity.

← Previous post Next Post

Friday, January 24, 2014

A bit of 3D

There' has been a bit too much stuff to do besides FMP work, but I believe I've managed to get quite a bit of work done. The building modules were remade to fit CryEngine grid, and some actual details have been modelled. Main issue with these is to make all the pieces fit together without gaps. In the beginning I defined standard size of the individual modules of the house. However, it causes issues with roof, curb and road pieces, as they don't necessarily fit the building in the end. All because of the underlying measurement issues.
In any case, after making some compromises everything fits, and quite a lot of building shapes can be achieved with this kit.

Modelling process is not especially challenging, but rather... tedious? There is quite a lot of repetitive work. It should become much more fun once I get to make decoration elements.

← Previous post Next Post

Friday, January 17, 2014

Engine troubles

I've spent some time trying to make the dynamic lighting work in UDK. Well, it does work, but the quality makes me want to tear my eyes out. I tweaked the various settings of the lights and objects in editor, I tried disabling end enabling features in the .ini file, but all this resulted in choppy, pixelated shadow.
Tired of all this, I exported my pieces into CryEngine. Interestingly enough, I ran into a lot of the same issues with the shadows there - some of them are simply incorrect, some are choppy, and the draw distance quality decrease is very obvious.. But still, everything looks much, much better - modules stick together seamlessly, and there is no chopping of the shadows. And I did not ven tweak the quality yet.

I'm losing the amazing material editor, but lighting is quite important after all. I'm also not that familiar with the editor, so I'll have to catch up. Luckily, I'm not going to have to use the terrain features, as most of my work will consist of importing models in and sticking them together.

← Previous post Next Post

Wednesday, January 15, 2014

FMP update

So, here's what I've been doing in the past couple of days.
I've made some 20-30 modular pieces of a building, all aligned to UDK grid. Stuck them together to make a rough layout of the district.

Here's the problem. Originally, I intended to have dynamic global illumination in order to be able to get various lighting settings for different moods. I remember seeing Mike's FMP last year, and shadows looked quite good there.
Generally dynamic shadows look horrible in UDK. I tweaked the light settings in the editor, and they still looked awful. Some setting did not affect the quality at all. So then I went and changed certain settings in the UDKSystemSettings.ini, and while the shadow quality improved tenfold, they still looked weird up close. And even such an improvement comes at a cost of performance.

So I spoke to Mike about that, and he told me that actually nothing else can be done. Shadows look okay ish in his scene because of the irregular surfaces and textures with a lot of detail variation. They kind of mask the choppy irregular shadows.
I spoke to Mitch, and got similar response.
Then I though - screw that, it'll do with static lighting just fine. So what if I can't move the lighting, I'd rather go for smooth and beautiful shadows. What can go wrong?
Turns out - a lot. In order to create this rough whitebox I used almost 2000 individual pieces. Instances, obviously. Baking the lighting for the whole scene on the lowest quality takes about an hour, and UDK crashes during the lighmap encoding.
Merging the assets into one object using the Simplygon solution would be a cool workaround, but the issue with it is that it also compiles the horrible shadows into the diffuse map. So in order to combine the building into one mesh to decrease light baking time, I have to bake the lighting first. Not even mentioning that merging a small building into one mesh takes about 5-8 minutes.

So, my options are, currently:
a) Stick to the improved dynamic shadows, and hope that they will be less apparent on textured surfaces. Or maybe I'll find a setting combination that looks better.
b) Combine the pieces of the objects in 3ds max. Which defies the purpose of the modular approach.
c) Switch to CryEngine. Which I used a couple of times, but know nothing about some advanced stuff I'll need.

I doesn't look very pretty at the moment.
← Previous postNext Post