CITIZEN – introduction

For the past 7 months I had been working on prototype of an isometric ARPG video game. It’s called CITIZEN, which used to be referred to as 3400AD in this blog. Of course, the game’s concept has evolved drastically since then.

I had completed the prototype about 3 weeks ago, and released an early video sampler of some of the gameplay. I feel that it’s yet to evolve further still, in style and in the narrative.

The prototype was completed in Construct 2, an HTML5 framework. I had originally intended to complete the game in Construct, but for many reasons, I decided to use Unity instead. After all my experimentation, I might as well take advantage of my acquaintance with it.

I had thought of writing my development notes on this blog, but I figured it would be hard to re-factor it for purposes of technical history and documentation, which is the primary role of my development notes. So I created a new Unity-specific development blog specifically for this project.

3400AD: Set concepts

IMG_20160202_224401
Back alley, Letigus, Sleeper Service; Central District, Slum side
IMG_20160203_001809
Spaceport; immigration booth closeup
IMG_20160204_172304
Unknown country scene; Possibly The Hills
IMG_20160204_234250
The Registers (Registrars); Central District
IMG_20160205_222227
SuperRail and Underground Access
IMG_20160205_170430
The Tower (of Power); Central District

These are some of the concepts I’ve been working on which were based on the initial write-up for the idea of the game. The drawings depict several locations that feature heavily in the game, some of which I had no idea how they looked like until I got down to actually drawing them. Each drawing is different, too; the style of construction, for example, varies from structure. After several drawings it felt that there was a little bit more consistent personality in them. But I still have to work that through.

At the end of the day, it will either be 3D models, or illustrations, and I think I can consolidate the styles then.

These series of drawings began as a test drawings for actual adventure game scenes as I expected them to be rendered on-screen. But because there was a big gap in visualising the game thus far, I strayed from this and started to explore how the world actually looked like.

 

Unity: Waypoint Scanning

waypoint_scanning

First stages in implementing the waypoint scanning behaviour in waypoints. The idea is when a waypoint is reached, and this waypoint instructs the robot to scan, the robot picks up the waypoint’s scan points. Any number of ‘scan points’ can be specified by parenting transforms under the main scan point object of that waypoint.

The scanning movement is handled by the RobotMovementClass, not the RobotGameClass, though I’m still feeling it out whether that’s the best solution.

On another note, I’ve modified the Game Pause/Unpause behaviour by using SendMessage to NavMeshAgents instead of using if() conditions on their Update() callback; this is mainly because NavMeshAgent functions like Resume() are unintentionally getting called when they’re supposed to sit still!

3400AD: Lookups

So I had been working in Open Office Calc recently, something I didn’t expect to do more than just table up some values and do simple additions. In fact, I got a little deeper than I thought I would.

Normally, I would weigh up the worth of learning something new with the practicality of getting stuff done. Furthermore, ‘getting stuff done’ is about keeping the flow of the work going so that I don’t get stuck, don’t procrastinate, don’t lose my train of thought. So it’s more than just producing new code, or new assets; it’s about striking when and where the iron is hot.

I had been working on tables in Calc because I use lookups for system rolls such as chance-to-hit and defence. Up to this point I had been simply inputting the values by hand (temporarily hard-coding it in Unity). But I realised that I wanted a way to visualise skill improvements as the player levelled up and apply this visualisation to the actual values. This visualisation was simply being able to draw a curve that represents increase of values over another value (eg skills).

2015-12-03 23_52_32-DisguiseStealth.ods - OpenOffice Calc

The basic premise is that I define a curve, whose Y value is from 0-1, and whose X value represents a real number, which, in the case I had been working on, skill level points of the player. (Thinking about it now, I could have further made the curve generic by using 0-1 on the X as well and interpolate the skill points on the table.) When the curve is defined, I take the min/max values that are pre-defined, map the inbetween values using the interpolation code, which derives itself from the curve.

This was just as much to do with automation as it is with experimentation and balancing; it would take too much time to keep tweaking a list of skill values vis a vis a corresponding item for that skill value (eg “how much disguise bonus do we award a player who wears a hoodie at a given skill level?”).

Linear interpolation is quick and dirty, but is simply a compromise. I could have compromised and put more code into Unity to interpolate internally, but that’s just putting more code than required.

So I turned to Calc’s cell formula functionality. I have no deep understanding of Calc, so I relied on someone else’s example to learn from. Though this was not the first time I brushed with polynormals, coefficients, and plotting curves, I’m math-stupid, so it takes me some time to figure it out. This kind of math is something that always interested me, but interest and talent are two different things. I wish I was smarter in math; it would make my life so much easier.

Anyway, after 2 hours looking into the math, I figured out what the example was getting at. With this technique sorted, it frees me up to implement more lookups that require curve interpolation. It’s easier to see what’s going, instead of just looking at numbers. Also, it’s much easier to tweak the system, to balance the game as I continue to develop.

3400AD: Player character models

ninja_suit_2015_12_01_1 trenchcoat_2015_12_01_1 hoodie_2015_12_01_1

Been doing some modelling over the past few days as a break from coding. Actually, I didn’t really want to break from coding, but I felt that I wanted to go back to visualise the game again.

I have to admit that I don’t have a strong theme; I do have a certain style I know I want to hit, but the define ‘style’ is more specific than talking about theme. The game is set it some futuristic landscape but I still have this Bladerunner/Strange Days/Neuromancer grungy cyberpunk idea that keeps me from getting too slick, hence the hoodie and trenchcoat. But the cute little characters provide a contrast that I’m not sure is good or bad.

The ninja suit is a Clancy thing, I think.