Browsed by
Author: Tyler Deren

Weekly Content Blog #38: New stuff!

Weekly Content Blog #38: New stuff!

Has it really been five weeks since my last blog post? Time is flying by! Like my last post, I am going to cover some of the changes we’ve done over the past five weeks. Most of the commits to our repository have been simple bug fixes with not a whole lot of tweaks, but there have been a few visual adjustments I’ll share.

Night lighting adjustment
mwoods27night-new
Tim did some changes to our night-time lighting. We wanted a more ‘magical’ feel in our night scenes, instead of an all black environment. This change makes the sprite animations during a night scene easier to see, and makes the environment itself feel more alive with the added color.

Post-processing effect enhancements
filmgrainscanlinesghost-distortion
(Note: Some of the thumbnails are GIFs! Click to view) Before the update, our post-processing effect capability was basically motion blurs. However, we need the ability to do some more intensive layer blending for a few scenes. So we updated our post-processing effect system to handle more screen blending modes and to also apply some real-time filters to a frame for some extra polish.

Airship implemented
airship
Josh hammered out our airship functionality. We don’t have an Airship sprite created yet, so we’re using an enlarged Curtis sprite as our airship. Hey, if we lack the time to do a proper sprite, we’ll just create some elaborate story and give Curtis the power to fly. Stranger things have happened in old skool jRPGs.

New Select Icon + Animations
select-iconnew-animations
We have some awesome new battle attack animations, mostly for enemy abilities.

New areas!
new-area-1new-area2new-area3new-area4

With Luke’s latest maps, there is only one more major dungeon to map out. Every other level is fully mapped with puzzles and other gameplay elements linked up. There is still some polish work that needs done on some of these maps, but they all look solid even without the polish layer!

That’s all for this week! See you soon~

Weekly Content Blog #33: What’s new?

Weekly Content Blog #33: What’s new?

Wow, hard to believe we’re already at Week 33! Initially, this Development Blog was to record all of the week-to-week changes as production continued, and note any new additions (Or subtractions) of the core content and features of the game as time went on. Instead, this development log evolved to be more than that. We delved into musical influences of past composers who influenced the sound of Shadows of Adam, we have a three-part series about budgeting the art costs of an RPG, we have an article taking a look at some of the retro flaws afflicting some classics, we have level design articles and we even have some boring technical articles. Looking through our post history, I noticed we don’t have many articles where we talk about what we actually worked on between posts, so I am dedicating this week “Development Log” towards a changelog of what changed since my last post on September 22, 2015, and quite a lot has changed!

New Menu Skin

The old item menu
The old item menu

menu-item-new,pngmenu-newmenu-save-1menu-save-2

We wanted the ability to change window skins (ala Final Fantasy window colors), and unfortunately the old menu skins were simply a single image texture that had text aligned to match the image. This doesn’t give us any flexibility at all, and makes it impossible to add any movement animations to individual windows since it’s all one big image! Well, that was all fixed! We introduced Scale9 image support and completely re-worked the UI so we can add multiple different window colors, and have it be an option should the player wish it. I think it looks nicer, and it’s easier to work with as well! Still some alignment issues to do, but nothing major 🙂

Area Text Enhancement

area-intro

(Image is a GIF) You know in -some- classic RPGs when you enter a new area, a helpful box appears telling you the area name? We always had that simple feature in, but the area box had to be called using our scene system before it would appear. As such, it was only being used during certain puzzles. We improved this functionality so the area intro actually acts as an area intro, but only fires off once. You want to always be told which area you’re in, and don’t want to talk to the nearest town guard? I’m sure I can make an option for that.

Named (string) IDs instead of numerical IDs

I still find it hard to believe this ‘developer sanity’ feature wasn’t pushed more heavily by the team. Basically, we were using numerical IDs instead of named IDs for EVERYTHING. You want to add a treasure chest to a map? You have to go into the item data files, find the name of the item or piece of equipment you want to give the player, collect it’s ID and then attach that number to the chest object. Oh, what’s that you say? You can collect the item continuously and the chest never goes into it’s ‘Opened’ state? Wellll, for that you have to go into our ‘Treasure IDs’ worksheet on Google Sheets, assign a ‘treasure switch ID’ to your chest in the sheet (To prevent someone from using the same ID) and then assign that number to the chest. BOOM! Your treasure chest is now working! With a named ID, now you just reference the name of the equipment by it’s name, give it a opened state name and BOOM done. No more going back and forth spending coveted development time searching for the ID of the “Basic Armor”, or navigating development folders trying to find the treasure chest switch ID list. Now, it’s all automatic.

Why we never did this sooner? We’re stubborn here in SC land 😉

Quest Flow Engine

quest-flow-1quest-flow-2quest-flow-3quest-flow-4

I can’t believe it took us this long to get this feature in. Our ‘de-facto’ way of handling quest flow for the game is by using boolean switches. Nothing wrong with that, right? Well, our switches (and variables) in the game suffered from the same problem mentioned above. It was all numeric numbers, and was not stored in a human readable way like an actual WORD. You meet a witch in the woods? She turns switch 113 to 1. If switch 113 is 1, then a new monster spawns and turns switch 127 to 1 and 114 to 0. These numbers mean nothing to me (And I’m one of the developers!) Now, with our named IDs, it is very easy to manage our quest flow. Our ‘Quest Flow Engine’ consists of two parts:

  • 1.) The controller
  • 2.) The trigger
  • The Controller is a special object that can be activated by any other game object. All it does is control the state of the game. If your quest flow looks like: ‘talk to Bob’ THEN ‘innkeeper lets you into the secret room’, then once the player talks to Bob, the ‘Bob’ game object tells the controller “Hey, the player talked to me! Set the “Talked_To_Bob” state to true!”
    The trigger is made up of two parts: The condition and the logic. A single trigger can have any number of conditions or logic associated with it. If the Controller has the power over the game state, the trigger has the power over the properties and states of each game object. So using the prior example, the trigger could be waiting for the “Talked_To_Bob” condition to be met, and once met, fires off some logic which updates the ‘Innkeeper’ NPC to allow the player entry into the back rooms.

    Joypad Support + Control key rebinding

    Joypad support was in for awhile, but we never really talked about it. Shadows of Adam supports any Gamepad that uses the XInput API. The standard gamepad using this API is the Xbox 360 controller. If you have an older gamepad that uses DirectInput instead of XInput, we don’t support it natively, but you -may- be able to use additional software to convert the DirectInput signals into XInput signals. Further, we’ve also added in key re-binding. This is a must-have feature in my opinion. There is no way every single player of your game will enjoy the default key bindings, so having the option to re-bind goes a long way!

    Skill Leveling

    Each character has seven core skills, with the exception of Asrael who has eight. We wanted to avoid the level-up mechanic found in classic jRPGs where a party member learns a more powerful version of an already learned skill (Fire 1, Fire 2, Fire 3, etc), so at the end of the game the skill list is populated with a large amount of identical skills of varying strength. Instead, we decided to use a character MP pool, with each skill taking a certain percentage of the characters available pool and a base percentage is recovered each round. Each skill becomes more powerful as a character gains higher attribute points, and the cost of casting a skill remains mostly fixed. I say ‘mostly’ because we wanted the player to be able to customize the builds as each hero becomes more powerful. So we took a page from Super Mario RPG. Every time a hero levels up, the player can choose a single level-up bonus. These bonuses can be a stat boost, a reduction in the cost to cast a skill, and once in a while; a Skill Levelup, which changes the functionality of a single skill to make it much more effective and useful. Every skill can be upgraded three times, but the final “Ultimate” version of the skill may require more than just an option select 😉

    That’s it for this week, I hope you enjoyed this post :). If you have any suggestions on what you would like to see us write about, let us know either in the comments below or on one of our social media accounts, and we’ll see what we can do 😀

    See you next week,

    Tyler

    Weekly Content Blog #28: Meet the Cast!

    Weekly Content Blog #28: Meet the Cast!

    The Wrathling, a fuzzy, cute and mysterious creature from the Wraith world
    The Wrathling, a fuzzy, cute and mysterious creature from the Wraith world

    Last article I talked about post-processing effects and how we are using them in Shadows of Adam. The past three out of the last four weeks have been spent sharing character teasers and I plan on continuing that trend for this week. It’s been a wild ride the past few weeks with a lot going on over at Something Classic land. Look at how our commit frequency has steadily grown over time!

    SoA commit frequency
    SoA commit frequency

    So, let’s meet the cast!

    JoselFaceSmallKELLAN
    Brash, rash, and sometimes crass, Kellan is the golden boy of Adam. Nevertheless, his father Orazio’s shadow falls hard upon him. A shadow filled with disappointment and even contempt. Beneath a veneer of invincible confidence, Kellan wonders whether he is truly ready to follow in the perilous steps of his legendary father.

    Kellan Concept art
    Kellan Concept art

    ASRAEL
    AsraelFaceSmallStrong-willed and no-nonsense, Asrael is the adopted daughter of Orazio, the village legend who disappeared ten years ago. Asrael’s origins are unknown. She was brought to Adam by Orazio when she was very small and with her she brought a secret that Orazio cautioned her to hide. The suspicious villagers never fully accepted her, and ever since she has been torn by conflicting desires. Should she continue to hide her secret in the alienating safety of Adam or forge a precarious new path in the world beyond?

    Asrael Concept art
    Asrael Concept art

    CURTIS
    CurtisFaceSmallA quiet, hulking, powerhouse. He is both the storm and the preceding calm. With unruffled, unwavering poise, he dispatches foes with an unworldly power as enigmatic and perplexing as the motives that drive him.

    Curtis concept art

    TALON
    RavielFaceSmallAlways the underdog, he has struggled with incapacitating bouts of sickness since birth. Nonetheless, he is determined to overcome his weaknesses. He left his friends, Kellan and Asrael, behind in Adam to pursue this course years ago under tense circumstances. Resilient and highly intelligent, he will do whatever it takes to take control of his fate.

    Talon concept art

    Finally, here are the four main heroes together!

    banner_tall_withlogo

    Weekly Content Blog #23: Post-processing

    Weekly Content Blog #23: Post-processing

    So after going over your level design budget trying to figure out how those darn attractive tiles connect to each other, you finally figure it out and have a level. Congratulations! Your game is complete and now you can release and retire to a Nepalese Monk Monastery. Wait, what do you mean the level is bare and has none of that extra juice?

    magma-sanctum

    You let out a loud groan of despair and shake your fist at the user who ruined your retirement plans. As you return to the lowly confines of your office, you plan how you’re going to make the level built by Luke the Wondrous the most amazing level yet seen in the game. You’re young, idealistic and invincible. What can you add that suits your greatness? Which type of effect can be found littered throughout every triple A game? That’s right, post-processing effects.

    scene-blur

    Nothing can bring you down now, for you possess the power of post-processing effects! Now let’s see them say there is nothing to do! Now let’s see if they can find all the secret effects littered throughout the level to unlock the secret super badazz effect boss that can only be beaten with the power of love.

    Shadows of Adam is using two methods to handle post-processing effects; the first, and main method, is using WebGL to render advanced effects in real-time that require full image awareness. Our second, and fallback/OMGNOWEBGL, method is to use native canvas API capabilities to either fake the desired result through hackery, or imitate the effect exactly, but with a noticeable performance hit. Our planned minimum hardware specifications for release is a AMD E3-350 CPU with a AMD Radeon HD 6310 video card; This is pretty low-end hardware, and is primarily found in cheap notebooks or media/playback machines, so hopefully the vast majority of the players will not have any problem playing the game with all of the post-processing effects firing off at it’s highest quality setting.

    I initially had a lengthy article planned about how these effects work in our game, but this post is already a few hours behind schedule and I’ve gone and borked the entire game:
    borked

    and I may be using a tiny bit too much VRAM
    Le-sigh

    So I’ll leave a bunch of images at the bottom, along with a GIF, and use the time-tested excuse of “It’s a feature” and see myself out….

    lens-blur

    vibrance-1

    sharpness-adjustment

    Okay fine, I’ll fix it. Only because you, the reader, are awesome and deserve a product that works.