Thursday, September 18, 2008
Level Finished
I officially finished the level on 9/16 and have uploaded it to my website and FileFront.com under the name DM-FeatureCreep. I also heard back from Gamespot and my first level, Ebb, is now on the site (Feature Creep Download).
Tuesday, September 16, 2008
Note to Self
I've noticed that map sizes significantly decrease in size if lightmapping was occupying a large portion of that size. My first try was a level that went from 68.9MB (uncooked) to 45.5MB(cooked). In the newest revision I decided to be more liberal with the lightmap sizes, and got a map that was originally 77.5MB(uncooked) to get down to 47.9MB(cooked). If you were wondering about the math behind that, it's:
45.5MB / 68.9MB = .66
47.9MB / 77.5MB = .62
.62 + .66 / 2 = .64
This means that the lightmap size after cooking decreases by roughly 34%. Pretty nifty, indeed. I will definitely be using this formula for my next map to calculate file size :).
45.5MB / 68.9MB = .66
47.9MB / 77.5MB = .62
.62 + .66 / 2 = .64
This means that the lightmap size after cooking decreases by roughly 34%. Pretty nifty, indeed. I will definitely be using this formula for my next map to calculate file size :).
I went ahead and cooked my level at my school (thankfully they have Unreal 3). I had decreased the lightmap resolutions all around so that my map was around 70MB... a reasonable number. Whenever I cooked it, the number dropped to a very pleasurable 45MB :)! This got me to go back and scrutinize areas that had discrepancies with lighting (in the form of whitish bands in between 2 side-by-side meshes). Right now I have increased the lightmap resolution of the most important areas, and it seem that a lightmap of 64 and above is recommending for lightmapping -- anything below isn't worth lightmapping, as it makes the mesh look even more screwy than before. I will be recooking the map later today and hopefully it will be released today.
Monday, September 15, 2008
I've finished the version of my rain/city map. I call it DM-FeatureCreep. I've had one friend play test the level near completion and just had another friend play test the final version. He gave me a couple of small things to change and I've gone ahead and changed those. I've been having problems cook the map so I had to use one of those friends' computer to cook it. The only problem is that he is running the game without the version 1.3 patch, and, when I try to play on my computer, the game shuts down for some reason. This may relate to the previous problem of not being able to cook the map, though.
I've also been thinking of a concept of light up shoes. I know there are already shoes such as the pair of L.A. lights that I had when I was a kid, that flashed red when the wearer steps down, but I am thinking of a more adult and futuristic version. When the user steps down, white light turns on in a line until the whole bottom of the shoe is lit. If the wearer stands in one place for a duration of time -- say, 15 seconds -- the light would, to conserve energy, blink in a pre-programmed pattern and then fade out. I was thinking that this would be a cool dynamic to a survival/horror game where everything is usually under lit. Light could be use to harm or scare away monsters, such as vampires, and so that enemies couldn't get too close to the player (unless they stand still too long :) ).
To execute this, I would plan on connecting a dynamic white light to each foot bone and running a test so that the light would only turn on if the foot was flatly colliding with another collision box (this way, if a player where to kick something or jump next to a wall (and there foot happened to brush against it), the shoe would NOT light up. It would light, though, if the player managed to do a running back flip off a wall or while jumping platforms, etc. I will be coming up with a few concept sketches in a later post.
I've also been thinking of a concept of light up shoes. I know there are already shoes such as the pair of L.A. lights that I had when I was a kid, that flashed red when the wearer steps down, but I am thinking of a more adult and futuristic version. When the user steps down, white light turns on in a line until the whole bottom of the shoe is lit. If the wearer stands in one place for a duration of time -- say, 15 seconds -- the light would, to conserve energy, blink in a pre-programmed pattern and then fade out. I was thinking that this would be a cool dynamic to a survival/horror game where everything is usually under lit. Light could be use to harm or scare away monsters, such as vampires, and so that enemies couldn't get too close to the player (unless they stand still too long :) ).
To execute this, I would plan on connecting a dynamic white light to each foot bone and running a test so that the light would only turn on if the foot was flatly colliding with another collision box (this way, if a player where to kick something or jump next to a wall (and there foot happened to brush against it), the shoe would NOT light up. It would light, though, if the player managed to do a running back flip off a wall or while jumping platforms, etc. I will be coming up with a few concept sketches in a later post.
Thursday, August 28, 2008
Past Deadline
Wow! Long time without updating but not long since I've been working: everyday I have been pouring more work into this level. I had set a pretty tight deadline on myself when I started this new project (which I calculated from the amount of time it took to complete the last level). Seeing how this level is exceptionally larger and more detailed, I have already passed the deadline by a week.
Here is a quick overview of what I've accomplished:
8/28 - Started adding sound
8/23 - Scratched the surface of adding pickups. Decided to save for once other areas were complete (I was still adding extra entrances in an out of areas)
8/25 - Found out that lightmaps severly increase file size. Too many unnoticeable meshes were being lightmapped or had too high of a resolution. I decided to limit lightmapping mostly to objects that had lighting hitting them. Objects that had silhouettes cast from other objects have the highest resolution.
8/27 - Added extra side entrances into garage, built a huge cull distance volume that covered the entire map, added post processing
8/28 - Added animated ground fog planes, finalized boundaries (which were kept at unlit BSP for the longest time), found out that when multiple players were added the current car system would only kill the player (not npcs) -- had to fix in Kismet
Current work that needs to be done:
- Find any holes or descrepancies in blocking volumes or static meshes
- Finish refining the interior of the main building, while making it more open all around
- Continue to optimize lightmap resolutions. Current file size = 90MB, desired file size = 50 - 70 MB
- Add pickups and balance player flow
- Finish scripting any additional cool features
- Surround level with kill volumes
- Add rain static mesh
I'll give myself another week to finish. For now, here are some screens of my current progress:







Here is a quick overview of what I've accomplished:
8/28 - Started adding sound
8/23 - Scratched the surface of adding pickups. Decided to save for once other areas were complete (I was still adding extra entrances in an out of areas)
8/25 - Found out that lightmaps severly increase file size. Too many unnoticeable meshes were being lightmapped or had too high of a resolution. I decided to limit lightmapping mostly to objects that had lighting hitting them. Objects that had silhouettes cast from other objects have the highest resolution.
8/27 - Added extra side entrances into garage, built a huge cull distance volume that covered the entire map, added post processing
8/28 - Added animated ground fog planes, finalized boundaries (which were kept at unlit BSP for the longest time), found out that when multiple players were added the current car system would only kill the player (not npcs) -- had to fix in Kismet
Current work that needs to be done:
- Find any holes or descrepancies in blocking volumes or static meshes
- Finish refining the interior of the main building, while making it more open all around
- Continue to optimize lightmap resolutions. Current file size = 90MB, desired file size = 50 - 70 MB
- Add pickups and balance player flow
- Finish scripting any additional cool features
- Surround level with kill volumes
- Add rain static mesh
I'll give myself another week to finish. For now, here are some screens of my current progress:
Thursday, August 21, 2008
Level Update
I've been experimenting lately with lightmapping meshes. By default, Unreal has every static mesh defaulted to override to a lightmap resolution of zero -- which isn't good for shadows cast by other meshes. I've been trying to push the lightmap value at a pretty high amount (usually 128-256 for each mesh), and leave meshes that are farther away or not seen by the player with no lightmapping. A good rule of thumb I've developed is to use a higher resolution on horizontal surfaces that will be walked on by the player and have more shadows and lights hitting them overall. For vertical surfaces, such as walls, I try to use a lower lightmap value (the exception to this is if there is a hanging wall light that is casting a dominant shadow).
Another fun aspect I've begun today is adding sound. I actually knew very little about sound for my last level, but managed to mix and match different ones in certain areas to get the right feel. Now, I'm more comfortable mixing custom sounds with the sound editor that have a much better result. For instance, I made a randomly generated thunder sound that randomly pairs with another thunder sound -- so there is always two thunder noises at once. This adds a lot more depth and the randomness is for realism. Once I add a new element it always inspires me to add another, so I will most likely have flashing lights to simulate lightning that will be synchronized with each thunder noise.
There was a sound that I've been meaning to add for a while and finally got to it today: the sweep of air and rumbling engine of a passing car. I have observed cars during the rain before, and they make a loud hissing noise from the tire tread quickly spraying water particles everywhere into a fine mist. I wasn't able to do this with a KActor, as there doesn't seem to be anyway to attach a sound to a dynamic object and have it movable. For this, the interp Actor, a.k.a "Mover" was perfect. The player now has a sound clue as to when a car is coming down the road and won't feel as cheated when one hits them from behind. I am also thinking of adding a trigger to honk at the player while they are in the street. Now I have to focus on adding a little more light to spice things up in darker areas, fill any gaps I probably have overlooked with static mesh, add decals for variation on larger surfaces, and add small amount of particle emitters (in which I presently have the least knowledge of).
I have marked item pickups with notes and am not too concerned with them at the moment. I have a pretty clear idea in my head where each will work best, and as the level has been changing gradually as I began to add more detail, logically it would be best to hold off on any placements at this time. Player flow and aesthetics are my main focuses at the moment. The level should be done in a week from now :).
Another fun aspect I've begun today is adding sound. I actually knew very little about sound for my last level, but managed to mix and match different ones in certain areas to get the right feel. Now, I'm more comfortable mixing custom sounds with the sound editor that have a much better result. For instance, I made a randomly generated thunder sound that randomly pairs with another thunder sound -- so there is always two thunder noises at once. This adds a lot more depth and the randomness is for realism. Once I add a new element it always inspires me to add another, so I will most likely have flashing lights to simulate lightning that will be synchronized with each thunder noise.
There was a sound that I've been meaning to add for a while and finally got to it today: the sweep of air and rumbling engine of a passing car. I have observed cars during the rain before, and they make a loud hissing noise from the tire tread quickly spraying water particles everywhere into a fine mist. I wasn't able to do this with a KActor, as there doesn't seem to be anyway to attach a sound to a dynamic object and have it movable. For this, the interp Actor, a.k.a "Mover" was perfect. The player now has a sound clue as to when a car is coming down the road and won't feel as cheated when one hits them from behind. I am also thinking of adding a trigger to honk at the player while they are in the street. Now I have to focus on adding a little more light to spice things up in darker areas, fill any gaps I probably have overlooked with static mesh, add decals for variation on larger surfaces, and add small amount of particle emitters (in which I presently have the least knowledge of).
I have marked item pickups with notes and am not too concerned with them at the moment. I have a pretty clear idea in my head where each will work best, and as the level has been changing gradually as I began to add more detail, logically it would be best to hold off on any placements at this time. Player flow and aesthetics are my main focuses at the moment. The level should be done in a week from now :).
Thursday, August 14, 2008
New Level
I've been meaning to post my current progress on a city map that I've been working on for Unreal 3. I gathered a lot of my inspiration from the building in Home Alone 2 where all of the traps were set up. I really didn't have a base floorplan for this one, as I wanted everything to focus around the main building that would be multi-story. I first blocked out the building (perhaps in too much detail, as I currently I have been having to delete a lot of BSP. I then thought of a cool mechanic to act as a border: having a street with passing cars that would hit the player as they crossed the line. After play testing this multiple times, it seemed unfair that a car would fly out so fast at the trigger of the player, which was both frustrating and unrealistic. Because of this, I decided to make the cars begin moving as the level begins. It would have been repetitive to have just one type of car at the same speed and the pattern would be easily spotted by the player and thus break the immersion. For this, I developed a complicated system in kismet that randomly chooses 1 out of 4 cars that will pass by, randomly pauses in between, and each have a different speed for variation. This seems to work really well was worth the effort.
Next, I wanted to have the same effect on another part of the level to really make the city feel alive. I copy and pasted the code and altered the matinee animation so that the cars would accurately travel a long, winding road in the distance. This may have been unnecessary, since the road is not easily seen by the player, but it really adds to the depth of the area "beyond" the play field (I hope players notice this one).
Taking inspiration from another amateur mapper's technique of building levels, I used a transparent grid texture on most of the BSP of the level (except for floors) so that I could see if walls were snapped correctly and to let me have more freedom in placing static meshes. It seems that a realistic level relies heavily on static meshes opposed to bsp these days, as opposed to older generations. Also, I've been doing a lot of research into Unreal's automatic occlusion that each Static Mesh provides. This greatly increases framerate: as a static mesh will not be drawn on screen if the player's view is blocked by another object. This does not seem to be the case with BSP.
From here, I began placing meshes and had previously came up with a water-overlay texture that I thought would be perfect in a nighttime city setting. What better for a Wow factor than water flowing on nearly every texture? This has been a long but rewarding process in learning the ins and outs of materials in Unreal. I have a better understanding of the use of instancing and how slight variations can be created in the blink of an eye.
After having most of the level blocked, I noticed that there were too long of stretches in the open areas on either side of the main building. I decided to add some flare by having a huge billboard (that's main purpose is to occlude) right in the middle of the alley. I had to make it have a purpose and narrative, so I thought it would be cool if it had fallen and crashed into one of the buildings. This would cause a lot of rubble, of course, so I took account by adding mounds of debris (the other section still has a framerate drop and I'm cycling through feasible means of occluding the insane amount of static meshes in that area.
After having water flowing and static meshes placed, I still thought the level could use a little more "umph." This is when I noticed that none of the levels in unreal have lit windows. This isn't the destroyed post-apocalyptic village like in unreal: it is a living, breathing metropolitan area. I had a couple of different lights in windows that I've noticed from observing houses at night: lights go on and off in certain rooms, stay on in others, tv's flash blue erratically, and occasionally there will be a party with a flashing strobe light (I have used these sparingly, in areas that would serve as clues to guide the player).
Yesterday, I noticed one building off in the corner getting no love. I decided to pamper it, then, so I proceeded to make it an abandoned building with boards and all. I then thought it would be nifty to make it haunted, so created a script to make the windows glow red and would add a screaming voice once the player got too close. This seemed fun but a little over the top, so I made the color transition as if an explosion were being set off: either by other npc's in the distance (it is a war, after all), or by construction workers using C4 to slowly destroy parts of the building.
Here are the screens of my progress:
























Right now I have most of the dressings of the level with mostly all of the close-encounter static meshes in place. What's next will be lighting, and sound, item placement, and bot pathing (probably in that order). This has been a bigger project than I had expected, but I like to finish the ambition that I have set for myself. The level has nearly evolved out of a mere Deathmatch, and would probably serve as a good CTF or single-player level.
Next, I wanted to have the same effect on another part of the level to really make the city feel alive. I copy and pasted the code and altered the matinee animation so that the cars would accurately travel a long, winding road in the distance. This may have been unnecessary, since the road is not easily seen by the player, but it really adds to the depth of the area "beyond" the play field (I hope players notice this one).
Taking inspiration from another amateur mapper's technique of building levels, I used a transparent grid texture on most of the BSP of the level (except for floors) so that I could see if walls were snapped correctly and to let me have more freedom in placing static meshes. It seems that a realistic level relies heavily on static meshes opposed to bsp these days, as opposed to older generations. Also, I've been doing a lot of research into Unreal's automatic occlusion that each Static Mesh provides. This greatly increases framerate: as a static mesh will not be drawn on screen if the player's view is blocked by another object. This does not seem to be the case with BSP.
From here, I began placing meshes and had previously came up with a water-overlay texture that I thought would be perfect in a nighttime city setting. What better for a Wow factor than water flowing on nearly every texture? This has been a long but rewarding process in learning the ins and outs of materials in Unreal. I have a better understanding of the use of instancing and how slight variations can be created in the blink of an eye.
After having most of the level blocked, I noticed that there were too long of stretches in the open areas on either side of the main building. I decided to add some flare by having a huge billboard (that's main purpose is to occlude) right in the middle of the alley. I had to make it have a purpose and narrative, so I thought it would be cool if it had fallen and crashed into one of the buildings. This would cause a lot of rubble, of course, so I took account by adding mounds of debris (the other section still has a framerate drop and I'm cycling through feasible means of occluding the insane amount of static meshes in that area.
After having water flowing and static meshes placed, I still thought the level could use a little more "umph." This is when I noticed that none of the levels in unreal have lit windows. This isn't the destroyed post-apocalyptic village like in unreal: it is a living, breathing metropolitan area. I had a couple of different lights in windows that I've noticed from observing houses at night: lights go on and off in certain rooms, stay on in others, tv's flash blue erratically, and occasionally there will be a party with a flashing strobe light (I have used these sparingly, in areas that would serve as clues to guide the player).
Yesterday, I noticed one building off in the corner getting no love. I decided to pamper it, then, so I proceeded to make it an abandoned building with boards and all. I then thought it would be nifty to make it haunted, so created a script to make the windows glow red and would add a screaming voice once the player got too close. This seemed fun but a little over the top, so I made the color transition as if an explosion were being set off: either by other npc's in the distance (it is a war, after all), or by construction workers using C4 to slowly destroy parts of the building.
Here are the screens of my progress:
Right now I have most of the dressings of the level with mostly all of the close-encounter static meshes in place. What's next will be lighting, and sound, item placement, and bot pathing (probably in that order). This has been a bigger project than I had expected, but I like to finish the ambition that I have set for myself. The level has nearly evolved out of a mere Deathmatch, and would probably serve as a good CTF or single-player level.
Subscribe to:
Posts (Atom)