The final game is due on Friday so I'm spending some time fixing up some issues and adding final features.
One of the problems I've come across is that under the new UI system the canvas overlays everything. I've added some of the block pickups to the win screen scene as a static display for a bit of visual interest. The canvas I've added has a coloured panel and the panel tints everything in the scene, including the static display.
Scene with panel showing the overlaid purple tint:
Scene without panel with no tint:
So the purple tint overlays everything in the scene, which is nice, but I want my blocks to not be purple.
According to info on the 4.6 beta there is apparently a way to change render textures, but I've played with it and can't get that to work. At the moment I'm leaning towards just adding the blocks as an image instead of as 3D objects and change their appearance order in the canvas, which is what I've done with the typewriter text scene and the shadow on the lose screen. It's easier, but not as pretty - the bump mapping doesn't look as good, for one, and we lose the ability to change positions, rotations, etc of the blocks in the scene on the fly. Essentially they don't look like "real" objects when it's an image.
I've also fixed up some of the header text sizing issues we had in the demo presentation, which was basically just a matter of changing the rec transform anchor and stretch points on the text UI.
Currently I'm adding audio to the rest of the scenes - researching reusing the start screen audio and making it not destroy over subsequent scenes (excluding the play scene which has its own audio), which apparently requires using a singleton, which is apparently a touchy thing to learn. So maybe it won't get done by Friday...
Semester 2 Games Design
Wednesday, 29 October 2014
Sunday, 26 October 2014
Game 3 design process (Part 2)
This is a bit of a catch up post as it's been a little while since my last entry.
So from the last point I had a map laid out in Unity and some basic texturing done.
After that I turned over the files to Mitch who added a navmesh to the plane and some simple code for AI interaction, pickups, and a countdown timer.
While that was being done I worked on some of the models required. We needed some toys for pickup items, a monster, and a bed for the end point. Tahlia created an awesome monster for us, so I did some toys.
I started off making a ball shape and UV mapping it with a child-like pattern to look sort of like a patchwork soft ball. That didn't end up looking very good:
So I scrapped that one and just used the beach ball we made for one of our 3D class assessments (minus the landscape, of course):
After that I made some blocks. The blocks were super easy, just a box with a texture applied. The game's very purple in hue so I coloured them quite brightly in contrast. I bump mapped the boxes in 3DS Max, and used Crazy Bump to create normal maps for them to use in Unity:
Once those were done I spent some time on the floor texture to make it fit in with the scene. It was also normal mapped and added in. I normal mapped the stone wall texture as well but for some reason it didn't seem to show up in the scene.
I created a custom skybox and added that in. I made the skybox colour blend with the fog colour to create a seamless effect.
I also started doing the UI at this point. I found a couple of suitably childlike fonts to use and created a custom button template in Photoshop (which was just a crayon style brush in a rough box shape), then put everything together.
I also got the only piece of code I actually worked on up and running (with lots of help from Mark) - a typewriter style text effect for the intermediary screen between the start page and play page:
Then I played around with some audio for the game. I found a nice music box style looping background track for the play scene and some ambient spooky wind noises at Freesound.org, played around with them a bit, and added them in:
Once those assets were done we imported them into the game and started trying to make things work. The UI worked fine. We got the scripts working from one set of game files to the other, with a few variations for the new UI system. We discovered issues importing the monster into the game as the orientation wasn't correct for Unity so required a lot of mucking about to get it fixed. Eventually it worked though and we got a spooky monster happening:
Then we started fiddling with things to make them look and work the way we wanted them to. Little things were added, like some scary monster noises to the monsters. Originally I wanted the monster noise to only play when the monster sighted the player, however that didn't seem to work. We ended up just setting the sound to constantly loop but with a very small audio radius, so you can only hear it when you get close to the monster. It worked out fairly well as you can hear them around a corner but are not quite sure where they are.
We had to play with the time allocated to navigate the maze as well as it's fairly easy to get lost in there. There are no directional markers at all, at first we thought we might add some in if time permitted, but the maze is really quite small and doesn't really need it.
We discovered a fair few issues with the monster AI and the navmesh which we think we have mostly fixed. There's one funny glitch which occurs when the monster catches up to the first person controller - it's scripted to destroy on contact however it doesn't if the first person controller is not moving. It just swings back and forth over the controller until the controller moves, at which point the monster is destroyed. Since the natural reaction on seeing the monster is to move, though, we're hoping that it won't be too obvious.
Tahlia also did a nice piece of artwork which we're using on a few of the screens.
I also added some additional effects to the game - halos for glowy monster eyes, and more halos on the pickup toys, to make them stand out:
The end result is a fairly spooky game:
So we had a quick presentation of the game on Friday. We had some small title size issues but overall it worked quite well, no errors and everything was in it's place. We have some small fix ups and additions to make (random spawn for pickups and monsters, all final artwork, the last few models required, and adding audio tracks to all pages; but otherwise, it's almost 100% complete.
So from the last point I had a map laid out in Unity and some basic texturing done.
After that I turned over the files to Mitch who added a navmesh to the plane and some simple code for AI interaction, pickups, and a countdown timer.
While that was being done I worked on some of the models required. We needed some toys for pickup items, a monster, and a bed for the end point. Tahlia created an awesome monster for us, so I did some toys.
I started off making a ball shape and UV mapping it with a child-like pattern to look sort of like a patchwork soft ball. That didn't end up looking very good:
So I scrapped that one and just used the beach ball we made for one of our 3D class assessments (minus the landscape, of course):
After that I made some blocks. The blocks were super easy, just a box with a texture applied. The game's very purple in hue so I coloured them quite brightly in contrast. I bump mapped the boxes in 3DS Max, and used Crazy Bump to create normal maps for them to use in Unity:
Once those were done I spent some time on the floor texture to make it fit in with the scene. It was also normal mapped and added in. I normal mapped the stone wall texture as well but for some reason it didn't seem to show up in the scene.
I created a custom skybox and added that in. I made the skybox colour blend with the fog colour to create a seamless effect.
I also started doing the UI at this point. I found a couple of suitably childlike fonts to use and created a custom button template in Photoshop (which was just a crayon style brush in a rough box shape), then put everything together.
I also got the only piece of code I actually worked on up and running (with lots of help from Mark) - a typewriter style text effect for the intermediary screen between the start page and play page:
Then I played around with some audio for the game. I found a nice music box style looping background track for the play scene and some ambient spooky wind noises at Freesound.org, played around with them a bit, and added them in:
Once those assets were done we imported them into the game and started trying to make things work. The UI worked fine. We got the scripts working from one set of game files to the other, with a few variations for the new UI system. We discovered issues importing the monster into the game as the orientation wasn't correct for Unity so required a lot of mucking about to get it fixed. Eventually it worked though and we got a spooky monster happening:
Then we started fiddling with things to make them look and work the way we wanted them to. Little things were added, like some scary monster noises to the monsters. Originally I wanted the monster noise to only play when the monster sighted the player, however that didn't seem to work. We ended up just setting the sound to constantly loop but with a very small audio radius, so you can only hear it when you get close to the monster. It worked out fairly well as you can hear them around a corner but are not quite sure where they are.
We had to play with the time allocated to navigate the maze as well as it's fairly easy to get lost in there. There are no directional markers at all, at first we thought we might add some in if time permitted, but the maze is really quite small and doesn't really need it.
We discovered a fair few issues with the monster AI and the navmesh which we think we have mostly fixed. There's one funny glitch which occurs when the monster catches up to the first person controller - it's scripted to destroy on contact however it doesn't if the first person controller is not moving. It just swings back and forth over the controller until the controller moves, at which point the monster is destroyed. Since the natural reaction on seeing the monster is to move, though, we're hoping that it won't be too obvious.
Tahlia also did a nice piece of artwork which we're using on a few of the screens.
I also added some additional effects to the game - halos for glowy monster eyes, and more halos on the pickup toys, to make them stand out:
The end result is a fairly spooky game:
So we had a quick presentation of the game on Friday. We had some small title size issues but overall it worked quite well, no errors and everything was in it's place. We have some small fix ups and additions to make (random spawn for pickups and monsters, all final artwork, the last few models required, and adding audio tracks to all pages; but otherwise, it's almost 100% complete.
Wednesday, 15 October 2014
Game 3 design process (Part 1)
Game 3 is our group game for the semester. For this game I'll be working with Tahlia and Mitch.
We decided for this game, since we really didn't have a lot of time, to keep it fairly simple. Each of us liked the move Labyrinth and none of us wanted to do a shooter, so after a bit of discussion, we determined that we'd do a maze game. After throwing some ideas around, we settled on a child-like spooky theme, a cartoony horror style. We were inspired by the MediEvil games, having played them ages ago, and themes of kids' monsters and the like. Then we realised that Halloween was approaching so it was thematically appropriate (even though I despise the Americanised version of the holiday, especially given we are in Spring in this hemisphere, not Autumn... but we won't go into that!)
So we started looking for some reference images to start off with.
After that we came up with a few more child-like reference points, such as "Where the Wild Things Are", and settled on an overall theme for the game: namely a kid's nightmare. So a little kid is sleeping and finds themselves in the spooky maze. They then need to find their way out of the maze otherwise monsters would get them or something equally horrific. Since it's at night time, there would be a moon. Ideally we wanted to have the moon act as the timer, however we decided to put that as a "maybe" option.
So the game would include child-related objects such as toys and a kid's bed, in a spooky maze setting. We decided that we'd have a timed maze without any damage dealing mechanics, to make it a bit more kid-friendly. We'd include some kids' toys as decorations, and then we decided to actually make the kids' toys friendly pickup objects. The time gameplay mechanic then came back into discussion and we decided to make so that the toys added time to the game.
Because I had used mazes in a first semester game I remembered the site I had generated it from (http://mazegenerator.net/) and went there to generate a bunch of random mazes. This site is amazing as it can randomly generate mazes based on four different basic shapes, a huge range of sizes, and different starting point options; and it generates the maze solution for you as well! So much easier than creating a maze from scratch.
We decided on a delta style maze (triangular based) with a small size and a bottom starting point:
Because it's kid-themed and we needed some additional gameplay elements, we then decided to add some monsters to it dynamically instead of just being the vague threat at the end. Originally we thought that we could have the monsters chase the player, forcing them to lose their way in the maze, however it was later decided that we'd actually have the monsters remove some of the player's time to complete the maze.
So at this point we knew that we wanted the game to be cartoony horror, outdoors, at night, kid themed, with toys and monsters, and a nighmare-y kind of feel.
This is when we put our asset list together - the preliminary version, at least.
After that I started working on making a modular wall in 3DS Max. I started off by following this tutorial: http://vimeo.com/35545046. I found an interesting stone wall texture and used it as the base. The tutorial basically goes by using lines to outline the stone shapes, then converting the lines into polys and quadding them up, then extruding and shaping them. The tutorial actually uses Zbrush to do the sculpting, however since we don't have that I would have just done it in Max.
Right away I discovered that this method was exceedingly time consuming. I think I spent about a full day all together just on getting the lines drawn and the stone shapes quadded out. At this point I realised that the stone all would be enormously poly heavy, which would not be good in the game at all. This was confirmed in design class. So I decided to go back to the original texture I used, change and cartoonify it in Photoshop, and use that as a base with a bump map.
I'll still keep the complicated wall, and probably finish it to see how it looks, I just won't use it in a game. Maybe as a still scene asset.
I used this texture to make a very basic modular wall - essentially just a box, since the texture is tileable on the x-coordinates. I also made end pieces (3 sided cylinder shapes) and cut the end sections of the texture to make materials for those, so they'd line up seamlessly.
I also doodled some quick monsters just to see if I could come up with anything halfway decent:
After that I started working on seeing how the maze would look with the stone walls in place.
Just starting with a basic plane, I added the maze as a base texture for guidelines, imported the wall and end pieces, and started added them to the scene. After a while I added a first person character controller and ran it around to see how it looked.
The walls seemed to work quite well, the placement was a little time consuming but it wasn't too bad. It looked okay from a first person perspective too. The fully detailed walls would have looked nicer, but these ones weren't too bad.
Just to see the how it looked, I added some effects to the scene - changed the ambient light to a purplish-grey colour, added a blue render fog, and the Unity night time skybox. It turned out looking pretty good, as a starting point at least:
So from here we need to add some code to actually make things work (pickups, enemies, timer, etc), make models for the toys, monsters and end object, add some artwork and an interface.
Wednesday, 8 October 2014
Game 2 design process (Part 5)
After the last post in which I mentioned the difficulties I was having with the level, I had played with it some more and ended up kind of breaking it, so I scrapped the level I had started and created a new one from scratch. This new level contained most of what the old one did, just with different code and a new terrain. I was able to reuse the following assets:
- pirate airship (bloater/cutter)
- order tower (with a few modifications)
- order turret
- terrain and model textures
- custom skybox
So as a quick re-design process, I started with redoing the layout of the game. Since full 3D was not working for me, I decided to make the new game as "faux" 3d, so the player will only be able to move in two dimensions, not three. For this, I decided to make a heightmap of the level to import into Unity.
Markers were added to the heightmap to show the flow of the game:
The updated asset list now looks like this:
Game Object Asset List
|
||
High priority
|
Mid priority
|
Low priority
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
We also have to create a texture list so here it is:
Game Texture Asset List
|
||
High priority
|
Mid priority
|
Low priority
|
Cutter:
|
Skybox:
|
Sunflares
|
- sailcloth
(balloon)
|
-
skybox textures
|
|
-
rigging
(rope)
|
-
clouds for
skybox
|
Water texture
|
-
balloon
trim (copper)
|
|
|
-
boat
planking/deck
|
Bullet texture
|
Background animation
textures (birds, etc)
|
-
boat
trim
|
|
|
-
fins
|
Terrain:
|
|
|
-
rock (x 3)
|
|
Order tower:
|
|
|
-
roof tiles
|
Pickup item texture
|
|
-
bricks
|
|
|
-
piping
|
|
|
-
vents
|
|
|
-
supports/fencing/floor
|
|
|
|
|
|
Order turret:
|
|
|
-
sailcloth with
cog (balloon)
|
|
|
-
rigging (rope)
|
|
|
-
gun barrel
|
|
|
-
gun body
|
|
|
|
|
|
After that I imported the heightmap into Unity and started smoothing it to make the terrain I wanted. The import worked well, though was a little high, so I lowered it significantly. It made a good rugged, clifflike terrain, so now the player is flying through the "Cliffs of Despair" to get to the tower.
The custom skybox was then added and ended up looking reasonable. The skybox is essentially a gradient blue square large resolution picture, which was divided using a program called Cube the Sphere. After it was imported to Unity I then took the individual section images and added some clouds that I created in Photoshop. I probably could have done some more work on the clouds, but I was happy with the end result.
With the terrain after I had painted on the textures, I used the free version of Unity water to place over the base, to give the illusion of depth. The free water is not awesome, but it does the job.
I then added the structures I needed - the tower, the cutter (airship), and the turrets.
After that I started working on the code I needed. After a bit of research I ended up using a character controller for the airship, as it is quite simple and stable. The airship was soon happily zooming about my terrain. At that point I discovered a small issue: the airship, moving on two dimensions only, could not access the top of the tower in order to get the pickup object.
I took the tower back to 3DS Max and made a ramp to reach the top of the tower using lofting. I then cut out a portion of the platform so the airship could travel through it, textured it again, and reimported the tower with the ramp to Unity.
After testing it, the airship can now fly quite happily up the ramp to the top of the tower.
I then created an end point for the ship to fly back to after picking up the treasure. This was essentially a non-rendered plane with an image of the pirate logo to return to, setting off a trigger event to load the game over screen.
I then started working on code for the ship to be able to pick up the treasure, be affected by turret bullets, etc. At this point I started having issues with the ship as the character controller has conflicts with collisions and triggers, etc. I spent a fair amount of time working out some resolutions including OnControllerColliderHit (which didn't work), using layers (which didn't work), removing the character controller and reverting to normal movement with a rigidbody for the airship (which didn't work and added additional problems so I removed it again), using separate collision boxes for the end point and the tip of the cutter (which didn't work).
At this point I gave up on getting that to work and went back to adding some effects to the game. I added particle effects to the vents on the tower and one to the treasure pickup item. I had wanted to make the pickup particle effect turn off when it was picked up, but that didn't happen as the trigger event didn't happen. I also added a render fog effect, so now the terrain doesn't look quite so stark.
The final updates I made to the game was getting the UI working using the new Unity UI options. This worked perfectly first go, so I was pretty happy with that. I used the clouds I'd created as a background, made some fancy text, set up the buttons and imported a nice font to Unity for the button text, and away it went.
I did one build and realised that, since trigger events weren't working, I had no way to exit the play screen. So I added another button to go back to Start.
After that, I had to rush into class to get the game handed in on time. At this point the game had working UI, a level, and a moving player, but no interactions due to the difficulties I mentioned above. So essentially a not fully functional game, which I was disappointed about, but I think I didn't do too badly given I pretty much did it all the night and day of handing it in.
Things I would add to/ fix in the game:
- an "about" page to explain the story behind it
- get the triggers working so health was affected, turrets shot properly, pickup could be picked up, and end point could be reached
- add audio (there is none in the game at present)
- animate the UI (moving cogs)
Subscribe to:
Posts (Atom)