Pages

Friday, December 19, 2014

Hellenica Characters: Anaxagoras

It's been a while since we revealed any new characters here on the devlog, and with Christmas coming up soon, I thought it only appropriate to introduce you to our very own Santa look-alike, Anaxagoras!

Anaxagoras is an inventor who has been at the forefront of the Greek industrial revolution for years. Our main goals in portraying him were to communicate his friendly, helpful nature and to echo the visual aesthetic that we had developed for Nephele, our other character strongly related to steam technology. Our basic approach included:
  • create a friendly facial expression and a non-threatening physique
  • add lots of tools and tool pockets
  • use brass gears and adornments
  • pick colors that match Nephele's outfit to further establish the image of the ancient Greek steam engineer


This first sketch was already quite close, but there were a few small details we wanted to revise. The pocket on the stomach felt impractical and probably uncomfortable. We also felt the device on his wrist was a bit too modern for Hellenica's time frame.


This new version looked great, so we moved on to coloring.

We wanted Anaxagoras to look right at home in the workshop, which meant using browns and oranges that blended in well with the metallic tones found there. We had already achieved a similar look with Nephele, so her palette served as a great starting point.


After that, it was just up to our partners over at YDY-CG to finish up the coloring of the sketch and add in the final details (wristband colors and pouch ornaments). As always, they did a great job executing on our direction, and we're super happy with how he turned out.

Happy holidays everyone!

Friday, December 12, 2014

Saving Hellenica

Saving games is one of the many aspects of game development that seems like it should be much easier than it is. For most games we've worked on, even though the mechanics of storing data are usually simple, the evolving state of the game means you're chasing a shifting goal and constantly at risk of breaking things. We've certainly had this experience with Hellenica as we progressed from just a linear prototype to a multifaceted narrative web. But Hellenica's unique story structure also presents a whole new set of challenges.

To start off, we're not locking the player in a single path. If after exploring the consequences of one choice for leaving a social hub she decides she's more interested in what would have happened on another path, she is free to rewind the game (via the narrative map) to the previous hub and make the other choice. However, a player's story doesn't depend just on the social hub she's in. There's a plethora of choices, both overt and subtle, which will influence the way the story is unfolding. For example, instead of just loading the player into sh4_athens, we also need to remember she came from Sparta and has talked to Alcibiades but not Xenophon and has eavesdropped on a mysterious pirate delivery. To keep track of all this, we create a mini save game for every hub the player visits. So instead of one save game, we have like 30.

A separate save game challenge came from aiming to release Hellenica on tablet platforms, where it's expected that the player can be a jerk and quit your game at ANY TIME without losing her progress. So we need to maintain a sort of perpetual saving process that keeps track of the player's progress throughout a level. And because loading it takes the player halfway through a level (sometimes even halfway through a conversation), this running save file needed to have its own share of custom data beyond the mini-save games that are tied to social hubs.

Going one step further, this is all built on a foundation of profiles, allowing the user to share Hellenica with a friend and not have her progress mucking up your own save map.

So at present a "savegame" in Hellenica consists of.
A profile, containing....
Up to 40 social-hub-specific saves, each containing a story path taken to get there and a plethora of other story variables.
Separate save data related to which combat paths are unlocked.
A running save file, which contains all the minutia of the player's progress through the current level (+extra details if it’s a combat level).
Achievements accrued and various playthrough statistics.
Party customization details concerning which abilities they player's unlocked and which abilities you’re actively using.

Thursday, December 4, 2014

A little combat art clean-up

 As we finish up more and more of the combat art, some of our old techniques for controlling sprites from the Age of Temp Art have started to bother me. This afternoon I tackled one such issue dealing with the facing of our actor sprites.

When we first started out, we plugged in some representative fantasy character sprites as place holders for our characters so that we could prototype combat mechanics without waiting for an artist. (There are a lot of great resources on the web for this purpose. Check out OpenGameArt.org or the Spriters' Resource as a start.) Here are some examples:


While this was great for communicating character strengths or attack potential, it didn't communicate character facing! The side-on view in these pictures made it difficult to determine which of the 4 possible directions a character was facing in our 3-D world.

To address this at the time, I fudged the sprite's rotation in the world to hint at the direction it was facing. Here's an example using our latest sprites:


Unfortunately, rotating the sprite relative to the camera guarantees that some of the pixels will be blended together to make the final image that makes it to your screen. This means less visual fidelity for our otherwise crispy pixel art.

What I want instead is to have the character sprites always orient themselves in such a way that the plane of their sprite is parallel to the camera's view plane (effectively, the player's screen).

Unity's Transform class provides a handy function called LookAt that gets us most of the way there. This function rotates the object's transform so that its forward vector points down the LookAt vector you provide, with an optional up vector hint. In our case, we tell each sprite to LookAt the camera's position. Here's the modified version:


If you compare this image with the previous one, you should notice that the sprites actually appear slightly larger, especially those near the center of the screen. The sprites are already much clearer, but there's still a slight problem.

Look closely at the three bandits at the top of that last image. Do they look a little different to you?

A naive application of that LookAt function I mentioned doesn't quite give us what we want. This is because our camera uses an orthographic projection instead of a normal perspective projection. (I won't go into this here, see this for the gory details.) As a sprite approaches an edge of the screen, it rotates more and more to face the camera's position. Basically, sprites look skinnier as they approach the left or right side of the screen and shorter as they approach the top or bottom of the screen. Not good!

To fix this, we tell the sprite to LookAt different points on the camera's view plane such that the sprite is perfectly parallel to the screen. Here's the end result:


All three bandits are now the same size!

(Some of you will note that there are slight differences between the three sprites. Our combat rendering is not pixel perfect, so at times a sprite pixel will land on a screen pixel boundary. I may address this in a future post if I get time.)

I can then flip the sprite to give an indication of its facing, which won't affect the rotation of the sprite at all.


For those that are interested, here's a quick code snippet from the component responsible for orienting the sprites. Let me know if you have any questions or suggestions!

private void LateUpdate()
{
// Project the targets position onto the camera's xy-plane
//  to get a look-at vector that is orthogonal to
//  to the camera's xy-plane. This will ensure that each
//  sprite is rotated at a similar angle, regardless of
//  its position relative to the camera

// world position of the sprite
Vector3 target_position = m_cached_transform.position;
// world position of the camera
Vector3 camera_position = m_camera_transform.position;

// direction vector from the camera to the target
Vector3 camera_to_target = target_position - camera_position;

// project the camera_to_target vector onto the camera's up/down vectors
float target_up = Vector3.Dot(camera_to_target, m_camera_transform.up);
float target_right = Vector3.Dot(camera_to_target, m_camera_transform.right);

// determine the position on the camera's xy-plane such that
//  (target_position - new_position).normalized == camera.forward
//  the new look-at vector is orthogonal to the camera's xy-plane
Vector3 look_at_point = camera_position + target_up * m_camera_transform.up + target_right * m_camera_transform.right;

// finally rotate the target to face the newly computed look-at point
m_cached_transform.LookAt(look_at_point, m_camera_transform.up);
}

Friday, November 21, 2014

Art updates!

Sorry for the delay folks, I've let the blog slip the past couple weeks.

In hopes of winning back the favor of our Internet patrons, I have a couple offerings in the form of consumable digital media! Yum.

First off, I've been putting a lot of work in over the past two weeks adding some new features to our level editor and environments. Specifically, the ability to shape and paint the level however the designer likes.

After the addition of just a couple new shapes, I did a quick remodeling of one of our first combat levels. Here's the before and after:


I'm still just using our 3 test textures, but it already looks much, much better.

The second big update this week came from Valery. She finished up a huge batch of animations that I've been busily plugging into the game. Here's a little teaser I put together for the new Scylax animations:


The game's really starting to come alive!

Friday, November 7, 2014

Tropes VS Hellenica Pt. 2

Last week we talked about the start of our quest to find good female characters for Hellenica, and how, after digging through the somewhat meager set of historical and mythological examples, we were still only at one(!) female character. At this point, we were considering gender bending much of our cast, with a female Socrates addressing the Athenian assembly while female Spartan hoplites marched into battle. However, we decided against this, since most stories that feature that kind of gender swap tend to be focused on the repercussions of flipping the character’s gender, whereas we just wanted to reflect the ubiquity of female characters that we experience in 21st century life. Gamers would likely wonder what kind of statement about sexuality or gender we were trying to make with girl Plato’s actions, and that would be a distraction.

Thankfully, there was a third option: create our own characters. Original characters were a double-edged sword: we had the most freedom with their characteristics and story arcs, but using too many of them would erode our connection to the Greek aspects of our story. Female characters presented an additional challenge, because even though we had dialed down the explicit misogyny which would have been present in ancient Greece, inserting women into male-dominated fields of politics or warfare might still seem out of place.

One of our answers to this conundrum was Nyx. As a preternaturally skilled spy, Nyx can be found observing or manipulating the affairs of any city-state that could pose a threat to her hometown. Since she deliberately avoids the limelight, we never had to deal with the cognitive dissonance of an all-male assembly being swayed by a woman speaker, even though Nyx has just as much influence in Greek affairs.

One area where it was thankfully easier to integrate female characters was religion, where Greek women actually played a prominent role (an informal poll of friends also revealed this connotation). Both Diona and Nephele have religious aspects to their backgrounds. Diona’s role as a sort of sacred ranger devoted to the goddess of the wilds was inspired by a ritual to Artemis where young girls pretended to be bears. (Diona has a similar ritual, but she’s not pretending.) Nephele’s profession of mechanic-priestess comes from the one steam engine the Greeks actually built being relegated to a curiosity in a temple (probably).

One interesting consequence of most of our female characters being invented, was that they lacked the historical baggage of many of the male characters, and thus were better suited to play principal roles in the crazy branching story we were constructing. Ultimately, we found our story worked best if it was centered on Diona and she was soon joined by her overeager “apprentice”, Nephele. We had gone from hunting fruitlessly for female characters to a story that was starring two.

Friday, October 31, 2014

Tropes VS Hellenica

In the past couple of months, I've been repeatedly frustrated by the implications that gaming isn't ready for a mature conversation about sexism.

That’s not true in my circle of gaming friends, it wasn't true for Volition, and it's not true for Dragonloft. To demonstrate this, we thought it would be a good idea to do a post about all the thought our team is putting into how we portray females in Hellenica.

Let's get to the first issue we face—finding female characters for the game. At this point I'm half-expecting cries of "PC police" or "social justice warrior", but it's nothing so grandiose. Rather, girls have always been there in our personal adventures, whether it was solving intractable problems at math camp, developing video games, or downing a raid boss in the Secret World. To not have any females of note in a setting just rings false to us, and we don't think we're the only ones.

This quickly came into conflict with our desire to found the game solidly in the milieu of ancient Greece. Even after all my research, I can only name two historical Greek women who were famous for something other than being a wife/mistress to a man. The naval commander Artemisia (who I'm told is featured in the latest 300 movie) and the poet Sappho. Tragically, neither of these characters worked for us. The battle for which Artemisia is famous happened a generation before our game takes place and is a building block for Greek/Persian relations in our setting, so any appearance by her would be jarringly anachronistic. As for Sappho, there may be a genius out there that can work a lesbian love poet into a JRPG narrative, but it wasn't something we wanted to try to tackle in our first game.

Moving on to mythical Greek characters, there’s a much wider set to choose from. Even discounting the gods, there’s Circe, Atalanta, Pandora, Medea, Electra, Ariadne, Helen, Arachne, etc. However, a lot of these characters have troubling sexist undertones. Atalanta’s footrace in particular is basically about a guy distracting a warrior woman with shinies to trick her into marrying him.

Of the above, Circe was the one that best fit our setting—a powerful enchantress with her own agenda that can alternatively serve as an obstacle or guide. And yes, we’re aware that in the Odyssey she functions as a sort of sexist “temptress” trope. And though there are elements of that characterization in our story, her arc is greatly expanded in Hellenica, including an act 3 confrontation where she --[REDACTED]--.

After all this, we’re still only at one(!) female character. So we needed to do more. Next post, I’ll talk about how we went about creating new female characters and making them consistent with the male-dominated world of ancient Greece.

Wednesday, October 22, 2014

This changes everything

Every once in a while we implement a change in the project that makes me wonder how I ever enjoyed any of the previous versions. The last couple weeks I've been using some cycles to get our characters animating, and now that Diona is running and jumping around our little worlds, I just can't go back to our older builds. It's SO good to see our characters come to life on the screen!

Here's a quick video of some of her animations in place.


This is the animation graph I'm using to control her:


As far as animation graphs go, it's fairly simple. You can think of each rectangle as a single animation (idling in place, running, or shooting her bow), while the white arrows between the rectangles represent possible transitions between those animations.

So, for example, the arrows connecting diona_run to diona_hop allow Diona to immediately perform a hop while she is running. But, since there are no arrows between diona_run and diona_attack_bow, she has to stop moving and return to the diona_idle state before she can attack.

The nature of our turn-based combat means we can get away with a fairly simple set of transitions, as opposed to say, a real-time shooter game. Here's one part of an animation tree (a specialized kind of graph) from a recent Battlefield game:


It's not unusual for a large AAA studio to have a couple of programmers and a dedicated animation team spend all of their time refining the animation tree of the protagonist character. Maybe for our next game. ;)

I also put together some quick footage I took running around one of our test levels. Take a look!


Now that everything is in place, it's fairly simple to plug in the movement animations for our other characters, and that means our game is quickly coming to life!

Stay tuned for more!

Thursday, October 16, 2014

When Two’s a Crowd...

I've recently managed to outpace my proofreaders, so I switched off writing to work on something we’ve wanted to get to for a while, character portrait presentation.

We wanted to experiment with multiple speakers on each side to give the impression of the player's party participating in a discussion (or argument) as a group. First pass implementation of this was easy, but had a few glaring problems...


Even though Scylax is the one speaking, Nephele appears bigger and louder. (We had looked at our character designs next to each other before, but never overlapping, so this is the first time we were really made aware of discrepancies of height and body proportions.) Additionally, Scylax's wide-spreading coat ended up intruding on the dialogue text, even though that position had worked for other (narrower) characters.

To fix this, we're giving each character portrait its own set of presentation variables that track its size and position for each slot. So when Nephele's not speaking, she shrinks a little and backs up. And when Scylax is speaking, he doesn't scoot forward quite as far as other characters do. We also decided to dim characters in the background.


Which looks a lot better.

Also, as of right now we haven't really solved when we should put characters on the same side in a conversation. We just always do it with the party (even if there are no NPCs talking), which is serviceable, but probably not as good as it could be. We'll keep mulling over it, but if you have any ideas for when groups of characters should be displayed, or any examples of games that solve this problem well, we'd like to hear about it in the comments.

Saturday, October 11, 2014

Level construction and keeping focus in the Unity editor

Up until now, creating the geometry for a level in Hellenica was controlled entirely through keyboard input. Here's what it looked like:


It's a cinch once you pick up the hotkeys, and now that I've been using it for a few months, constructing the geometry for a level is one of the quickest parts of the process.

Recently, we've been thinking about how to layer on Valery's art to make our environments more appealing. I decided it was going to be cumbersome and complicated to paint specific faces of the level blocks using keyboard hotkeys. The time had come to add mouse picking to the editor interface.

I immediately ran into issues dealing with Unity's default mouse picking behavior, though. Whenever you click on a GameObject in the scene view, Unity changes its focus to that new object! Generally, this is exactly what the user wants. In our case, however, painting tiles becomes very difficult when every click changes the user's selection!

After some internet research and experimentation on my own, I ended up with a solution that works well for us. It comes down to overriding Unity's GUI focus for the duration of the painting operation. Here's a quick sketch of how this is done:

 ...
else if (Event.current.isMouse)
{
process_mouse_input(Event.current);

// if we detect a left click while the mesh editor is selected,
//   do not allow Unity to change our selection. assume we're editing
//   until we release the left mouse button.
if (Event.current.type == EventType.MouseDown && Event.current.button == 0)
{
    // hotControl is a static variable that Unity uses to track the
    //  active GUI control
GUIUtility.hotControl = m_editor_control_id;
}
else if (GUIUtility.hotControl == m_editor_control_id &&
Event.current.type == EventType.MouseUp && Event.current.button == 0)
{
GUIUtility.hotControl = 0;
}
}
 ...

I begin overriding GUIUtility.hotControl on the MouseDown event and hang on to control until a corresponding MouseUp event to guarantee that the editor captures clicks as well as sustained drags.

m_editor_control_id is generated as follows:

m_editor_control_id = GUIUtility.GetControlID(this.GetHashCode(), FocusType.Passive);

As you may be able to tell, this solution isn't perfect. Any gizmos that end up in front of the level mesh will be unresponsive to mouse clicks so long as the mesh remains behind them, as the mesh editor is now all-consuming. (Muahaha.) But, it works well enough for us to get started painting levels.

Here's a quick gif of a paint job I did with some test tiles:


I have no doubt that this system will keep evolving as we go. If anyone out there has any ideas for improvement, let me know!

Friday, October 3, 2014

Welcome to Level 6

**This post contains vaguish spoilers**

This past week I've begun work on the sixth (of 8) levels of social hubs in Hellenica. This is taking us to the final stretch of the story, and setting up all the good dramatic twists/betrayals and deaths that mark the act 2-3 transition.

Social hub six is also probably going to be the last social hub the player makes story-shifting choice in. One reason is because the cumulative weight of all the previous choices is making writing scenes at this level more difficult. My current social hub in particular feels like it's 80% devoted to either tying together the various plot threads that could have lead to this point or setting up the various choices the player will have going forward.

A lot of the difficulty is the NPCs, which will follow their own paths through Hellenica mostly regardless of the players’ actions. Maybe you've bumped into them before and have some catching up to do. Or maybe you have no idea who they are and what they stand for, but they might be important for the way the plot’s about to turn. My current social hub features an intersection of 3 such NPCs, so getting the player up to speed without grinding the story's momentum to a halt is a significant challenge.

The second reason we’re doing away with branching for the rest of the game is to really commit to each of six endings. We never liked games where you could just reload a few minutes from the end, make a different choice, and then get a completely different ending. It frequently felt unearned, and the plot would often have to twist itself to justify how this one final decision was more important than any other decision you made the whole game.

The Hellenica approach is completely different, with your last storyline-affecting choice happening at the end of act 2. The whole climax and conclusion are a reflection of all the previously made choices. This will hopefully lead to better narrative flow to the conclusion, as well as making each ending feature enough callbacks to previous choices to make it a unique experience.

Wednesday, September 24, 2014

Valery has joined your party!

Sorry folks, this last week has seen a whirlwind of activity on our end, both with Hellenica developments and life events. We didn't forget you all, though!

Today I want to announce one fantastic result of this activity, and that is our partnering with a new combat artist! For the longest time, we've been unable to show the gameplay of Hellenica because of our placeholder artwork. I'm already in the process of integrating new art, so soon we can start showing you all more of what we're working on.

So who is the artist? Valery Kim is a pixel artist that found us through the TIGSource forums. She has a unique style and a solid background working on other games in our genre. Here's some of her work:


You can check out her live blog here for more.

Now, for a little Hellenica teaser, here's the test submission that made us choose Valery in the first place:


There's much more to come, stay tuned!

Thursday, September 11, 2014

It takes a Village...

During my first video game release party, five months after I had begun working in the industry, I approached the lead designer of Saints Row 2 to offer him a compliment, "You made a great game." He corrected me, "No, we made a great game." If I still harbored any illusions of a superstar designer driving a game's creation, they were shattered that day.

Even if Kurt and I are the only full-time developers working on Hellenica, we've had the support of a plethora of talented people. And since we've gotten even more help than usual lately, I thought it'd be good to recognize the different people involved and the help they provide.

Within the past week alone...

Numerous friends and family have played through an alpha build of Hellenica and given great feedback with regards to usability and difficulty, and the occasional bug or grammar mistake.

My friend, Topher, also found a particularly rare bug, where a line would be repeated if you took a very specific story path (3 in 58 chance). Additionally, he provided feedback about how our UI reads to his color blindness.

My friend, Bergy, provided Greek culture consultation, discussing the finer points of the Oracle at Delphi, the river Styx, and Athenian politics, as we worked to mold these elements into great conclusions(plural) to our JRPG-styled story.

Our writer, Siobhan, helped edit new bits dialogue we added to improve narrative flow where playtesters were confused.

We worked with YDY on our last set of character portraits.

My brother explained to us why one of our character's muscles were physically impossible, and helped us give feedback for YDY to iterate on.

My friend, Maja, advised us on the mechanics of female poses (also for a character portrait). My girlfriend also allowed herself to be thusly posed as we iterated towards a more reasonable stance.

We conducted a combat artist search and asked a wide array of gamer friends to give us feedback on the final candidates we had selected.

And honorable mention to my mother, who has (before this week) proofread all of Hellenicas 4800+ lines.

Another honorable mention to Daniel Thomas, who the week before last finished up his work on Hellenica’s backgrounds, which drew nothing but praise during our playtest.

Hellenica wouldn’t be where it is without them, and Kurt and I are very grateful.


Wednesday, September 3, 2014

Hellenica Characters: Reworking Diona, Nephele, and Nyx

Now that we've wrapped up most of our character portraits for Hellenica, we had some time to go back and revise some of our earliest characters. We realized that the first pieces we worked on with our previous artists didn't quite match up with the style we established with our current artist. Ack! Who will save us now?!

Oh, I guess our current artist. Probably.

So, we had her do a little touch-up work. Here's a process shot of how our characters were transformed:


Nephele and Nyx were fairly straightforward. We shrunk their heads and eyes down a bit to be closer to the mostly realistic character proportions of our other characters. In Nephele's case, we had to make her nose and mouth a little more well-defined as well.

For Diona, we made similar adjustments to her facial features, but in the end we just weren't happy with the way the pose was working out. During her conversations in game, she looked unbalanced and a bit awkward. So, starting again from the sketch stage we put together something more natural. We already had a great color scheme worked out, so it was a little easier than completely starting from scratch.

And that's that! As on the internet, photoshop can fix any problem. What do you think? We're hopeful that once players get into the game they'll never even know that these three characters were originally done by a different artist!

Monday, September 1, 2014

Seeking an experienced 2D artist!

The time has come again for us to open the gates of the Dragonloft and seek out a talented artist to help bring Hellenica to life. If you're a regular reader here, please help us in the search and share this link with any artists you think might be interested in creating Hellenica with us. For those arriving for the first time from Twitter or other internet tubes, please take a look at our job description to see if you're interested! Take some time to check out the rest of this dev blog too, we've already done a lot of neat work!

(The job post in full..)

Hello! We're the Dragonloft.

We're game developers with AAA experience who are working on our first indie title, which aims to take the endearing JRPG genre and rework it to function in a tighter-paced form.

We've been iterating on the game in some form for just over 2 years, and we're at a point where we'd like to find a dedicated artist to bring our isometric characters and environments to life.

We have a unique Greek Steampunk setting which reimagines the cultures and people of ancient Greece in the wake of an industrial revolution, blending iconic landmarks like the Parthenon and the Colossus of Rhodes with the gears, smoke, and inventiveness of a steampunk world.

We're looking for a dedicated individual that can make our isometric tactics gameplay visually inspiring and delightful. We look to the original Final Fantasy Tactics for style direction (see examples here), but may be open to other ideas if you can convince us of your skill and dedication. We believe that the artist really needs to own the vision to do their best work, so as long as the style serves the gameplay (easily readable, enhances the tactics gameplay) and fits the technology (2D sprites and tile sets), we are somewhat flexible.

The right person should have experience doing environment tile sets, animated 2D character sprites, and animated 2D effect sprites. Some comfort with technical art is required as well, given the focus on character animation and our desire to craft our levels from shared tile sets. Also, let us know if you've used Unity before.

We're looking for someone that can begin working right away, as we're hoping to wrap up development on the project early next year. We're only interested in hiring dedicated contractors for pay, though terms are negotiable depending on your preferences.

If you're interested, please respond with any relevant past work, your usual rates, and your availability.

You can reach me here: kurt@thedragonloft.com

Thank you for your time! We look forward to hearing from you.

Thursday, August 28, 2014

Knowing is Half the Battle

One of the many challenges with game development is that you don’t always know what game you're making until you're halfway through. Sure you have an idea what you're going for, but once you start bumping up against technical and logical restraints, or just learning that your core experience isn't what you had hoped, plans start to change. Unfortunately, some of the foundation you've built is now obsolete or poorly suited to the new task. This is why a lot of game series don't get really great until a sequel or two; by that time around, devs have a much better idea what their systems need to do.

We're experiencing this phenomenon with Hellenica in a few ways, one of which is the problem of party knowledge influencing branching dialogue.

When we first started writing dialogue variants for specific paths the player had taken, we simply checked which social hub the player had visited at a specific level. The writer would know what story events had happened in that path and edit the dialogue accordingly. While this was effective, it began to get complicated when multiple paths would converge into similar dialogue.

With rumors, the complexity got worse. Not only would we need to account for multiple paths that could lead to the same dialogue, we would need to do so across the whole range of locations the rumor could occur in.

Our solution to this is to use what we're calling "knowledge details" to track important story information the party has learned and branching dialogue options off of these variables. It doesn't matter on which path the party learned the true nature of the mysterious shipments arriving in Sparta, if that variable is set, they know about it and will comment appropriately. This frees us from the need to track a web of paths as mentioned above. Unfortunately, over half the game has been written and implemented, so we're only retroactively using knowledge variables when it's critical. And even there, I'm scared I'll forget that some bit of knowledge should have been set in a social hub I implemented months ago, and a branch won’t play properly...

Ah, the joys of game development.

Friday, August 22, 2014

Hellenica Environments: Crete

This week I thought I'd follow up on Victor's intro to Crete with a post showing off the art. It's one of my favorite locations in the game, and I'm really happy with how the background painting came together.

Here's a quick description of the setting:
"The Minoan civilization collapsed for unknown reasons centuries ago, leaving only fog-covered ruins on the isle of Crete. Athens nominally claims Crete as its own, but rocky crags shrouded in fog and rumors of a curse keep them mostly absent from its shore.  As such, these ruins and their surrounding waters have become a harbor for disreputable vessels that would rather confront whatever curses the ruins hold than the Athenian navy."


As with most of our requests, Daniel's first sketch of Crete was basically perfect. The mood is spot on, and even without the details in you can already make out many of Crete's characteristic features: derelict ships, crude shanties, and the ominous entrance to the Labyrinth in the background.


We changed up the composition a bit to provide a more viable vantage point for the party, but I insisted that we hang on to that ghost ship mast. Fortunately, Daniel's a swell guy and was happy to oblige. (I suppose we're also paying him to listen to us, but that's hardly relevant.)


Here's the final revision of Crete that you'll visit in Hellenica. This location's a really fun one to play through, I wish I could post more than just the art!

Friday, August 15, 2014

Crete-peat

[This post has minor spoilers.]

It's been an eventful week.

My south Texas apartment’s air conditioner broke, rendering my work space's temperature somewhere between "oven" and "hell". It’s finally fixed, though I’m still not sure how much the heat addled my brain (or my writing), let's see what my editors say...

Anyway this week I was focused on the pirate haven of Crete.
Most social hubs in Hellenica have their own unique quirks and restrictions we need to keep in mind when writing them, and Crete’s no exception.

Unlike the choose your own adventure books of my youth, where your choices will retroactively force the world to assume a different reality, we made the decision to keep Hellenica cohesive. The characters, motivations, and hidden plots are consistent throughout all playthroughs. Separate playthroughs will have the player exploring and manipulating different narrative threads, but in the end all those threads tie back to the same world about to be destroyed by the same evil.

While we really like the cohesive and interlocking feel this sort of structure gives multiple playthroughs, it creates a very complicated web of restrictions as we struggle to keep things consistent.

In the case of level 5 Crete, finding the right NPCs to populate the hub was a problem.

Given its status as a pirate hub, there's already a limited number of characters who would have legitimate reasons to hang out there. In the level 3 version of Crete, we solved this by including characters whose personas involve wandering Greece.

However, each of their character arcs had now taken them elsewhere. Additionally, the one unsavory persona who more-or-less permanently inhabits Crete might (depending on playthrough path) have reason to want the party dead. The list of potential conversationalists was looking pretty slim, and we were hesitant to add new characters this late in the story.

Eventually we came up with ways to relocate other NPCs to Crete. The first is a member of a widespread secret organization, and has liberty to show up at will and help the players when needed (plot glue!). The second was an Athenian Aristocrat (whose identity will remain secret). Why would such a person be hanging out in a pirate hub, you ask? Well the player's party is curious too, and that question helps drive the story in the social hub. Between these NPCs (and a few related conversations with unnamed pirates), Crete is filling out nicely and should be in game within a matter of days.

Thursday, August 7, 2014

Hellenica Characters: Oracle at Delphi

No Greek epic is complete without a proper visit to the Oracle at Delphi, and we've remained faithful to tradition in Hellenica. Of course, whether you visit Delphi is ultimately up to you, but hey, if you insult Apollo by skipping over his temple on your journey, that's on you.

It was said that the Delphic Oracle was effectively the highest authority in ancient Greece. Men dominated most aspects of life, but when you needed divine advice on political controversy, military conflict, economic turmoil, even relationship issues, you asked the Oracle at Delphi.

For our version of the Oracle, we started from a fun theory about the source of the Oracle's inspiration: the volcanic fumes in her chamber! The gods work in mysterious ways.


Compared to our other characters, we wanted to set the stage for the Oracle a bit more thoroughly. She's seated up high to play up the drama of the scene, and a steam-powered pump is chugging away to feed her inspiration straight from the source. Unfortunately, we weren't really feeling the jazz hands, and the tubing looked a little too F-15 fighter pilot, so we took another go at it.


With those issues ironed out, we spent a bit of time figuring out what colors worked best for her. We originally went down the route you see on the left, but quickly realized she matched all of our Spartan characters. Who she hangs out with on the weekends is her own business, but for our purposes, we needed to avoid any possible confusion. The colored eyes were also starting to weird us out at this point, so we did some more experimenting.


And that, dear readers, is how the Oracle at Delphi (in Hellenica) came to be!


So, what will you ask her?

Thursday, July 31, 2014

Write Hard with a Vengeance

I mentioned earlier that editing Hellenica’s dialogue would be worthy of a post on its own. And since I’ve done a fair amount of it recently, I thought I’d make a post about the various steps.

Phase 1 Assembly: I hammer the above freewriting notes into a scene. Usually I do this by picking out the lines I think are particularly good and seeing if I can arrange the rest of the dialogue to set them up. Oftentimes, I'll be ambivalent about the proper approach to a scene, so I'll leave both approaches in to see how my proofreaders react.

Phase 2 Proofreading: At this point, I share the scenes’ gdocs with various proofreaders and they read through them, commenting and suggesting edits for everything from grammar to characterization. I might ask some friends for additional help here depending on availability or area of expertise (such as making sure Nephele's engineering babble makes sense).

Phase 3 Fine Tuning: After the changes suggested above have been made. I make yet another pass at dialogue, either with Bergy or our relatively recently contracted writer, Siobhan Gallagher. These passes focus on tightening up the dialogue, and involve a lot of cutting extraneous lines and making sure each character is speaking in a way that is consistent with his or her voice.

Phase 4 In-Game Testing: The ultimate test of dialogue is seeing how well it works and flows in game. This is an exceptionally important test because while the preceding documents have a bunch of "if you previously did X, go here to doc A, otherwise go to doc B", all of these seams are invisible in the game, which makes any hitches in flow much more obvious.

Phase 5 User Feedback: This is another level of in-game testing, with the distinction that we usually try to get people not as intimately familiar with Hellenica's story. Since as developers we’re very familiar with the story and with information that's revealed in ANY of the various paths someone could take, it's easy not to realize that the party never got a specific piece of information on that playthrough. However, players less familiar with the story might be confused as to what's going on.

Thursday, July 24, 2014

Hellenica Environments: Thebes


So, it's been a while since we've shown off a new location, but I have a secret to share. Between my last post about Corinth and this post, we've finished nearly all of the location art! Two quick reimaginings of existing locations remain, and then we'll be 100% complete with the location backgrounds. Praise Zeus!

Exultations aside, Thebes is today's focus. Or at least, Hellenica's Thebes, completely transformed by its railroads. Here's our inspiration:

"Thebes has the ambition and determination of a nation that's been on the economic and political rise for over a decade. Their wholehearted embrace of technology is evident everywhere, from the mechanical design of its buildings to the great factories which have turned the city into the most important manufacturing center in Greece, as well as the primary railroad hub."

And here's Daniel's accompanying sketch:


He definitely nailed the vibe we were hoping for, but we felt that overall, the scene was just a bit too modern for our game. Steampunk ancient Greece is a tricky setting, and we have to work hard to make sure our art doesn't stray too far out of line.


To address that issue, we brought the perspective down lower. Without modern construction materials, it would be impossible to build structures that tall. At this point, you can start to see some more traditionally Greek elements sneaking into the architecture, but it still felt a little too 19th century London. Onwards!


We nixed the windows, removed the arches, really pushed the columns, and traded out the gas lamps for torches. Overall, it felt much more Greek without sacrificing the vibe and the steampunk elements.

At this point, we were feeling pretty good about Thebes, so Daniel spent some time cleaning it up and working on the details. Here's the final version:


And that is Hellenica's version of steampunk ancient Thebes, railroad and manufacturing hub of the ancient Greek world.  The observant viewer might even find a clue about some of the other dealings that take place in Thebes. Let us know what your theories are in the comments!

Thursday, July 17, 2014

Writing Hellenica 2: Write Harder

Picking up from the last post, at the beginning of 2013, early feedback convinced us to scrap our first draft of Hellenica and then start over. Some of the changes were structural, such as moving Nephele to the start of the game to place a greater emphasis on steampunk elements. But it was the changes to mechanics that would prove much more challenging.

With our limited art and cinematic budget, a large amount of Hellenica's story would have to be conveyed through writing. As an additional challenge, almost all the writing was dialogue, so most conversations were burdened with the need to convey to the player some important details without making the characters sound like exposition spouting machines. I struggled with this balance during the first draft of Hellenica, but eventually adopted a focused free writing method that improved the dialogue immensely.

Freewriting is a brainstorming technique where you write freely and continuously without regard to spelling, grammar, or sometimes even topic. This is usually done to overcome writer's blocks of apathy or self-criticism, but in this specific case my inability to meditate on what I was writing made the conversations sound much less ornate and technical, and much more human.

Of course, a lot of the material generated this way is meandering, awkward, or just plain dumb. So I needed to compensate by writing a large breadth of options. Most conversations in Hellenica are free written 3-5 different ways, often with different variations with regards to which characters do the majority of the speaking and tones. This gives us an extensive amount of material which is then edited and revised by a process that probably deserves its own blog post.

I continued writing in this manner (along with my programming development) for much of 2013. At first, my tools were very crude, requiring me to individually configure every bit of a line’s information and link it into a conversation accordingly. Eventually, however, I polished the tool to where I could copy-paste whole conversations from the google doc and have the tool set the speaker info and most of the conversation connections automatically.

Even so, writing was still proceeding at a glacial pace, so we began looking for further ways to ease the load. Around Christmas, we ran into Siobhan Gallagher, a short story writer who had been looking to cross over into video games.

At first we tried contacting her to write scenes directly, but the raw amount of background information, both in terms of the various paths through Hellenica and the assumed backdrop of ancient Greece around the year 420 BC, made it difficult for her to make full use of the setting. So, after hearing about my writing process, she proposed a different solution. She would take my free writing notes, that barely intelligible blob of free-form ideas, and hammer scenes out of them. This way, we could still get the really intimate references to our setting that only someone who had devoted  ~ 1.5 years to it could provide (such as Nephele nicknaming Scylax “the Scythian Scythe”), while still speeding the development process and having most of the final dialogue written by an experienced writer.

Thursday, July 10, 2014

Writing Hellenica

This past weekend marked roughly the two-year anniversary of my beginning to work on Hellenica. And I thought I might mark the occasion with a review of how our writing process has evolved in that time.

The first writing done for Hellenica was just for world building. We wanted to flesh out what Greek steampunk was and to this end we wrote revised descriptions of the twelve main Greek gods as well as a new series of Greek myths. These were then discussed with Kurt, Bergy, and my mother (whose willingness to proofread every line written for Hellenica has made her somewhat of an expert on it) to help spur our brainstorming.

Thus, while these myths won't show up in the game, they inspired many of the ideas that would, including Poseidon's wrath towards Corinth and Nephele's job as a priestess-mechanic.

By late fall of 2012 we had a first draft of what a playthrough might look like, and it was riddled with flaws. One of the early issues was that I made an effort to write characters as having historically accurate views on gender. This ended up being distracting because it felt like every character, right down to Socrates, was a huge misogynist. Beyond that, characters frequently spoke in unnaturally overwrought dialogue (at the time, I was more used to writing essays). Additionally, our primary steampunk character, Nephele, didn't show up until a third of the way through the story, downplaying some of our setting's unique elements.

Bergy and others went over these flaws with me in sometimes excruciating detail. At the time, Bergy told me not to worry, I should probably expect to rewrite everything at least two more times. While his words of wisdom didn’t have the desired encouraging effect, they did end up being prophetic. But, that's a story for next week...

Thursday, July 3, 2014

Hellenica Characters: Xenophon

Last week I introduced you to Brasidas, the refined product of militaristic Sparta. This week, I'm introducing Xenophon from nearby Athens, who's much more scholar than soldier.


Xenophon still has some tough lessons to learn about combat, but until then, we wanted to make sure his enthusiasm for war shines through. He comes over-prepared for any encounter with his bag of scrolls and manuscripts detailing the tactics of his idols, and even a scytale!

To take it even further, we opted to replace his spear with his helmet and yet another bag of reference materials, as if he's just grabbed his things in a rush to make it out to the battlefield.


At this point, we were still trying to figure out the right facial expression for Xenophon. We wanted him to look enthusiastic and hopeful, not cocksure, so to that end we tried to round out the eyes and eyebrows and open up the smile a bit.

  

In parallel with the search for the right face, YDY cleaned up the image and worked out the colors. The traditional colors for Greek soldiers were white and a dark, royal blue. We thought the first rev strayed a bit too far from the source material. We've also been trying to stick to natural hair colors, so we had to nix the blue hair.

The other detail we had to work on was the shield. While we technically used the iconic Athena owl image at first, we just didn't think it looked great on his shield. We asked our artist to tie in the Greek colors and try out their own take on the owl, and I think the result speaks for itself!


Let us know what you think!

Saturday, June 28, 2014

Hellenica Characters: Brasidas

"You could have me outnumbered twenty to one and I would still have the advantage."

Spoken like a true Spartan!

This week we're revealing Brasidas, an elite Spartan soldier who embodies his city-state's ideals of bravery, honor, pragmatism, martial prowess, and rigid adherence to authority. He also happens to be the butt of most of Diona's jokes. No one ever said being Spartan was easy!

We wanted Brasidas to come off as a fairly typical Spartan warrior, at least until you get to know him better. Also, while much of the world of Hellenica has been transformed by the ongoing steam-powered revolution, Sparta's mostly stuck to its traditions. To that end, we set out to design "The Spartan Warrior", with some welcome touches from YDY to fit it into our aesthetic. Here's the first stab at it:


Well, I certainly wouldn't want to start a fight with him.

Brasidas is one of our strong male leads, and this initial attempt satisfied that need pretty well for us. There were just a couple things we had to fix up:
 - That iconic horsehair crest atop his helmet was actually reserved for officers or generals. Brasidas is just your average soldier, so that had to go.
 - While Brasidas has seen his fair share of battles, we didn't want his armor to look too shoddy. The cracks and wear in his legguards needed to be reined in.
 - We thought his legs could stand (ha) to be a big more muscular.


Looking good. We wanted to go after the iconic Spartan red for his cape, and for his armor, we stuck to the metals we know they had back then: iron, brass, and copper. Here's the first rough color:


I can't tell you how nice it is to work with artists that can get this close on the first try! Actually, it's my blog post, so I guess I can. (It's really nice.)

Our only qualm here was that the armor looked a bit more golden than we had wanted. As I mentioned before, we complete our portraits in batches, which gave us the ability to look at all of our Spartan characters and standardize their armor across the board. Awesome!

Here's Brasidas with his new set donned:


As always, once we're happy with how things are looking, the guys at YDY do a final pass for lighting and atmospherics. Here's the final image we'll be using in-game:


We're really happy with how Brasidas turned out. He adds some nice diversity to our cast, so I'm jazzed that he's finally making his appearance in the game.

'Til next time!

Thursday, June 19, 2014

Programming Adventure

So I spent a lot of time revising and debugging the level 5 Athens paths this week, and along the way I ran into a particularly nasty save-load bug. It was kind of an adventure to track down as well as a reminder about why good programming techniques were important, so I thought it'd be fun to write a post about.

The hunt began when I noticed the story map complaining about how it couldn't find the node corresponding to a certain location in the story. This error happens on occasion as we're adding new content piecemeal. It's usually harmless, but I wanted to clean things up in preparation for an eventual alpha test, so I decided to look into it.

What I found next was mysterious, the reason the map UI couldn't find an appropriate node was because the name it was being passed was blank. Further investigation revealed this error only happened when I loaded a particular save game...

An important step to solving most bugs is to get a reproducible case, so I set to work trying different approaches until I discovered that loading the same game twice would trigger warnings on the second load (but not the first).

Baffled, I went to examine the loading code, which looked fine. However, there was one comment warning me that the code would behave in a non-obvious way under certain conditions... exactly the conditions I was seeing the bug in. Sure enough, when I inspected that code more clearly I found a variable that wasn't properly reset on load, causing weird zombie paths that had the blank location names which were causing the initial error (and probably lots of other errors too).

So some take home lessons if you’re an aspiring programmer.
1. Make your code assert if anything strange is going on, even if the code could handle it. Weird values are a good indicator something is going wrong somewhere else.

2. Get a reproducible case. It's especially good if you can get one with only a few steps.

3. If you want to do something that's clever but a little bit confusing in code, make sure you leave a comment explaining what's going on. When a frustrated programmer (possibly even yourself) stumbles on that code at 2 in the morning trying to hunt down some obscure bug, you want her to be able to figure out what’s going on without having to solve some programming riddle.

Thursday, June 12, 2014

The Subtle Consequences of Choice

We talked before about the absurd branching we're allowing in Hellenica—how each social hub ends with 2-3 choices that can steer the player (and the story) in completely different directions. Previous posts have also dealt with the somewhat elaborate restructuring that sometimes needs to happen to make these stories flow into each other. But today, I'd like to delve into some of the subtle details involved. So far, no one's specifically noticed these kinds of dialogue tweaks as consequences of the choices they made, but I guarantee that they've improved the experience.

This week, I've been iterating on the various story paths heading into Athens in act 2, and I found that while the broad strokes all mostly worked, a bunch of little seams kept diminishing the narrative experience. As an example, while most of the story paths involved the party wanting to ask Socrates for help on their quest, the finer details about who their enemies were differed. This resulted in the characters either seeming to make HUGE assumptions about who the villains might be, or sounding mind-numbingly idiotic because of their inability to make obvious connections. So even though the overall structure and flow of the conversations remains the same for all incoming paths, most of the lines dealing with their quest have specific variants depending on how much a player knows.

Character relationships are another instance where subtle details can help a story flow much better. While players will interact with the various Athens NPCs under almost identical circumstances, it helps immeasurably to augment these interactions with helper lines that show that the characters actually remember if they've interacted with each other in previous levels. Once again, the additional lines are minor and the structure and flow of these conversations is mostly unchanged. But their absence makes the character interactions feel jarringly dissonant.

Another way subtle details were important in Athens was to acknowledge the fulfillment of foreshadowing. I don’t want to give too much away, but when someone predicts an event, and then later, it happens, the characters should acknowledge it. This doesn't change the party members’ reactions to the event, and surrounding dialogue is the same, but without that acknowledgement of the foreshadowing, the characters would seem less aware of their surroundings.

I'm hoping to have the level 5 version of Athens ready for internal testing any day now. So hopefully there'll be a post in the future about how well it's worked out and what else needs to be done.

Thursday, June 5, 2014

Hellenica Characters: Alcibiades

I'm back again this week with another character art update, but before I dive into that, I thought I'd talk a bit about how our process has been evolving.

When we first started out, we made the mistake of not lining up a dedicated, long-term artist. This meant we were contracting out portraits to different individuals from concept to completion. The result? Pretty inconsistent styles, as well as disagreements in color palettes and character sizes, which all translates to a waste of time and money.

Now that we've found a steady partner for our portraits, we're able to approach things with more of an eye towards the whole product. We've started sketching out related characters in a single pass. This lets us establish a cohesive look and iron out any issues between characters before we get too far along with any individual portrait. Then when we move on to coloring, we can make sure that our characters don't end up clashing with each other.

We're pretty excited about how things are working out now. I'll keep you posted if we make any more modifications to our process.

So, this week's character update involves the ever-popular Alcibiades. Quite frankly, he's a terrible person, which made this one pretty fun to make.


Alcibiades is based loosely on the historical figure of the same name. He comes from a wealthy line of Athenian aristocrats, the Alcmaeonidae (say it with me: alk-mee-ON-uh-dee), that has long been involved in the affairs of Athens. As a result, he's a real pompous jerk. Unfortunately, your party will likely have to deal with him on a few occasions if you spend any time in Athens.

We wanted to make his unsavory personality immediately obvious from his expression. He also needed to clearly communicate his background and his position in society. To that end, we made his robes a bit more extravagant than the other characters as a first step. We also outfitted him with an affected fan and a portable gramophone, a recent vogue accessory of the Athens elite (in the world of Hellenica, anyways). This in conjunction with the details of the belt also helped to tie in our steampunk aesthetic.


What do you think? Did our messaging work?