Tag Archives: indie game

Weekly Recap #15

Kelley and I are almost done moving into our new place! The new Crea update is almost ready too. It is currently in the hands of some testers and I’m fixing bugs as they are found. Not too much to report on this week due to the move and fixing miscellaneous bugs. However, I did make two welcomed additions.

When mousing over an interactable item it glows

When mousing over an interactable item it glows

Vines can now be cut with a swing of a sword

Vines can now be cut with a swing of a sword

I’m anxious to get this next release out and then move onto refining the underground part of world generation to get it much more interesting. I’m going to keep it short this week since I have unpacking to get back to!

Weekly Recap #14

Alright, another week. It has been a good week of progress for Crea. I finally was able to finish up the new monster spawning system, known as the conflict system. Here’s how it works. A world is broken up into many regions. Each region has a hostility level that rises over time. Killing monsters and spawners lowers the hostility and eventually the region will become neutral. If left alone, a neighboring region’s hostility will spread into the neutral region; however, soon it will be possible to purify a region and prevent it from becoming hostile.

When in a hostile area, monsters can spawn from spawners or offscreen. This alone solves many issues with the previous system, such as ensuring that every type of monster will be present in every world. The number of monsters is now based on several factors, such as number of nearby players and the time of day. One change I’ve already laid the foundation for is to allow for more interesting occurrences in hostile regions, such as monster nests, minibosses and even more crazy stuff. However, I first want to get feedback on what I have done so far.

Speaking of which, I have been working on cleaning things up in order to release a new update. There is a great deal of testing and bug fixing to be done over the next few days. Once I get most of the obvious bugs out of the way, I’ll be releasing a build to the Omega testers and after a few days of that I’ll hopefully be releasing the new version onto the Humble Store. I’m somewhat hopeful this will be happening next Monday, depending on how testing and our apartment move go.

Oh, one other quick feature I finally got around to adding is a status during World Generation. Nothing too clever but it gets the job done! world_gen_status

Weekly Recap #13

We made some good progress this week. Most notably, I am nearly finished with planning out the next several months of development. My pages of notes are now laid out in a rough schedule which I’m currently translating to Crea’s project plan.

IMG_1310

As for other progress this week, I managed to fix a huge rendering issue that has plagued me for quite some time. When anything would be slightly transparent it would get a white tint added to it. This was caused by how the lighting was rendered. The main reason for fixing this finally was because I wanted to add in a trail effect when you dash.

Dodging an oil slime attack

Notice the trail effect when he dashes backwards from the monster

Another small feature we got in this week is the ability to do colored text in our chat. This was done by Matt, the new developer, to help get his feet wet.

colored_text

This next week I am finally finishing up combat changes and cleaning various things up. Matt will be looking into getting multiplayer to a more stable place. Kelley is working on the new skill animations. We’ll have a lot to show off next Monday!

The next beta update will be ready soon. It will include a major overhaul on the skills, with many new skills being added. There will also be improvements to the underground biome.

Once that update is released and proven to be stable, I am thinking I will finally release Crea beta phase #3 and start our Greenlight campaign! Beta phase #3 will include the first boss and a few new features, such as a type of magic called “remna.” Then we will finally see the addition of NPCs! Lots of exciting stuff coming up. Just have to get over this development hump.

Weekly Recap #12

The beginning of last week was rough. Being a programmer at heart, balancing is often hard for me to do because there is no obvious right answer. My goal has been to improve combat; however, this is much trickier than I would like.

There are two major constraints that are making this much more challenging than it should be. First is that the terrain is randomly generated and players can change it around. Secondly, adding animations to our characters can be troublesome. Despite these constraints, combat is starting to come around. Some things I have done so far:

  • Refine timing of some monster attacks
  • Oil slime second attack
  • Sand Runner (now called Ortomi) second attack
  • Scrapped shields and dashing
  • Brought back dashing with double direction key press
  • Started working on new monster spawning system dubbed “Conflict”
Oil Slime Attack #2

The Oil Slime’s new ranged attack

Beyond combat, modding API reference documentation has finally began to take shape. Even though it still has a long ways to go it still is looking good. Here is a sample of what it looks like.

api doc

Right now nearly all functions look like this Player.canEquip() with no named arguments and no description text. I would like to eventually have all functions documented (or at least all of the frequently used) like Player.loadInfo() with nice arg names and docstrings. This documentation will also provide how-to mod tutorials. However, this work that can quickly become outdated, so I will cautiously work on it and may seek outside help. If you want to work with me on writing documentation, let me know. Once complete, this will undoubtedly prove to be an invaluable resource to modders.

Lastly, I finally convinced myself to plan the next few months of development which involves several features and much content. For most of Crea’s development I just have been designing as I go, but lately I have found myself getting slowed down by having to context switch too frequently. I am just about done planning things and am quite excited with the results which I will divulge later. Now I just have to implement them!

This next week I am hoping to wrap up these combat changes and the conflict system, which will probably take up the majority of the week. I am anxious to get a new beta build out so I will be working towards getting things cleaned up and ready for a release.

Weekly Recap #11

I have been wanting to get back to posting the recaps on Monday so I’m skipping this week and will post a full recap on Monday. I’m currently waist deep in planning and designing upcoming updates. I’ve had my head in the code for far too long and started to lose sight of what exactly needed to be done and how it should be done. See you on Monday!

Weekly Recap #10

Double digits for weekly recaps! Yay! Some good stuff has been happening this week. A decent chunk of my time went into admin stuff like looking for a new developer, which has gone really well. But more on that later. The rest of my time has gone into designing combat related things.

Proving just how much I really follow my timeline, the first thing I did after some design was implemented the “inventory condensing” that I had earlier planned to be done in about a month. I realized it wouldn’t take that long and have a large positive impact as well as clean up the toolbar. Now your inventory is all on one window which you can now open with ‘i’.

condensed_inventory

This inventory change is a welcome change but not nearly as impactful as the change I made to the toolbar, which was given a major makeover! I scrapped the secondary toolbar. Now each toolbar slot has two items assigned to it – left and right mouse click.

toolbar

The right click item is only shown for the active item. I’m hoping that players will be able to remember what is assigned to the right item by looking at the left item in the toolbar. If that doesn’t work out then I’ll have to rethink the design some. So once the next beta update rolls out definitely let me know what you think!

The rest of my week is being dedicated to continue my efforts on refining combat. More specifically, I’m working on getting timing down for the Oil Slime as well as adding a new attack. My goal is to get the Oil Slime to be a good example to build the rest of the monsters off of. Beyond refining monsters, I plan to tackle monster spawning which I will go into more detail next week.

Other than that, I might be spending some time helping get the new developer caught up to speed. However, I can already see I wont need to do this too much since he appears to be quite brilliant and very self-sufficient. I will give him a proper introduction soon.

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.