Solace Crafting

Solace Crafting
Redefining the Crafting RPG

Wednesday, July 5, 2017

Monday, June 5, 2017

To update or not to update

It was on a night late in May of 2017.
The rain was dumping on all sides of my house.
My right eye had turned red from too much coding.
Still, it was time.
I updated all of my third party tools at once and migrated Solace Crafting into a fresh Unity project. The errors swarmed over me like white on rice. I brewed a cup of coffee, denied my lap to the cats eager to sit on it, and started scanning over 50,000 lines of code.

Not everything about game development is glamorous. Actually none of it is! It's long hard hours squinting your eyes at multiple screens, checking animations, interface events, and cross-script banter. But when things come together, it's something you've created yourself and it feels great.



I started learning game development over five or six years ago (I'm starting to lose track). Solace Crafting finally started taking shape a couple years ago, and I had been dragging some of those scripts and project files around for too long. The move into a new project actually went surprisingly smooth and it did fix a few lingering warnings and errors. What bogged me down was updating all of my third party software.

I wrote not long ago about how great third party software can be for helping broke indie developers like myself get moving rather than trying to code everything yourself. That does at times come with a price. Being able to read shaders, scripts, and animations I'm capable of sorting out just about any problems I come across, but they can come way out of left field and end up taking a few hours to fix.


All is well now, with only a couple requested upgrades/fixes still pending, though the grass system I'm looking forward to is still unfortunately non-functional for my uses. Hopefully that and a couple other minor issues I've found will get sorted out by their developers in the next week or two. It's great getting to give feedback, and get features in return!

As for my own upgrades a big one went into the building system. A fundamental design flaw (my fault) was overlapping parts of buildings, or rather, not recognizing neighbor parts when considering what to offer players to build. I grew up writing voxel engines which do a lot of six-sided interaction. For Solace Crafting's building system though I've moved it to a three-sided system that now treats a North wall as the South side of the northern neighbor, etc. Had to rework a host of rotation and placement scripts, but it's all saving and loading fine now.



With that out of the way I wanted to make a tower, but ran into some collider issues with my stairs. After fixing those I ran into some issues with my player movement physics. After that... There's always something to do =]

I've also fixed a lot of cosmetic bugs that never make amazing tweets, but are still important to good gameplay. I hope to improve the cosmetics as well, like in the screenshot above I don't yet have icons to represent building recipes, and the buildings buttons are pretty cartoony. Getting all of those little details checked off takes a long time believe or not.

At the end of the week I hope to record a quick video going into the building system, and maybe another about the crafting system if I can clean up the enchanting by then. I anyone has 30 grand I can borrow to quit my day job let me know ;p in the meantime I'm still stuck working only at night.

Hope you had a good Spring! We're moving into the monsoon season here in Japan and by the sound of the rain outside the first wave hits right now!

Monday, May 1, 2017

Sifting ideas out of destroyed habits

Habits are a serious danger in many industries. In manufacturing it can even lead to death. When a worker gets used to their job they start to feel safe even in extremely dangerous situations. In the industry of game design we don't have to worry about molten steel being poured over us, but habits can be the death of creativity, and very destructive to our profession.

In order to generate new ideas I like to take apart systems we consider normal, especially if there are players that complain about them. Why is it normal? What problem is it trying to remedy? What happens when you burn it to the ground? Going against our habits takes us out of our comfort zone, and that's exactly where new ideas get found.

Here are some habitual features I destroyed in my search for something better:

Destroyed Habit #1: In any RPG I can think of, there is big boss armor, fancy PvP reward armor, and crappy starter gear that can vary extremely in their usefulness. A common complaint being that crafted gear is so much worse than dropped gear that crafting feels pointless, or that only people that grind for months are ever able to get the "best" gear. In order to prioritize crafted equipment some games will remove dropped gear entirely, asking players to seek out powerful recipes and components instead. Both systems are the same mechanism: there is always a "best" recipe, a "best" sword, a "best" bow, and with patches they get pushed higher and higher to keep end game players engaged.

New Idea #1: What I did instead was to give each recipe the potential to be any level, and to be tailored for any class, using fully customizable recipes. Every weapon does the same base damage, and every piece of armor provides the same base protection. What separates one weapon recipe from another is it's visuals, damage or protection type, and how a player chooses to craft it. This let's players choose equipment based on preference rather than trying to get the same "best" equipment thousands of other people are using. Again, the base math for all recipes is the same, sounds crazy right, but the final product is affected by many different player choices, including: level, rank, materials, passive skills, crafting facilities, color, and above all enchants.

Destroyed Habit #2: As a game world gets bigger and bigger, travel often becomes a concern from a design perspective. Commonly this is partially alleviated using ferries between important locations. The next step is almost always to give higher level players super fast mounts that let them whiz back and forth to wherever they're adventuring. Unfortunately a huge amount of danger is instantly lost as players dart past monsters uninterestingly, and the game world no longer gets much attention as we blur from here to there.

New Idea #2: No mounts, no ferries, ever. Instead, players can build and connect their own fast travel network, but only at places they've reached themselves. Building a teleporter requires light, a currency rewarded for the banishing of evil, so we can't built one every ten steps. We can however create our own points of interest when we find a cave entrance we want to explore, a lavafall deep underground we like, or a town with quests that we're interested in completing, providing a permanent connection to our home base or bases. Maybe we started with a cabin in the woods, and now want to build a castle in the mountains. Getting to the mountains will take some time, will no doubt get us into some fights, and will bring us across many smaller points of interest, secret areas, skill locked rewards, area based quests, etc. Once we find a place we like, we can build a teleporter, and travel freely back and forth between our cabin and our castle. We don't lose the fun and rewards of exploration, nor are we forced to walk back and forth between the same locations over and over.

Destroyed Habit #3
: When leveling up a warrior you are expected to get stronger, when leveling up a wizard you are expected to get smarter. Some wizards use ice, some use fire, but none of them use crossbows. This is because classes are preconceived, built with expectations, and attempt to reward players for their chosen limitations with stronger and stronger attacks. A class may have several paths to choose from, but only a few. In the long run every level fifty character will have thousands if not millions of other characters built exactly the same as they are, destroying uniqueness and any sense of personalization.

New Idea #3: Open classes in Solace Crafting means that you don't choose a class to start out as, but are free to increase the abilities of any or all classes. The more you spend in a class the further it grows. That's not necessarily new, but I've taken this feature further still. For one, each and every skill has no hard level cap. Flame, Fireball, Fire Storm, and Meteor, like recipes, can all be leveled up without end and all use very similar math so that no one spell is the "best," though some are certainly more situational than others. Furthermore, players can mix and enhance their skills with passive abilities such as a chance to stun, or reduced mana cost. This allows players to mix skills from any tree creating the possibility for millions of combinations. It's still a young and evolving system, but I hope more than anything people will have fun with it.

I don't have a staff of hundreds, nor millions of dollars to throw around, yet, so spending my time on fancy AAA graphics just doesn't make sense. I also believe that's not how fun games are made. Looking back at games that have endured the past two decades it's quite obvious that players don't go back to them just to watch the cut scenes for a sixteenth time, they go back because they are fun, because they are engaging. As a solo developer I aim to create a fun and engaging game not through money and manpower, but through ideas.

Sometimes it takes years to work the kinks out, but when a good idea gets noticed, word spreads fast. Here's hoping people outside my head like some of my ideas as much as I do!

Wednesday, March 29, 2017

Building improvements amidst video production

Hard at work on my promotional video! It's coming along nicely, albeit sort of a rough draft version for now. I'm getting all the scenes built, recorded, and in order so that I can make sure the flow and length of the video is good and get a better impression of the kind of music I want to use with it. Here's a little gif from the video I made with the text removed:
I implement little things every day, regardless of what my overall goal for the day or week is. This past few days I put in a new set of building models, upgraded the camera controls/collision detection, and am working on some physics upgrades to the character controller.
Our building system allows for super fast construction. Where you place buildings in most games is a Select type -> Select location approach, but we go backwards. Once an area is selected you can pick from many different types of buildings categorized first by type (edge, floor, roof, etc) then by recipe, wood wall, stone wall, metal doorway, etc. Then you're free to move the placement around using wasd, qe for up and down, and zc for rotating. By default you're locked to the grid so everything lines up perfectly.
Building a long wall is as simple as hitting space to construct, 'a' to move the selector left, space, a, space, a, space, a, space, a, etc.
The buildings are still mostly square, walls, doorways, as well as stairs and stuff, but I want to get some round stuff in over the weekend, maybe tomorrow night! I really want to be able to make castle turrets freely, maybe with a 2x2 placement option in the future, but as a 1/4(1x1) piece for now. You can rotate everything freely already, so that fits into the system super easy.

Wednesday, March 22, 2017

Third Party Goodies

There is a part of us all that wants to do everything from A to Z, write our name on the cover and marvel at our success. In years past this has turned into me working on a feature for weeks and not getting it to half the quality of a 30$ asset on the open market. More recently I've learned that there is a time and a place for doing everything meticulously by hand, and that time is not now.

There is however often some very nice middle ground.


I recently picked up a new weather package to help improve my clouds, sky, and weather, but am not using it as advertised. I already had a weather system that I liked very much, and so have merged the two into a glorious companionship.

I'm using my own cloud maps with more layers than are supported out of the box, spreading the different layers into different short range and long range rendering schemes, some overlapping terrain with others not. I have taken full control of each cloud layers coverage individually, the different layers of rain and their animation sheets, multiple layers of fog, atmospheric scattering colors, and more. It would have taken me months to write all of the helper functions and shaders that I'm using just for the weather.



My budget and free time are non-existent, so it's not easy to pick something and go with, but it certainly beats trying to do everything by hand. Many of the assets available to indie developers such as myself are built by passionate indie developers that spend months or even years perfecting their products... just like me! It's just a different target customer base.

I'm currently hard at work on a promotional video as I finish the last bits of company registration fuss with some help from my family. With Steam's Greenlight getting the axe... I'm not sure how that will all play out, but Kickstarter is getting closer and closer. Stay tuned!

Monday, February 20, 2017

Law and Armor


We now have an official legal body to call our studio! Introducing: Big Kitty Games LLC. It's a pretty simple website for now, but the reality of creating and managing a legal body is a little less simple.  I'm still in the middle of setting up a business account (tough living overseas), and a couple more things to file, but the ball is most definitely rolling.

As a legal body there are now a new set laws I have to be careful of with pretty much everything. For example when I buy an asset on Unity's Asset Store am I paying with company money as a company expense? Right now we're still a one man show with zero income, so I don't have to worry about too much yet, but salary, spending, taxes, and more can all end up costing you unforeseen money if handled improperly.

Despite all of that eating up a lot of my time, it's been a very fruitful month in terms of actual game development. I've added some global settings so that players can turn up and down the quality of the game world. I've also incorporated a simple day and night cycle, am working on some weather improvements.


The biggest change of late is by far my new avatar system. At long last I've got armor pieces swapping individually per slot. Cloth gloves, leather shirt, metal leggings, totally possible, and absolutely necessary for a proper RPG. This system also allows extensive avatar modifications and though not yet fully implemented, I hope to add tons of player customization the point of trolls, ogres, elves, human, blue skin, pink hair, and more. I really believe that players should be allowed to experiment as much as they want, and be given ways to correct things when they conclude that pink hair on their Paladin was a mistake.

I've also got spell and ability effects in and working well, though I still need a lot more.

The game story has also developed quite a bit from the quite random "You exist! Have fun" sort of introduction I had up until now. It's going to require some new artwork so I won't be updating the website just yet, but it really blends nicely into letting players be whoever they want to be!

Monday, January 16, 2017

Runtime marketing, er generation

I've spent a fair amount of time over the past few weeks upgrading the real-time (runtime) terrain generation. For starters I switched from using multiples of 10 to using powers of 2. This has solved more than a couple issues I was having because a lot of the base code in Unity and some of the plugins I am using are built to only work with powers of 2. So instead of 1000 meter terrains we now have 1024 meter terrains, but ultimately the end user isn't bothered as a meter is still a meter.

I also doubled the long distance quality which makes for a longer initial load, but it looks a lot better and doesn't affect performance that much.
The way that the runtime generation is setup allows players to easily specify the long distance draw distance from 16km up to 64km, which runs fine on my not-so-awesome computer. The above picture is 48km though and should be more than enough 99/100 cases. Once the rain kicks up you can't see anything anyway ;p

I've also spent a fair amount of time working on my marketing skills. It's not something I personally like to do, but it's widely recognized as perhaps the most important step for a solo no-name dev like myself. If you don't know how to tell anyone about your campaign for awesome, it just flops its arms in the mud.

I plan to spruce up the UI, loading screens, and the opening screen a bit, and then start digging my heels in the dirt as I prepare for the biggest plea for help in my life, Kickstarter! There are of course alternatives I've been studying, so who knows. Ah for the day when I can call such a glorious profession my own! Until them, I'm here on my lunch break working for a completely unrelated company thinking up new angles to approach my remaining gamedev challenges with =]

Best wishes to you and yours in 2017!
It's going to be a wild ride for me!
Stay tuned!