Author Archives: jmcmorris

Crea’s Current Status

For awhile now I have been giving weekly updates with a narrow viewport into Crea’s progress and what is coming up. I figured it’d be good to provide a broader status update. I’ll go over what is in, what will be enhanced and what will be added. This is not an exhaustive list.

Implemented Features

  • Basic world and character creation
  • Crafting
  • Researching
  • Combat currently with 6 monsters
  • Multiplayer
  • Lighting
  • Water Simulation
  • Realms
  • Mod Support

Enhancements

  • Main menu will receive a major facelift. Such as the last character/world you played will be displayed with a quick play option. Character creation will have more choices and better color selection and character selection will have a preview of the characters. World creation will receive several more options such as being able to provide a seed and specify parameters such as biome frequency. World selection will also be given a quick preview with some interesting stats such as time played.
  • Functionally, crafting is nearly done. The majority of the remaining work lies in balancing recipes.
  • Researching is also mostly done however like everything, I’ll keep refining based on feedback.
  • Much work will be done on Combat. The goal is to get it to be a little more strategic but also faster. This means less hits to kill but using a shield and dodging will be encouraged and sometimes required.
  • Additionally, monster spawning will require some additional love to resolve existing issues such as difficulty in finding needed resources and spawner exploitation is too easy.
  • Multiplayer is barely functional at the moment so it will be receiving much more attention. The obvious goal is to get multiplayer smooth and stable.
  • While there is already a lot for mod support further attempts will be made such as some decent documentation and tutorials. Eventually I’d love to have workshop support in as well but this requires being on Steam.
  • The primary/secondary toolbar concept is currently under scrutiny and may change in the future. One idea I’m considering is showing both and having them be assigned to left/right mouse buttons. Or possibly I’ll scratch the idea completely and only have one toolbar.
  • Inventory is planned to be condensed to a single window. This window would also be used for changing bags. Speaking of which, bags will be made upgradable and obtaining new bags will be somewhat similar to finding bottles in Zelda games.
  • Better underground area
    • More plants, foliage and small items like jars and pots
    • Natural lights such as bioluminescence from plants and monsters
    • More small biomes like the treasure rooms and mushroom tree forests
  • Prettier water. I would also like to have some type of water pressure and water flow but these are lower priority.

Planned Additions

  • More items (Armor Sets, Weapons, Materials)
  • 3+ more biomes
  • 6+ more monsters
  • 4 bosses
  • NPCs
  • Realms
    • Includes dungeons among other things.
  • Movement
    • We want to add in additional ways to move about in Crea. We need to prototype our ideas but the top two ideas are: an air blaster that pushes you in the opposite direction that you shoot the air in; springs that you can bounce off of.
  • Remna
    • Remna is a resource commonly dropped from monsters. One of its uses is to upgrade basic materials to higher tiers. Such as Lumber would become Refined Lumber.
  • Grafting
    • Through this system, you will be able to graft Remna (mentioned above) onto equipment which adds attributes. This is essentially a enchantment system. It will be reasonably indepth and require some planning to get the desired effects.

Eventual features

Will be expanded upon later

  • Cartography (maps)
  • Food and Farming
  • Weather
  • Another playable race
  • Mounts

Priorities and Roadmap

My highest priority is to continue to enhance existing systems. I try prioritize the systems that have the most impact overall. To keep moving forward though, I do add in new features when appropriate (or if I just need a break from bug fixing). Here is a rough roadmap/priority list.

  • Combat Refining
  • Monster spawning
  • Beta Update
  • Multiplayer work
  • Bug fixing
  • Inventory condensing
  • Beta Update
  • First Boss
  • Remna
  • New weapons and armor sets
  • Beta Phase 3 and Greenlight
  • NPCs
  • More monsters
  • More biomes
  • Beta Update
  • Dungeons in realms
  • Beta Update
  • … and so on

You’ll notice no dates are mentioned. I think I have finally learned my lesson that there are simply too many variables to take everything into account, and there are external factors that I have no control over. So I am going to stop trying to predict when things will be finished. However, what I do know is that I am going to make Crea the best game I can make and it will be awesome.

Weekly Recap #9

Phew. The end is in sight for this mod support feature. I knew it was going to take awhile to get through all of the changes I wanted to make. Originally I planned to do it in stages while also doing more visible gameplay changes but shortly after starting I realized that would not be the most optimal.

The majority of these changes were quite intrusive and had the potential to completely break the game, which means I would need to go through and thoroughly test everything for each release. I decided to do this thorough testing after all of the changes have been made. I’ve already encountered some fun bugs like this one (lighting issue around world seam).

Death awaits

Death awaits

To expand on this “mod support” feature, it really encapsulates many small to large changes related to providing a better experience for modders. There have been some great enhancements made such working on support to disable/enable mods on a per world basis without having to restart Crea (UI is not implemented yet). Also I have been reading through the Steamworks API and laying the foundation to be able to easily add support for Steam Workshop. However, most changes have revolved around reworking and simplifying the interface modders will be working with.

A great example of simplifying the modding interface is what I have spent almost all of my time on last week, which is rewriting all of the content scripts. I was surprised how much we already have – 290! This includes monsters, items, plants, tiles, etc. This took several days and much effort/boredom but I am quite pleased with the end result. As an example, here is what the old Greatsword content script looked like versus the new one.

Old Version

name = "Greatsword"
render = Render('mods/base/item/weapons/swords/greatsword.png')
add(render)

item = Item(delay=600, unique=True, use=Substitution('sword', render.image))
item.setUseAnimation("sword", "arm_front")
add(item)

craft = Craft(category='Weapons', subcategory='Swords', level=10, experience=25, service="Anvil")
craft.material('mods/base/item/weapons/swords/broadsword_plus.ce', 1)
craft.material('mods/base/item/recipes/smelting/gold_ingot.ce', 5)
craft.material('mods/base/item/recipes/smelting/iron_ingot.ce', 5)
craft.onCraft = upgradeEquipment
add(craft)

equipment = Equipment('active')
equipment.onCreate = createEquipment(0, 0, [ChangeStatAttribute.create('knockback', (2, 3))])
add(equipment)

add(Weapon("Sword", 65, AttackType.Melee, DamageType.Physical, useMeleeWeapon))

New Version

from core.template.item import Material, Sword, StatAttribute

Sword(
    name = "Greatsword",
    power = 65,
    level = 10,
    experience = 25,
    serviceRequired = "Anvil",
    upgradeFrom = "broadsword_plus",
    materials = [
        Material('gold_ingot', quantity=5),
        Material('iron_ingot', quantity=5),
    ],
    attributes = [StatAttribute('knockback', valueRange=(2, 3))],
)

There are two new aspects here that greatly change things. The first is that there are no imports at the top of each script so you know exactly where everything is coming from. The other is that there are now content templates. Here you see a Sword template that is specialized for creating swords. Templates help setup the boiler plate code and try to provide a more readable interface.

Over this next week I am going to be working on getting Crea completely back up and running as well as fixing up high priority bugs. After that I will be working on getting combat to a better state and also continuing to get multiplayer truly functional. We’ve just about made it through this technical excursion!

Weekly Recap #8

Another week already!?! Since quitting my job I have completely lost track of time. Everyday is the same – work on Crea. Well, that is not completely true…

bigsushi_logo

Last week Kelley and I got to met up with the wonderful guys at bigsushi.fm. We did an interview with them that will be going up on their podcast in the future (around Crea’s Greenlight launch). If you have not listened to them before then you should! Lately they have been hitting up dozens of indie game devs and getting a unique perspective on the life of being an indie. Some of my favorites consist of them talking to Handy Man Studios – Jake (Edge of Space) and Robot Loves Kitty (Legend of Dungeon) but they’re all good! (HINT: You should listen to them)

While there we joined them for a game night which consisted of eating delicious pizza and playing Ouya games. Good times were had. Kelley kicked some butt on Towerfall but unfortunately that is not featured in the videos that you can find by going to this bigsushi post. If you enjoy that then you should subscribe to bigsushi’s twitch and join future game nights. I know I will be!

Progress on Crea has been good. I have been continuing to focus on engine work (mod support). My goal is to try to get the engine to a stable place. For a long time now I’ve been trying to balance between doing engine work, features and content. This is extremely tricky since anytime an engine change is made there is the potential for anything break. Additionally, engine changes often result in needing new worlds and/or characters which I know we all don’t enjoy. And on top of all of that, engine interface changes will break mods. In other words, stable engine equals good.

Engine changes is like removing a card from the bottom of a tower of cards

Engine changes are like removing a card from bottom of a tower of cards

The majority of the week was spent doing a MASSIVE refactoring of the engine to support realms. Previously there was an assumption made that there was one virtual physical space. Wrong! If a torch is placed at position (50, 50) then a light source would be emitted at that position. With the world realm (the main world area) and another realm, lets say a dungeon, there are suddenly two positions known as (50, 50) but we only want to display the light source in the realm the torch is in and not the other one. If not handled correctly a light source could appear in both.

Invisible Torch

Where is that light coming from? Bug Reporting Time!

This is no good. Also this is not only the case for light sources but for all spatial systems such as physics, dropped items, monster AI, and so on. You don’t want an invisible oil slime from another realm attacking you, do you? …I didn’t think so.

When I had finished adding realm support in I took a diff between where I started and where I finished. It was an astounding 25,000 lines long! To reiterate, this is a MASSIVE change. To give some perspective, the entire engine is only about 40k lines of code. In other words, I touched and changed about half of the entire code base that I’ve been working on for a year in a week span. Best of all, it works!

This next week should be the last week of engine work. Afterwards the plan is to fix bugs and finally get combat and monsters to a good place so we can add some more monsters we planned.

Weekly Recap #7

I almost forgot about this! I am going to keep it reasonably short today and as a warning, it is a little technical. This last week I finally got to actually focus on mod support relating work. There is still a great deal left I would like to accomplish but I made a nice dent in it.

My major focus was rewriting how mod packages and their content is handled. Now mod packages have a load order which opens up several possibilities. The biggest one being that two packages can have the same content and the package with a higher priority gets loaded. With this new system, packages will be able to be enabled and disabled on a world basis – so players don’t have to adjust mod settings every time they want to switch worlds.

Another huge and welcomed change is that now content files are referenced by name (“wood”) instead of by path (“mods/base/item/materials/wood.ce”). This was actually a requirement for the mod content overwriting provided by mod priority. In other words, any where the game references “wood” another mod could provide that content and change how it works such as making it possible to place it down in the world and emit a light source.

Similarly, other assets, most specifically images, can now be referenced with a relative path. In content files you would normally be required to have “add(Render(‘mods/base/item/materials/wood.png’))”. Now it can just be “add(Render(‘wood.png’))”. Additionally, I added support for asset redirection, which makes it extremely easy to create texture packs.

Moving forward to this next week, I’m continuing to beef up the game engine for mod support. While I am at it I am also adding support that’ll enable us to add Realms into the game with relative ease when we are ready to. One of my goals is to try to solidify as much of the game engine as possible before we start making any real public pushes, such as Steam Greenlight or trying to get onto news sites.

Weekly Recap #6

The bug fixing continues! More than two dozen bugs have been fixed this week. We also managed to make some impactful gameplay changes: Researching was overhauled, blocks now can go on both the ground and wall layers, the tools (mattocks) were redone, and we implemented some other feedback from our testers. Oh, and multiplayer is supposedly working now!

It was all too common to drop a pile of materials into your research window, click “Research” and go on your merry way. This is not how I wanted researching to function. I wanted it to be more hands on – you’re engaged and making decisions. Consequently, researching needed some heavy modification.

research_desk

 

Now in order to research items you must first craft a “Research Desk” and be nearby it to research. When researching a material you must select the item category to focus on. For each research you can now learn multiple recipes instead of always one. The number of recipes you learn is based off of your craft level and the level of the item(s) you will learn.

research_ui

Researching is feeling much better than before! One remaining change we want to make is to avoid having a single item used in too many recipes. As it stands lumber is used in 56 recipes! That is way too many. In the future we will be limiting a single material to be used in at most 20-25 recipes.

Another massive change is that now blocks can be placed on either the ground layer or wall layer. Before we had “Dirt” and “Dirt Wall”. Now it is just “Dirt”. There are a few major benefits to this approach.

  • The first and foremost is that we have nearly twice as many blocks in the game – meaning more customization.
  • This saves on inventory space.
  • Now all wall tiles are consistently shaded and more easily distinguishable from the ground layer.
  • We can now place ores and other rare resources on the wall that will make for more interesting world generation.

tile_unification

Complimenting this change to blocks, we did a complete makeover of our mattocks (tools) to be more in line with our equipment. Now mattocks have equipment attributes and are upgraded from one to the next. Also now all blocks can be destroyed by any mattock. I believe this will have a very positive impact on gameplay. Previously we needed the rigid block restriction rules to gate players; however, this is no longer the case. Instead we have the nice side-effect of gating progress by having most items upgrade from earlier versions.

mattocks_lineup

 

Anyone got any lumber?

Anyone got any lumber?

 

Even though I don’t always have the time to reply to all our beta players feedback, I’m reading it! Here are a few things that you can see that already made it in the game that was player feedback.

  • Allow placing items directly from the inventory, without having to put them in the action bar first
  • Clicking on a material in the craft UI should take you to that material’s recipe
  • Make it possible to remove wall blocks from behind the player, trees and other things.
  • Better world generation with more caves and ores

placement_from_inventory

Finally, after much toil, I have gotten multiplayer to a working state. I am sure it still needs much love before I would consider it complete. Why did multiplayer take so long and what was wrong with it? Sooo many things… I had solely tested multiplayer on my local connection and things worked perfectly fine; however, once in the real world it immediately broke down. I investigated for days and continued to bug the good people on the IRC for assistance in testing and then yesterday I finally discovered the cause for all my troubles.

One feature I will be working on soon is a dedicated server. Imagine how nice it will be to have dedicated server software for a game for Linux!

Over the last two weeks since we launched beta, I have been working hard to get Crea to a good point with all features to be working well. I imagine there will be several more bugs for multiplayer to come in, but now it is finally time to turn my focus to do some of this work to get official modding support in. I will likely be going back and forth between this and bug fixes/small enhancements over the next few weeks.

Weekly Recap #5

Something amazing happened this last week – we finally released beta! The response has been quite positive. Thank you to all of those that have bought beta to help support us and thank you to everyone for reporting bugs and providing invaluable feedback. Even with all of the help, this still has been the most intense week ever for me (Jasson). Here are my stats from last week.

  • Bugs Fixed: 50+
  • Hours worked: 110+
  • Hours slept: 6/day
  • Times I went outside: 3?
  • Cups of coffee consumed: 25+
  • Times I whined to Kelley about being tired: too many
  • Number of day jobs quit: 1

Overall it was a good week for me and an amazing week for Crea. Over the span of the last 10 days Crea has been transformed from a clunky tech demo to a (mostly) playable game. The beta has breathed life back into the forums and the IRC.

Wonderful fanart by beta tester Lune

I am currently close to being done on fixing the obvious multiplayer issues – the ones I can reproduce. Once that is wrapped up I plan to release a new patch and fix any other multiplayer issues that slipped by. Hopefully that will be a small list so I can quickly move onto fixing water and being done with bug fixing for awhile. I’m considering implementing a few small nice-to-have features and then moving onto doing the major mod API refactoring.

I am anxious to start this refactoring because this is my chance to clean things up that have been bothering me for awhile – something developers love to do. However, I am also quite cautious as this refactoring could cause some large regressions or entirely new bugs. It could also drag on for more than two weeks if I’m not careful. Consequently, I am meticulously planning things out and will be breaking tasks down as much as possible. Additionally, lots of unit tests will be written to assist in catching the wild bugs before they get away – kind of like pokeballs.

Oh yeah, also since I quit my day job and things have calmed down from the beta release, I am now doinglivestreams again. Yay! Come listen to ambient music as I code away.

jdubbhouse

Screenshot of beta tester thejdubb02′s Crea abode

Weekly Recap #4

This last week has been a whirlwind of progress and flew by so quickly! In order to prepare Crea for beta release, we took this last week to focus on polishing. Lots and lots of polishing. Here are some things we did.

Kelley and I finally cleaned up the main menu. Not final but still a much better placeholder than before.

title_screen

Without quality loss

Without quality loss

Explosives!

Normal Bomb

Normal Bomb

Sticky Bomb (WIP)

Sticky Bomb (work in progress)

Equipment names are now based off of the best attribute.

modified_equipment_name

Game settings work nicely now as expected.

crea_settings

And some other notable tasks:

  • Added more sound effects and some music
  • Kelley added description and flavor text for nearly all the items
  • Added a few more items.
  • Fixed several bugs

For this upcoming week we will likely dedicate a large chunk to launching the beta and providing support. Other than that, Max and I have planned to greatly enhance the modding API. Our goal is to get mod support up and running. This will most definitely span multiple weeks but I’m going to try to timebox it in order to keep more content coming.

Expect more news soon!

Weekly Recap #3

Another week has already gone by! This last week was quite eventful. On Thursday I discovered that, amazingly, a TIGJam event (indie game jam) was taking place in a nearby city. It was Max’s last day of his stay at our place, so together we spent Friday at TIGJam. We got a lot of work done on Crea and also met some really cool people. We played Munchkin with Rich Vreeland (aka Disasterpeace the composer of Fez). I even briefly met Edmund McMillen (Super Meat Boy and Binding of Issac), Derek Yu (Spelunky and Aquaria) and several more people. I’m absolutely looking forward to the next TIGJam. In the meantime, more Crea!

We have just about wrapped up the item tooltips. They have received a major style overhaul and several other enhancements. Researchable items now have a nice little icon on them, equipment now has colored names based on its quality, and the positioning of tooltips is improved. We’ll continue to work on tooltips next week.

way-shard-tooltip broadsword-tooltip

Max spent a large chunk of his time cleaning up the world generation. We managed a massive win with handling the underground generation. Previously, we would define a rectangle that would be considered the underground section of the world, but since the surface of the world is not flat there was always at least some space between the visible surface of the world and what the game considered underground. This lead to a large “fun-free zone,” as Max called it, large swaths of earth with nothing interesting going on. We came up with a solution where now we know exactly where the underground starts across the entire world. The difference is quite visible.

Old Underground vs New Underground

Old Underground vs New Underground

Water has finally been added to the world. This required a surprising amount of work. First I had to add in the concept of breathing and checking to see if the player was underwater. Along with that was the need of some type of visual indication of how much breath you have left. I decided to add it to the HUD.

Breath Meter

After that I had to add the water to world generation which was not too bad thanks to the changes Max has been making to it. Immediately after doing this though I discovered that having 30,000+ water cells in the world was a little too much for the cellular automation system. I then went to work on optimizing it even more and am pleased that now the game can handle an immense amount of water at a time.

A snapshot of a world with water in it.

A segment of a world with water in it.

Lastly, I have been working on finishing up the Way Crystals. Now Way Shards will slowly grow nearby the crystals and players can harvest them. Players are able to attune themselves to a single crystal and immediately transport there at anytime by using a shard. Additionally, shards can be used to quickly travel to other crystals when nearby a crystal. way_crystal Progress has been good and we are looking to keep it up this week. Here is what we have planned at the moment:

  • Implementing more sound effects
  • Implementing some music
  • Fall damage
  • Adding window icons on HUD (Talent, Craft, Research)
  • Help Tooltips
  • Bug fixing and general cleanup

We are getting amazingly close to a public beta release. I’m both excited and nervous. It is very likely beta will be happening in the next two weeks.

Weekly Recap #2

Here again with a new recap.  I am pleased that we managed to finish most of what we set out to do this week.

I finished upgrading the crafting system to make it possible to provide equipment as an ingredient. While I was at it, I cleaned up the crafting, equipment and talent UI. Both the crafting and talent UI used dropdown menus to select your current category/talent. At first I thought this was a wonderful idea because it is extremely expandable making it mod friendly; however, after time I have realized that this is a pre-optimization and 99% of new items could fit into the existing categories.

Craft Upgrading

Max spent the majority of the week working on monster spawning. Now spawners are permanently placed in the world and, when taken down to 0HP, instead of being destroyed the spawner is temporarily disabled for 15 minutes. We have plans to give the player the power to destroy spawners and have them respawn much more slowly than what we had before. This is one of those things that needs lots and lots of tweaking to get just right.

Disable Spawner

Boom!

The other big task I worked on this week was adding in water to the world. The simulation was a little broken from months of neglect and once I did get it back up I spent some time smoothing it out. A large chunk of my time was spent on getting the water to be saved with the world and transmitted to clients during multiplayer. I began to incorporate it into gameplay but only got as far as having it affect player movement when I made the decision to wrap up other things so we could release a new early beta build today.

Water (work in progress)

Water (work in progress)

Wrapping things up involves lots of tiny tasks remaining from the larger features such as ensuring that all new items can be obtained one way or another. There is also the task of fixing the bugs that we have created over the last few weeks; fortunately there aren’t too many of those!

Over the next week we are going to be focusing on finishing up several features that need some love.

  • Way Crystals
  • Water
  • Tooltip visual overhaul
  • The “underground” biome, which is being reworked by Max

We will hopefully get to a few smaller things on our list as well but we have lots of planning to do before Max heads back home on Saturday. We have a great momentum and if we can keep it up then the next beta phase is just around the corner.

Equipment Upgrade

Up to this point, we have been very focused on implementing new features and adding in as much new content as possible – quantity over quality. A few weeks ago we started taking a harder look at our existing content and systems. It was then that we made the decision to switch our focus on polishing existing content rather than adding new content.

During one of our design discussions, we began to explore the idea of scrapping the linear equipment progression (iron sword -> copper sword -> silver sword, etc.) in favor of a more original equipment upgrade system. After a few more discussions we had refined the system design and come up with new equipment that is multitudes better than we had before.

The best way to explain is by example. Our swords start with the Wood Club and then progress to a Bronze Cleaver and then a Broadsword. This keeps things simple at the start but once you have the broadsword things start to get interesting.

weapon_concepts

The next best sword is obtained by upgrading the Broadsword by using it in a recipe to craft a Broadsword+. Going from there, the Broadsword+ can be upgraded to one of four different swords: Rapier, Greatsword, Sylic Blade and Artisan Broadsword. Each of these has a different focuses.

  • Rapier provides attack speed bonus
  • Greatsword provides knockback
  • Sylic Blade does magical damage
  • Artisan Broadsword focuses on raw damage
Upgrading Broadsword+ to a Greatsword

Upgrading Broadsword+ to a Greatsword

Each of these will upgrade to the corresponding “+” version and then can be upgraded to the next tier which have their own unique focuses. For example the Greatsword+ can be upgraded to either the Zweihander which can stun an enemy or the Executioner which does more damage the lower HP the enemy has.

Sketches of the sword progression by Max

Sketches of the sword progression by Max

Attributes carryover when upgrading equipment which makes your choices have a meaningful longterm impact. Such as a Broadsword you found with high Magic Attack bonus could make a good Sylic Blade. We have even talked about allowing the player to choose to reset their weapon to a Broadsword but choose to keep some of the attributes making it possible to create truly unique pieces of equipment – like a very fast Rapier type weapon with knockback.

Using a Greatsword to kill an oil slime

Using a Greatsword to kill an oil slime

Of course, swords are not the only thing that can be upgraded. In addition we currently have bows, helms, chests, and legs armor with upgrade tiers. We will likely add a few more weapon types with upgrade tiers as well. There are other items the player can obtain that do not have upgrade tiers or have smaller upgrade tiers. Gloves will grant bonuses for doing things such as gaining bonus TP (Talent Points). Boots provide movement type bonuses such as movement speed or jump height.

Quick concept art of early tiers of chest armor

Quick concept art of early tiers of chest armor

This is not everything that we have planned for equipment though. We have two other systems for making your equipment even stronger that we plan to implement once we get our first boss in. I know I’m really looking forward to seeing the final equipment – I hope you are too!