Himeko Sutori, tactical turn-based JRPG, armies of hundreds of unique characters

Thanks very much udkultimate and Kee Hoon Ahn. I’m slowly getting this game to where I want it to be, one line of code at a time.

Here’s the official February update:

In there we have the world map, enemy armies, transition to combat and back again, plus background music. I think the mix got messed up because I set the music to higher processing priority, and so the music probably got ahead of the timer during a performance hiccup.

In the video I also mention that I had the game spawning around 5,000 pawns, which was slowing down the game. Each character is only a square that adds two triangles to the scene. 10,000 additional triangles shouldn’t make a difference. I used Unreal’s profiler to find out what exactly was slowing down my game, and discovered that most of the problem was with ticking the pawns’ controllers. So I only give controllers to the enemy pawns when they enter combat. The next biggest slowdown was a deproject that I perform on every character to find out where on the screen it is so that I can tilt the 2D character sprites to counteract the camera’s perspective. Somewhere around here I have a long explanation for how I draw the sprites and why I do it that way. Anyway, point is, it involves a deproject and doing it 5,000 times per tick is pretty costly. So I changed that to update only while the character is onscreen. After some other optimizations, the game runs just fine, even with up to 5,000 characters in the game.

At this point the game engine is pretty much finished and I’m going to focus on making a playable campaign.

Nice to watch it all coming together Nathaniel3W…

Keeping up with the monthly video updates, here’s what I have to sum up March 2017:

For the UDK enthusiasts who want to know more about how it works…
The list of available campaigns, along with the campaign name and description, and the level to load in order to start your campaign, are all pulled from an ini. If you want to add a campaign, you just have to add a line to the configuration file.

Constantly learning more about Flash, and I can tell I still have a lot to learn about presenting an attractive UI. It’s coming along though.

Here’s a randomly generated hero who just happens to be old. We now have some more variation in the character portraits with the addition of facial hair, balding, and wrinkles. Most of the heroes will be young, but now the world won’t be populated entirely by shiny anime youth.

I brought down the saturation on the character sprites by about 15. Now the screen is a bit easier to look at. That change was probably the quickest and easiest improvement I made this month. All I had to do was select all of the offending textures, right click, bring up their properties, and reduce the saturation across the whole selections. Also, I got rid of the character shadows. Some SSAO did a pretty good job I think of replacing those shadows.

Cel shading and toon lines (finely tuned now, instead of the solid black smear I had before) help unite the look of the world, making the 3D environment a little more cartoony to match the characters. Still, if you don’t like toon lines, you can turn them off in the options. I finally got around to figuring out how to access the world properties’ postprocessing chain in code, and I apply a MaterialInstanceConstant to tune the Sobel edge material.

Usually your characters will level up on the battlefield, but here we’re using a cheat code to level a character outside combat. The messages used to be displayed on a mesh in the game world. I was never quite content with how that worked, so instead I have various messages (such as damage, level-ups, and some other notifications) drawn in a GFxMovie that renders to a RenderTexture that gets put into an array in the HUD, that the HUD sorts according to distance (so that “closer” textures draw on top), and then finally draws on the screen. I’m going to use the same technique to add combat banter. It’ll be simple now that I know how to do it and now that the system is already in place.

And we finally implemented level-up cards. I seriously made about 100 of these. Seriously. There’s one card for each of your characters’ 18 primary skills, attributes, and elements. Then there are the secondary skills like dodge, block, and critical hit. And now you’ll start the game with just two character classes, and I made 18 cards for each of the other character classes that you can unlock. And then there are leadership skills, crafting skills… maybe that was all. And each card has some lore written in the description. The cards have a texture variable so they each can have unique pictures, but I just haven’t made the cards’ faces yet.

And here’s a preview of crafting in Himeko Sutori. It’s not working yet, but we’re making progress.

We’re getting close to finished. We’re finishing up all of the little details now. I think we can realistically hope to have a simple playable test campaign in a couple more months.

wow your game is really coming along there. I couldn’t get the drift at first.
Excellent little textures there. The trees and landscape add an interesting depth.

Another month, another update. Gamedev sure is a lot of work. Anyway, here’s the latest video showing off crafting, more dynamic combat, and a naked fairy:

Like the town…

Update video for the month:
Interactive NPCs, combat, level-ups, new map, new music, new equipment, new bugs.

We’re calling this campaign an alpha test. Assuming we can put together a functional campaign, we’ll change the name to “Beta” and release it to the Kickstarter backers. Depending on how things go there, we will either launch into Steam Early Access, or keep working and do the full release down the road.

wow hey it’s great to watch your concepts coming together so well into a viable playable game!

But you say new this, new that and ‘new bugs’ lol. Oh the ‘joys’ of making a game XD

It’s been a while since I’ve posted an update here. I’m making a bunch of new battle maps because the old ones were a bit boring. This new batch of maps has more stuff hand-placed instead of dropped in using the foliage tool. They give you more to look at and more tactical decisions to make. I still need to build lighting. I also have some new forest maps to show off, but I need to build the lighting on those. They look really strange without shadows.



Edit: Also, for anyone interested, on the city map, I placed the central buildings by hand. The background buildings I placed using the foliage tool. I turned off random yaw, set the placement density to something really low, like 0.5, and let the foliage tool place maybe 3 different meshes for me. I think those background buildings turned out pretty well. I was considering trying the proc building volume, but this worked just fine for my needs.

How did you do the " Blocked ! " " Damage 50 ", texts thing is it scaleform?

Hey @Neongho. Yeah, that’s all done in Scaleform. Each one is a GFxMoviePlayer that gets rendered to a texture. That texture gets put into an array. The Canvas goes through the array and draws each one. When the movie finishes, it calls a function to remove its texture from the array, and then the movie closes.

These should be the final versions of some of the materials going into Himeko Sutori.

Day/night cycle functionality built into most of the materials. I made the mountains in World Machine, got a splat map and normal map from them and then blended in some textures based on the splat map. The textures are independent of the mountains’ scale, so I can make the mountains as big as I want, and the grass, dirt, and stone textures stay the same size as everywhere else. The cliffs also use triplanar projection and independent scaling.

A closer look at the water:

That water is about 350 instructions to make the water flow in 8 different directions or just sit there, to get the normal vector and blend the flow based on which way is downhill, to switch to a waterfall when the surface is steep, to reflect the sun and the sky (simulated, because as you can see in the top gif, there is no sun or sky), to fade the opacity near the edges, to distort the shallows, to displace the pixels with a combined normal map and bump map (bump saved in the alpha channel of the normal to reduce total texture count) and animate the displacement to simulate waves.

And I got beyond that problem I was having with putting a translucent material on a landscape. The editor used to crash when I would paint layers with a translucent landscape. But now I don’t have to paint layers. All I have to do is sculpt the shape of the water landscape and the water automatically flows downhill.

Can i have a demo already ?

Almost there! Let’s give it another month or two.

Excellent work. Like Cobalt UDK’s grand work, yours has also become an entire country!

Working on a playable test campaign.

Here’s the world map, zoomed in most of the way. When zoomed out, there’s more of a strategic top-down view.

I’ve got some scripted encounters that make a lot of use of Kismet and Matinee.

I’m making some battle maps and trying to make each one unique.

Here’s a forest battle map at night. I think it needs some brighter spots. I’m going to add some blue lights, some cylinders with an emissive material for moonlight rays, and some firefly particles.

Here’s what the map looks like in the daylight. There no change in actual light here. I just change some material instance values and the color lookup table.

And here’s a cave battle map. There’s something wrong with this particular map. Some of the nodes don’t seem to be connecting, which means the opposing armies can’t reach each other. I’m going to try fixing that next.

I’m getting close to having something playable. I think October is finally the month when I release a beta test to a wider audience.

It looks great.
Good luck to you.

Thanks Keehoon! We’re getting close to beta test now…

There was something I thought the game needed: A way of handling the camera colliding into the world, or the world occluding your pawn. This is what I came up with.

I also improved the timing of combat and added some of the new particle effects I’ve been working on.

Fabulous, simply amazing!!!