Solace Crafting

Solace Crafting
Redefining the Crafting RPG
Showing posts with label Scripting. Show all posts
Showing posts with label Scripting. Show all posts

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, 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!

Sunday, November 6, 2016

Skills to make the kills

Last week I got biomes working in my new level system, currently with a snow and a desert biome mixing in with the main ocean/grassland/moutain biome. This way I can spawn biome specific resources, monsters, encounters and more.

I also simplified my cloud system to just do what I need it to right now, and it's working great. Mixed with a little sun and some minor post effects and we're not looking too shabby.


I also put in some of my speedtrees, which do look a lot better than normal unity trees. I'm not spending much time on them yet, but it's easy to make tons of them once you get one set up.

While on vacation the week before I set out to implement the first tier of skills for the four starter classes called Archetypes. These are made up of the Squire, Scout, Apprentice, and Disciple. Each Archetype starts out with six possible skills choices which are primarily attack focused skills to assist in the first few levels of combat and leveling.


Even before I started writing any code I knew I would need a very flexible system as skills in Solace Crafting are numerous and extremely varied, include player buffs, direct attacks, timed spells, passive abilities, and so on. My system is also a bit unique in that every skill has unlimited levels and needs to be able to scale and blend with other complimentary skills. I more or less had built similar systems before, but it's always great having a chance to start over and really know what you're going into.

The main obstacle is how to initiate skills that are not instant. The Scout has a tier one skill called Double Shot for example that fires two ranged attacks in quick succession. The second arrow has to launch shortly after the first arrow meaning we can't just call single function in one frame. Using coroutines and their yeild capabilities we can create loops for damage over time spells, wait for casting times to finish for complex spells like Meteor, or do a series of completely different things over time like teleport, attack, and warp back.

I have gained a ton of inspiration from League of Legends and their massive array of over five hundred skills, as well as from the classics like Dungeon and Dragons, Everquest, and many others. I plan to build a wide array of skills over time aiming to grant players the ability to be unique and interesting, rather than just cookie cut.

I'm starting now to work on two videos for Steam Greenlight and Kickstarter! Fun times! I will be signing up to IndieDB and more things as I build these two and other screenshots over the next couple weeks.

Sunday, October 23, 2016

Vacation with work?

I am in Hawaii right now! My first vacation other than visiting my family in the states since as long as I can remember! Maybe seven or eight years since I went to Mexico. There are wild chickens, lots of different flora, and half naked humans everywhere!

It's vacation, but only from my day job. I love working on Solace Crafting and hope to get plenty time to code in the sun. I got a lot done last week, but here I am, up before sunrise while everyone else is still asleep. Coffee in hand I'm ready to code, but I'll post a little update as Saturday flew past me.



This week I implemented a universal equipment/buff/attack stat system, so that I can add more types of damage and stats over time; a few skills that can be learned, equipped, and used; basic pathfinding with A*, though it needs work; monster drops; improved inventory/item stats display; added character creation/loading to the start screen; as well as adding player buildings into the save/load equations, which took a little thinking; I also added monster scaling over distance, though it's just levels and hp/damage at this time.

I wasn't sure how I was going to go about the player building saving, but it turned out to work just fine. I had to move rotation into the storage script and was able to optimize the class a bit while I was in there. Being able to save progress is one of the biggest requirement of an RPG type game, but also a pretty complex deal when you start having thousands of items slots in the form of chests, and rewards scattered throughout dungeons or houses you've built over time.

Currently I'm working on implementing the first tier of all four early skill trees, called the Archetype trees. These are Squire, Scout, Apprentice, and Disciple. Each tree has six skills in the first tier and are action/attack heavy as this is where you want to pick your main attacks for the first few levels. I've got some ranged magic skills in, some power attacks, and am working on buffs/debuffs, as well as ranged projectile attacks at the moment.

After that I'll be working on some crafting improvements to make sure the set enchants work, as well as building placement checks to stop floating walls, and that kind of stuff.

Saturday, October 8, 2016

Tiny but lots of steps

Ever since taking on my minimalist stance of just getting everything working no matter how bad it works, I've been making great progress! This has probably turned out to be my most important lesson over the years. I could fuss on making the sunset perfect for months if I wanted to, but that's no way to go about developing a fun game.

This week I got basic saving and loading in, a simple starter screen, monster spawning, resource generation (requires some tricks for terrain based trees), weapon damage, some crafting features, encounter spawning(towers), and a simple recall spell in. I did spend a little too much time messing with biomes and terrain generation, but I learned some lessons.


This isn't the best screenshot... but I don't like posting without at least one picture. Pretty much everything you can see in this shot in unfinished, but the basic programming is all in and working. I have a speedtree license, and hope to use all original trees, but for now have some basic Unity Trees spawning in.

Dimension crystals, like the one in the screenshot, are the basis of long range travel, respawn points, and several other features. That's mostly what I hope to be working on next week. I have a 2d minimap I was using to show crystal locations throughout a world, but I might change that to an easier to use list.

The towers in the screenshot are far away, but you can absolutely run straight to them and climb up them. They don't spawn their own monsters and loot yet, but that's their main purpose and we'll get there soon enough. Eventually I plan to have different towers for each biome such as pyramids for desert, and endless mineshafts in the mountains (which might be hard to see from far away).

The biggest problems looming on the horizon at this point are monster movement/combat AI and pathfinding. I'm pretty confident in the rest of what I'm doing, I might be looking into some third party tools to cover those that area up rather than take up a bunch of my time at this point in development.

Lots of tiny steps, but all necessary, and adding up towards the big picture!

Saturday, May 21, 2016

Monsters, Programming, and Epiphanies



As a crafting heavy game I've spent hundreds of hours thinking of, taking notes, and testing ideas about how to make crafting more controllable. One thing that I knew I wanted to improve on from the beginning, though I didn't figure out how until this week, was a problem made very clear in The Elder Scrolls V: Skyrim. I love the Elder Scrolls series and of course enjoyed crafting my own gear in Skyrim, however, with limited resources and a little testing it quickly becomes clear that repeatedly crafting daggers is the best way to level up smithing.

Now, we're not trying to make a "realistic" game, this isn't a simulator, but crafting 300 level 1 daggers to become a master smith just seems silly. But how do you do better? Game development is not easy. I tried requiring five different items crafted per level. I tried requiring different categories within a profession to be leveled up individually. I tried many things. But ultimately it comes down to how much metal did you bend. If a 3 metal dagger gives 3 exp, why not make a 6 metal sword give 6 exp. We also have tiers of metal, and other factors, but I'm finding this to be a -now- obvious system, though it took a long time to stumble across.

Speaking of crafting, I rewrote all of the crafting code this week into a much more compact system, in some cases reducing over a thousand lines of code into roughly one hundred. How? I'm now using what are known as machines in the code. Rather than "hard coding" the stats for a Sword, a Longsword, and a Shortsword each individually, several variables are input and the machines outputs what is needed. The greatest part of this method is that a new item can be added into the game with one a few lines of code. I hope that this eventually leads to opening the door to community created items by the dozens.

Monsters are in and working well. Spawning with different, skills, stats, and colors based on their biome. They're not the brightest when it comes to pathfinding, but pathfinding in a procedural world is never easy. If anyone is a genius in that field please let me know ;p

The UI has improved a lot. I hope to get more tooltips in over the next week to show information when requested rather than filling the screen up with levels and stats.

My wife and I are buying a house! So I've been pretty busy. And Terrain Composer 2 has been delayed, so I'm not currently working on level graphics. I hope to have more flashy graphics to show off soon =]

Thursday, April 21, 2016

Taking Global Inventory

I find that I don't like to make posts without fancy pictures, but at the same time I don't like to let as much time pass between posts as has the past couple weeks. I did have a hard couple weeks with a string of headaches as the seasons and weather changed drastically here in Japan, but I have also made important progress on parts of Solace Crafting.
Originally I was just reworking the User Interface (UI) though to get it where I want it, for now, I needed to improve the global inventory control system. That being how world items, player items, items left in facilities, storage chests, loot chests, etc. are all managed.

Inventory is not a big deal when you are simply moving things from A to B, but in Solace Crafting we actually have quite a few systems that required quite a bit mode code to get working properly. For one, as shown in the attached screenshot inventory has special slots for raw resources which are upgradeable both in total slots available as well as stack size per slot. These are part of the "Void Storage" system which is important to streamlining resource gathering throughout the Multiverse of Solace Crafting.

The other major user of Void Storage are Dimension Crystals which are player built facilities that let us teleport between locations we deem important. Any dimension crystal can be equipped with void slots for resource storage allowing the transfer of resources between locations as well as remote access for crafting facilities within range. Normally just storing the items on the gameobject itself would be enough, but this way we can track and make sense of where all of our items are throughout the Multiverse.

Now that the inventory system is fully equipped and running well, I have the tools to make persistent objects anywhere in any world. In pregenerated worlds this wouldn't be a problem, but in Solace Crafting we are free to travel thousands of kilometers making the programmed destruction and respawning of everything in the Multiverse necessary.

As I polish some final steps in the crafting UI I'm moving more and more into polishing up the skill system. Soon I'll have my hands on Terrain Composer 2 and then we'll be getting ready for Kickstarter with the dream of developing full-time!

Sunday, April 10, 2016

Environment, Health, and Skills

The User Interface (UI) for Solace Crafting has gone through many different stages of evolution. Recently it has merged into a single cleanly divided overlay. Initially I thought it best to have multiple windows that were movable letting players customize, but to be honest it was a hassle Now as a single static overlay with different tabs things are now much more clear, consistent, and concise.

While implementing the new UI I also added in satiation, hydration, nutrition, and temperature. Each of these four systems is controlled by several different factors, for example when a player is too hot, diseased, or poisoned, their hydration decreases faster, though the end result is displayed with a simple percentage and colorbar.

Most of the weather mechanics are in a flowing freely. They can mix and match a wide variety of stages from hurricanes to monsoons, heatwaves to cold fronts, etcetera. The minimum and maximum
rain or snow, wind, and temperatures are decided by the weather stage, but then move independently making no ten minutes of weather the same.



Temperature becomes very important to survival, though starting out doesn't need to be bothered with much. Come first nightfall you might freeze to death if you're still not wearing anything at all, but that can also be averted with a warm camp fire. In Solace Crafting we manage body temperature whose lengthy exposure to cold or heat will push the player past their limits but skin temperature is handled separately. Thus even a naked player could warm up by a fire enough to gather for a while out in the cold rather than having to sit by the fire until sunrise. Player core temperature and the limits we are capable of withstanding can be managed with armor, as well as special clothing known as underwear, which we'll get into in the future.

In other news, the skill system has gone under a bit of evolution. Rather than creating a skill for everything, I've cut the total number of skills in three, and added related upgrades to almost all skills. Thus a shield bash doesn't become obsolete when shield slam becomes available, instead a chance to stun can now be added onto the shield bash. Further points can be spent to increase the damage, or the stun chance, with a percentage of each point being shared with all related upgrades. This maintains the high level of class customization while keeping the hotbar from getting too cluttered.

I also created a couple monsters and played with a lot of animations and animators, but I'll polish them a thousand fold before we go into that ;p

I'll post more screenshots soon!

Wednesday, March 9, 2016

Google! Google! Google! "It's only a model... shh"

Time to start posting regularly, which is a bit daunting when you're coding and uploading and managing everything yourself. I've decided instead to let Google help me out, and look forward to posting on this site much more regularly that I have on my own. Links to be set up shortly of course.

As far as Solace Crafting goes, progression is steadily moving forward. I've been dabbling a bit in marketing and have learned a great deal at the cost of precious development time. I've also read a lot into company formation and management, or in other words law and taxes, as I take steps towards forming a legitimate legal body to handle sales and that side of things.

Today I simplified a fair share of the recipe databases to make adding in new content and managing what's already there even easier. The structure that all crafting is built on top of in Solace Crafting has a very serious need to be flexible and accepting of new and changing content. Luckily it was built that way from the start!

Though to be honest I spent a lot of my free time cleaning today. Our apartment was getting messy and I gave a lot of our appliances a good scrub. Clearing the clutter is important for focus! Which the next four days will have a lot of.