Thursday, June 13, 2013

Update #2 - Menu, Visual Improvements

This is mostly an incremental update. Apart from the menu map, which is still a work in progress, all the other changes have been small.

1) I added a 256 units-cubed post processing volume to the Kanto map, had it teleport to the player upon spawn, and attach itself to the player. The volume is set to colorize by (1.1, 1.1, 1.1) and have a DOF effect of (min:0.3, maxnear:0.3, maxfar:0.5). This gives the effect of soft lighting, which seems more appropriate for these types of games by removing the hyper-realistic look (which Pokemon never went for). At the same time, it still preserves detail in the textures and materials.

2) Slightly modified the regions in the Kanto map. The harbor (Vermillion, Pallet, and Fuchsia) is now in it's own streaming level. There is basically nothing else on the harbor except for the coastal landscape components, which makes for fast streaming. Having the harbor in its own region makes it so that the harbor is always visible no matter what side you are looking at it from. Looking from Pallet-side, you can see Vermillion and Fuchsia's coasts, all without having to actually stream in the Vermillion and Fuchsia regions.

3) Rock Tunnel is being redesigned/scaled, to better fit in with the Kanto map.

4) Menu level created. It has a set of 8 'scenes', each one inspired by a Pokemon type. The scenes will load randomly each time you enter the menu. This was achieved in Kismet via random int generator, comparators, and toggles attached to 8 camera actors. Taking advantage of some good camera angling and scene placement means all the scenes can be present in the same level, and not obstruct each other. No global post-processing has been added to this map yet, and the assets are all stock UDK. Also, not pictured is a rock static mesh particle system that isn't finished yet. It will be added to the rockslide scene on completion. The entire rockslide scene is still a huge work in progress. Using Adobe Flash to design it, a menu GUI will eventually be displayed over the level.

- Thunderstorm (electric)
- Mountains / rockslide (rock)
- Desert (ground)
- Forest-Fire (fire)
- Waterfall (water)
- Tall Grass (normal)
- Icy Mountains (ice)
- Jungle (grass)

General map with all scenes

Forest fire

Icy mountains

Thunderstorm

Waterfall

Rockslide

Tall grass

Desert

Jungle

Kanto with soft-lighting effect

Kanto without soft-lighting effect

Sunday, June 2, 2013

Rock Tunnel - 06/01/2013

The Rock Tunnel is currently very rough. The actual path is still being blocked out, but it will be approximately 2250 ft x 3000 ft when finished. The tunnel hasn't been distorted in the Z axis yet.

The tunnel consists of decagonal cylinders transformed and welded together. The modifiers applied are relax, noise, and turbosmooth, although the ordering will likely change, as other modifiers are added.

In testing, the tunnel is too small right now, and will likely be scaled by a small factor to increase the overall size, and to prevent overcomplication of the route.

Via Kismet, a flashlight is toggleable, as well as a Flash like effect, which will eventually be implemented via a pokemon with the move. The flashlight is currently just a spotlight attached to the actor, with a narrow cone (20 degrees outer, 15 degrees inner). The Flash effect is achieved with a moveable pointlight attached to the actor, with a radius of 1536 units.

The material on the tunnel and the landscape ground is a combination of stock UDK rock textures. With the normals flipped, the mesh is transparent from the outside.

Rock Tunnel unlit player perspective
Rock Tunnel unlit aerial view
In game, flashlight used
Flash activated
Basic polygon structure
Structure with modifiers added

Kanto - 06/01/2013

The Kanto map is made with a main landscape plane (4033x4033, 63 quads per section, 4 sections per component, 1024 components), which is approximately 36 square miles in real world units. To travel from Pallet to Indigo Plateau, running, with the default utgame character, takes approximately 15 minutes. This time will increase once Viridian Forest is added, as well as random Pokemon and trainer encounters.

Using the erosion tool, I mapped out the general shape of the peninsula, then subtraction eroded away the ocean. After that, I took the smoothing tool to the entire landscape to give it a more natural look, as opposed to sharp, jagged features. The main mountains (near Indigo Plateau) are kept in the consistent level, as is Cinnabar volcano and it's smoke plume. Everything else is streamed.

There are also two mountain landscape planes. These are streamed in when the player is near the respective coasts so that the whole peninsula doesn't just seem to turn into ocean. They give the illusion of more land beyond the boundaries of the main landscape.

Right now, there are placeholder city static meshes that mark the location of each city. These meshes came with UDK, and will eventually be replaced with static meshes that mirror the respective cities.

To stream, the landscape was broken down into large regions. The landscape regions were then moved to streaming levels. Each region generally has a city associated with it (except for routes 12 and 13). The regions are streamed in via trigger volumes and level stream nodes in Kismet. I used these as I felt they offered more control than a level streaming volume. The volumes overlap, so when you're in one region, it will begin loading nearby regions.

Each city also has it's own trigger volume (I used octagonal volumes for this). The trigger will load the city's map, and unload the city's static mesh placeholder, essentially swapping them.

To prevent noticeable streaming occurring (levels popping in and out), an exponential height fog was added.

The materials currently used are all stock textures that came with UDK. They were added to a new material, added to the landscape, then roughly painted on.

The three main landscapes of Kanto (no ocean plane)
Viridian's trigger volumes
The mountain trigger volumes.
Exponential height fog and city placeholder meshes

Saturday, June 1, 2013

Update #1 - Welcome!

This blog is being used to document my work. It will be updated regularly (although I'm shooting for about once per week).

I've been working on a 3D Pokemon Game in UDK for about a week now. This is something that I've been wanting to do for a while, mostly as a learning experience. I'm a programmer, but I've never made a game before, let alone done 3D design work and texturing. I'm literally learning as I go. As I learn new things, I might revisit a part of the project and update it to be better. This is a solo effort, because, as I said, it is a learning experience. Realistically, I know this will take a long time to finish, and due to Copyright reasons, the game will never see the day.

The reason I chose Pokemon is fourfold:
    1) I'm a fan. I know the game/cartoon fairly well from my childhood (at least the first generation ones ca. 1998-2000). I can draw from that experience so that the game can be much richer in story and gameplay, as opposed to me coming up with a new IP. I'm many things, but a good writer is not one of them (which begs the question, why am I blogging?).
    2) The Pokemon universe is HUGE: 150 (maybe Mew, as well) individual creatures to craft, dozens of NPCs to create, and each one is distinct in its form and function. This will force me to learn to animate humans, serpents, aquatic creatures, quadrupeds, insects, flying creatures, and even giant spheres (how does a Voltorb walk?), not to mention the OOP nightmare of programming them all.
    3) There are soooo many FPS games nowadays. I could follow suit and make one myself, and it would probably be much easier, but why not take the opportunity to be different?
    4) Nintendo/Gamefreak are really dragging their feet in making a game like this.

This game is not just a direct translation of Red/Blue to a 3D platform. It combines parts of the first games, parts of the cartoon, and lots of elements of open-world RPGs. I'm designing it as an open-world first-person RPG, and with that in mind, the core gameplay dynamics and story will have to change. How? I'm not too sure of that yet. But I'll let you know.

This is not meant to be super-realistic. It's still Pokemon, so I will try to maintain some of the core visual aesthetics of the world, while bringing them into the third dimension.

You're welcome to leave comments and suggestions. Videos will come after some more progress has been made. Hope you enjoy!

Currently Done:
- Large Scale Landscape (map)
- Streaming the map

In Progress:
- Pokemon Center (rough)
- Ash's house (rough)
- Rock Tunnel mesh (~40% done)

Still To Do:
- Craft smaller geographical features (hills, lakes, ponds)
- Water materials (Ocean and freshwater)
- Rock Tunnel map
- Mt. Moon mesh
- Mt. Moon map
- Safari Zone mesh
- Safari Zone map
- Create city meshes for distance viewing
- Create geographical meshes (cave/tunnel entrances)
- Create all 150 Pokemon
- Create foliage
- Create NPCs (Joy, Jenny, Gyms leaders, Rocket/Giovanni, trainers, townspeople)
- Create miscellaneous meshes (furniture, PCs, items, badges, etc...)
- Create buildings
- Program actor classes
- Populate maps with foliage, trainers, and Pokemon spawn points.
- Implement core game logic
- Improve materials/textures
- Add blocking volumes for map barriers
- Build large distance meshes (bridges, SS Anne, Viridian Forest)
- Implement Pokedex
- Map lighting
- Local climates
- Soundtrack
- Dialogue
- Write story
- More that currently slips my sleep-deprived mind...

Ash's House
Cinnabar Island, in game.
Kanto overview
Pokemon Center
Rock Tunnel