Weekly Content Blog #11: Tyler’s Tune – The Tangle

In my last post I detailed the compositional process I took to compose “Curtis’ Theme”. In this post I will break down the musical elements of the opening dungeon, The Tangle.

First let’s listen:

The Tangle – Into the Depths

The Tangle was composed in a very peculiar way. Unlike every other piece written for this project, this piece was composed exclusively in Logic. What this means is that it never existed in sheet music form and was played into Logic via my midi keyboard. This is an unusual method for me, but I wanted to experiment with the process to see if it would generate new creative energy.

Before we begin, I should explain what The Tangle is. The Tangle is a massive growth of vines, plants and foliage that is threatening the village of Adam. The villagers do not know why it is growing. However in the last months it has gotten worse and is threatening the way of life for the village. The game opens with our main heroes exploring The Tangle for an answer to this problem.

The Bass-ics

The first thing I composed for this piece is the bass line. This was actually written during a ten-hour car ride from D.C. to Nashville. My wife took the wheel for a stretch so I decided to get some things recorded via my midi keyboard. I knew I wanted the bass line to be driving (constant 8th notes), cryptic (implying danger), and a bit off kilter, thus the 7/4 time signature. Below is the bass line that comprises the main section of the tune:

7/4 Bass Line

I decided that to create tension and keep a hypnotic lull, I would build parts off of this base line using loops. This worked perfectly with the method I was composing (via midi keyboard) and ended up being a nice example of how I approached things differently in this process. Looping multiple parts on each other worked perfectly for this piece.

Percussion and Choirs

Next I added a basic percussion loop that gave some earth-y flavor. The sound of hand drums signified nature and the ground, which seemed to be a good choice for The Tangle. The next loop to enter is an epic sounding choir. The choir sings in open 5ths which give it a open and non-specific harmonic color. It seemed to be the right choice for the tune at this point:

Choir Ahs

Again, all these loops are fairly simple and a result of me playing off my keyboard.

Time for a Melody

Last but not least is the main melody. I decided to use a pan flute (again going to the nature/earth element) playing in E 5th Mode Harmonic Minor or Spanish Phrygian scale. This scale to me has elements of non-western cultures (and with the possibility of being slightly offensive) seems to capture this other worldly/earthy vibe The Tangle bestows:

Spanish Phrygian Scale

E 5th Mode Harmonic Minor or Spanish Phrygian Scale

I added a small echo and a distorted guitar counter melody. Why? I just thought it sounded cool (a legitimate compositional decision IMO).

The Tangle does feature a second section in 3/4 time. I felt this helped break up the 7/4 and give the piece a bit more momentum. Because the bars are grouped in smaller units, it gives the piece an accelerating feel. Again, I keep the bass lines moving in (almost) constant 8th notes:

3/4 Bass Line

The Coda

The ending section is an interesting coda to the entire piece. I decided to explore the 5/4 time signature. Here’s the bass line:

5/4 Bass Line

It creates a similar effect to the 7/4 irregular time feel with two less beats. In addition, this section has less static harmonic movement and the bass moves through several chords, a needed section to get off us the relentless E Pedal in the other sections. The listener will probably still hear the relationship between this section and the one in 7/4 as the bass still contains a very similar structure.

Fun fact: I group the choir ahs and string melody in two patches each, one with the top voice and second harmony voice separated and panned them hard right and left. This is a technique I hear frequently employed in early Final Fantasy titles and gives the parts a more wide space, rather than each note coming from the same area.

Melody 1

Melody 1 – panned left

Melody 2

Melody 2 – panned right

Conclusion

I hope this article was interesting and informative. The Tangle was one of the most unique pieces I had to compose for the game and challenged me to use a new way to approach the compositional process. I knew that I needed to make the theme special as The Tangle was the opening dungeon and would set the tone for the entire game. It also gave me a unique opportunity to explore some irregular time signatures and utilize sounds that I had not done in other pieces.

The Tangle

Thanks and stay tuned for my next article! Have any ideas on what to write about? Please comment below!

Weekly Content Blog #10: Budgeting the Art Costs of an RPG Pt. 2

This is part two of a three part series.
Part 1: Budgeting the Art Costs of an RPG Pt. 1

In part one I talked about some of the costs and risks related to creating art for an RPG. More specifically I outlined the groundwork I laid for Shadows of Adam early on in its life, so that its art could grow organically within the scope of the project and the budget of our team. As both of those factors grew, so did our art requirements. In order to cover this new demand we looked to outsource some of the work to freelance contractors. In part two I will talk about the overall outsourcing experience, what kind of costs to expect when seeking outside help, and how outsourcing helped shape Shadows of Adam.

Dummies Guide to Outsourcing

The first rule of outsourcing is that you need to hire outside help in order to outsource your work. This can be achieved in many ways; posting ads, reviewing portfolios and sending emails, or drawing from your own list of contacts are just some. For Shadows of Adam I knew of two communities where lots of talented pixel artists post their portfolios, so I chose to check out pixeljoint and pixelation and email the people I was most impressed with. The average rate of a pixel artist is in the $15-40/hr range, with the higher end reserved for professionals in the field. It’s important to know what the expected costs are for the quality of art you are looking for. You can’t expect Metal Slug quality graphics when you’re only paying $15/hr to get them. And even if the artist is capable of creating that quality at $15/hr, odds are it will take them at least twice as long and look half as good as an artist charging $40/hr. This is not even taking into account your ability to provide direction and feedback, and a client’s ability to infer direction, apply feedback, and reliably produce art cohesive to the project in a timely manner. The point is that you get what you pay for. A professional artist is going to cost a lot more than a novice, but they also come with greater security that your investment  in them will be worth it.

Tiles and Tribulations

After some deliberation it was determined that new tile sets would be the biggest bottleneck for our project moving forward, so we recruited for that task specifically. I received a few replies back. Not everyone was immediately available, or fit the standard + price point I was looking for, but I did find somebody relatively fit for the job that was ready to go. His first task was to create a tile set for Dradora, the castle city. Below is a side by side of the new tile set for Dradora, and our first town of Adam.

AdamDradora (2)

The first thing you might notice is that the palette changed, and the level of detail slightly increased. Neither of these were planned changes for the game at this point, but the artist’s struggle applying the original palette to a city theme, and their own personal style produced those results. Overall we were happy with this new direction as a team, and felt that it was close enough to the existing art that nothing already made had to be changed. For the second time the art in Shadows of Adam evolved organically without incurring greater costs. Unfortunately the budding artist took on a more demanding project soon after starting the second tile set for us, and so parted ways with Something Classic for greener pastures.

Winds of Change

Upon losing our first outsourced artist to another company (one of the major risks of outsourcing skilled artists at a cheap rate), we set out to find a replacement to continue work on our next needed tileset, the Wind Tower. I found a skilled and willing artist after another round of emails, and work on the Wind Tower proceeded. During this time more grays were added to the palette and it nearly doubled in size from where it started, more details were added to the tiles beyond the new standard set in Dradora, and the art was taking twice as long to produce. Our new artist’s test round was wrapping up and they were unable to finish the tile set in the eight hour window set aside for them. I was starting to wonder how to keep the game’s palette and style in check while keeping the art costs sustainable. Almost serendipitously an artist I initially contacted in the first round of emails -and really wanted to work with- came around to let me know that they were finally available. After talking about the game’s current art direction and needs, they set out to finish the wind tower and unify the palette that was getting out of control.

Wind_Tower 13

Above is a shot of the Wind Tower that they produced from what was started by the other two artists. The palette was transformed into what it is today, and the style of the game evolved for the third and final time. The biggest changes were in the palette (which got a lot warmer and multi-functional through increased color count), the perceived volume of objects (everything is weighted relative to its importance), and the increased application of small details which are more prevalent but also softer.  Not only was our client able to produce amazing art, but they were also able to provide a fully functioning tile set in the same amount of time that our other prospect was able to put out half the work of similar quality. We were ecstatic to see these results, and decided as a team to hire this artist for 80 hours to rework our existing tile sets, and finish up all the outstanding tile sets. In an effort to save costs, I reworked the rest of our existing assets using the new art direction and palette.

80 Hours Later

Eighty hours later and we have about 3/4 of all the tile sets needed for the game. Animations, interactive level entities, and miscellaneous art demands cut into the time scheduled for the tile sets and we came up a little short of our goal for the funds allotted. On top of that, our new artist also had greater demands elsewhere, and so was currently unavailable to finish up our tile set needs. Fortunately we had more than enough to keep us in production from May to the end of June, which is when the artist’s next block of availability will be. In the interim we have found another top caliber artist to assist us in other areas of the game. Overall Shadows of Adam’s art budget has far exceeded our original expectations, but the results have been worth it every step of the way, and the costs have always scaled with the type of game we ultimately hope to produce.

Tangle 4brashear3

Thanks for sticking with me, and I hope that this post has been informative in regards to some of the costs and processes involved in outsourcing your game’s art. Next time I will talk about the upcoming future for the art in Shadows of Adam, and wrap up this mini blog series with a neat little bow. In the meantime feel free to ask any questions about this series or anything pertaining to them in the comments or on facebook or twitter.

Weekly Content Blog #9: Tools of the Trade

solum6

Hello again from Canadia! Another exciting week has passed and lots of work was completed by the Something Classic team! Our current goal is to reach an alpha state, meaning the game is playable from beginning to end, complete with a credit roll, before doing a final polish pass on the game and adding any extra effects or art to make the areas really radiate. With Luke hammering out some marvelous maps at a super-human pace and Tyler Mire converting our game script into interactive game scenes right-after, our alpha-goal feels like a stepping stone away!

In my last blog post ( Weekly Devlog #3: Battle System and Action Queues) I focused on the battle system and revealed how it was designed from a technical point of view. This week I’m going to mix it up a bit and talk about the tools I personally use to program features and to debug my inevitable failures when the game world explodes in miraculous fashion. As always, Click the thumbnails to view full-sized screenshots :).

traceglIf you don’t already know, “Shadows of Adam” is being built using HTML5 APIs, and the game engine we are using is ImpactJS. One of the biggest obstacles we’ve had to deal with because of this web-based tech stack is debugging. Debugging an interpreted language like JavaScript is significantly more tedious than a compiled language. For a long time, we were using console.log() throughout the code in order to determine if everything was working how it should. This is not an efficient way to work, and if you have a small team like us, you want to streamline your development process as much as possible. Work smart, work fast. Thus, in order to help deal with this debugging mess; I ported over the entire game and engine to NodeJS, and then used a wonderful little code oscillator called traceGL to analyze our JavaScript code in real-time as it runs. TraceGL allows me to filter through the entire source code for certain keywords, in the image to the left I search for “font” and receive a list that is updated in real-time with all of the calls to the font class. From there, I can find the “Darkness knows no bounds” text and trace to the exact place where it is being called. In this case, it is in our “dramatic-message” event command code. We can then trace further and load-up the dramatic-message code and analyze the particular function and receive visual color-coded feedback on the state of each variable in that particular function (True/false). These features are an absolute lifesaver because it allows me to see the code running in real-time and helps narrow down potential issues. The GIF image below is one such bug that would have been a pain to fix if not for traceGL. I honestly had no clue what was happening when I saw it for the first time!
infinite-loop1
The cause was because of a bug where the game started processing the next queued action while the previous action was still clearing itself up; but it only occurred when certain actions were performed in a unique sequence. Typically, when an action is complete it fires a signal telling the action queue that it is done, but because of the way the actions were queued up, a timer-based action can end up overlapping a trigger-based action which caused the queues to fail the timer-based check and never terminate while it starts processing the next action. So when the “HealAll” spell was cast, it was trying to tell the queue manager that it’s code was complete. Except the queue manager received a signal from the prior action saying “I’m not done yet” so it continued processing BOTH actions simultaneously until the end of time. Blargh.

webstormOf course, TraceGL isn’t the only tool at my arsenal. The most important one by far is my integrated development environment (IDE), and for that I turn to Webstorm 10. Webstorm is the Visual Studio for the web, and I honestly couldn’t imagine working on SoA without the powerful feature set it offers. It also has some wonderful debugging options (Complete with line breaks!), but typically I rely more on TraceGL for a more in-depth and visually appealing way to see what my code is doing at any point in time. Like Josh mentioned earlier, we use Git as our version control solution and it has saved our asses many times. If you’re working on a project of any size, make sure you use a version control solution. You’ll thank us later! Webstorm has GIT built-in so I typically use either the built-in GUI or the terminal console straight in the IDE. By using Webstorm and TraceGL in tandem, it provides a very powerful platform for code debugging and helps make me a more efficient programmer.

weltmeister
Full list of tools I use: (Every team member may have minor variations of this)

  • IDE: Webstorm 10
  • Development Server: WAMP
  • Version Control: GIT via GitHub
  • Game Engine: ImpactJS
  • Programming Language: JavaScript, PHP
  • Level Editor: Weltmeister
  • Code Debugging: TraceGL / Webstorm
  • Bug Tracking: Git Issues
  • Feature Progress: Axosoft SCRUM
  • Binary Distribution: Electron
  • File Sharing: Dropbox / FTP
  • Game Script / Design Document: Google Docs
  • Game Object Tracking: Trello / Google Sheets
  • Team Communication: Skype / Email

Weekly Content Blog #8: Decisions, Decisions

Creating an RPG can be a daunting task for an indie game developer. Here at Something Classic, we had to make a conscious effort to balance between ambition and a project that is finishable, all while hopefully delivering a satisfying end product. While we have made our share of bad choices, and still have a ways to go before completion, I would like to go over some project decisions that were crucial in getting the project to the point it is at now. They may not be industry standards, they not even be the best way, but they have definitely worked for us! I hope this helps any aspiring RPG makers.

The Almighty Design Document

The project starts in the design document. The format can be open ended, the content can change, but the design document stays. For Shadows of Adam, the design document established the laws of the project. Violating those laws is a punishable offense. But seriously, any time scope creep rears its ugly head, or we begin losing sight of our goals, the design document is the first place we look.

Time is of the Essence

It’s no secret that games in general are becoming longer. Not only do RPGs follow this rule, they have grown enormously from the 16-bit days. It is not unusual for a modern day RPG to be assessed in terms of hundreds of hours of play time. Naturally, the first decision we made was to keep the game relatively short, with a planned main story of 4-6 hours. This allows for a focused narrative that has some wiggle room for side quests if we exceed our expectations.

Easy on the Nostalgia

Nostalgia can be dangerous. It’s easy to gloss over a lot of warts and imperfections that were always at play in even our fondest memories. The retro aesthetic is a pleasing one, but let’s face it: a lot of classic games had serious flaws. Sometimes we justify this by comparing games to their contemporaries rather than objectively. When it comes to RPGs, however, usability and pacing were huge issues even until fairly recently! For this reason, we wanted to avoid the trap of including mechanics solely because our RPG forefathers had them. No random encounters, clunky menus, or level grinding here!

Focus!

Tying into the above, we wanted to give the project as much focus as possible. By imposing some limitations such as the 4-6 hour game time, we were able to play to our strengths as a small team of specialized members. Any project will have to deal with scope creep or increasing ambition, so the importance of setting a narrow range of parameters cannot be emphasized enough. With our goals clearly set early on, we have been able to refer back to our design doc any time we’ve observed ourselves getting off track.

Version Control, Use It

With the introduction of GitHub a few years ago, version control systems have entered the public consciousness. Well… not quite, but they are certainly more common and accessible than ever. Using Git to manage this project’s code and assets has been crucial for a variety of reasons. First, it allows for true collaboration: everyone can work on asynchronous schedules and Git can resolve any possible merge conflicts. Second, it provides a centralized, authoritative version of the project to be stored online. And third, it makes it easy to revert changes (particularly very bad ones) with minimal effort. There is certainly a learning curve to Git, especially if you are not technically inclined, but the payoff is immense.

Stick With It

The most important thing I’ve learned while being a part of this project is to stick with it. You will always learn cool new ways to solve old problems, or come up with great ideas that seemingly put your current ideas to shame. Ignore it! Keep going forward and try not to look back. Creating a finished game of any magnitude is no small feat, so for me it has been extremely important to not take project completion for granted. While we still have a ways to go, I am confident that these decisions have allowed us to get that much closer.

Solum

Weekly Content Blog #7: Level Design – The First Day

In the beginning, Luke created a map file called testLevel.js. Now testLevel.js was formless and empty. Darkness was over the surface of the deep, and the cursor of Luke was hovering over the abyss.
void
And Luke said, “Let there be light,” but nothing happened. And Luke realized that ImpactJS’s level editor still did not incorporate voice-recognition technology despite months of whining for this feature on the ImpactJS Suggestions forum.

So Luke left-clicked and land or something land-like appeared. And Luke saw that it was good.
void2

Well, not really. It was actually pretty crappy and incomplete looking. In fact, even Luke was not sure what the hell he was looking at. Something like grass maybe?

No matter. Whatever it was, it was clearly distinguishable from the darkness, so hey, that was something. Certainly enough to call it a day. And there was evening and morning—the first day.

Then the next morning, Tyler M. PMed Luke on Skype: “Where the @#$% is the new level?!” And Luke was very afraid and changed his Skype status to “Away.”