Jump to content
  • Advertisement
  • entries
    62
  • comments
    103
  • views
    54725

Entries in this blog

I Am Overburdened, looney tuning

Hello there! Time for one last small update before I go into full promotion mode regarding the new I Am Overburdened expansion pack Update The new 1.2.6. version is more of a refinement over the existing stuff, but it packs a lovely change which I hope receives a warm welcome. Screen transition I’ve been fighting with level change for a long while to make it look good and readable. I always wanted to help the player instantly recognize where Joey is when entering a new dungeon floor. Finally what I have now feels really good I should have looked into cartoons for inspiration long ago. Bug-fixes While testing the new content I made for the expansion I’ve stumbled into a few issues A huge error found its way into the game code with the previous update. Wearing the “Wizard Hat” item could cause a crash in certain cases upon reaching a dungeon level with a number of hallucinations in it. Now it’s fixed!
Please accept my apology if any of your runs came to an unexpected end due to this mistake. I’m really sorry. As you can see on this gif some item combinations could mess up the boss fight scene. Not a major problem, but it looked pretty weird. Bad karma (balance) I constantly tweak difficulty related things with each update and this one is no exception. With luck and a few right choices early on you could become too overpowered and I tried to address this “problem”. Now the game tries to push back a little if you are shredding everything in your path with ease. It isn’t drastic but affects your luck and the pickup and chest spawn rates a bit. The second half of the gameplay was affected mostly so the change focuses on later dungeon levels as well. Upcoming The time has come to start showing some real footage from the expansion pack!
The first official reveal is one (or two in this case?) of the new enemies: the Ooze.
You can expect the same level of functional diversity. All new beasts are going to have their own special “thing” The expansion will focus on replay value first and foremost and will NOT extend the story. The new monsters will be introduced as part of the existing dungeons as “variants” at certain sections, randomly selected for each run. That is why the Ooze is encountered in the caves. I made good progress in the last month and it looks like I’m only going to release one more update before I complete the enhanced edition of the game. This also means I’m going to reveal a lot more details about the new stuff in the next few weeks! Shopping When I posted about the condition of my hand, I got a lot of suggestions for what to upgrade on my desk. My right got a tad bit better lately (I’m able to use it as “support”), so I decided to buy and try out some ergonomics stuff. The first thing I tried is a vertical mouse and I have to say I’m really impressed so far. It does feel way more comfortable to use than a conventional one and I got the hang of it almost right away. So if you are using your wrists/hands (and a mouse) extensively for work or your hobbies (art, music, design, etc…) do yourself a favor and get one. Since I was shopping I also got a new mug with my favorite comic book characters Thanks for taking the time to read my post and thank you very much for your support.
Take care!

Spidi

Spidi

I Am Overburdened, optimize prime

Hi everyone! Here comes a not so spectacular, but hopefully funny update for I Am Overburdened. As the name suggest version 1.2.5. is way more swift than the previous one, plus it is equipped with a nasty new trick to terrorize players Hallucination 2.0 Please welcome “positive” hallucinations. Previously when you accidentally drank poison or a venomous creature attacked you, monster phantasms (non-existent hallucinated creatures) would be placed randomly on the following dungeon level. This feature always felt fun, but a bit insignificant. Its impact was quite low because if you played a lot you could figure out in many cases which of the monsters are hallucinated and you never feared extra monsters when in a good shape (health and loot wise). Now other entities (chests, pickup, etc…) can be hallucinated and their placements are influenced by the level templates and the dungeon generator. The new version is way more effective, a.k.a. confusing If you have an existing save-game no worries. The new save files may be a tiny bit bigger (due to the more complex hallucinations), but the game is backward compatible. Inventory triviality A tiny ease of use feature. Now when opening your inventory while standing next to an item or opened chest the relevant item slot will be focused. The slot of the last picked up item still has priority though! Optimization I keep saying that I Am Overburdened runs on a toaster, but what does this mean and is it really true? Well, for the most part, it IS true. I have a 10+ years old laptop on which I test the game from time to time (1st gen 1.5Ghz Atom CPU, 1Gb RAM for real) and the game is able to run at 60 fps (not that it matters a lot with a turn-based game but still). My work desktop is also quite modest so a performance mistake surfaces easily. The more taxing parts where the real problems lie are switching between screens and launching the game. Checking loot Sadly the inventory screen had a blatantly unoptimized implementation. Opening it could cause almost a second long halt on my older machine. It was still my original prototype implementation. Silly me, sorry for the inconvenience. I simplified the layout data of the screen, remade the loading algorithm and voila. Now it can load within the same frame of the press/click even on a simple computer.
A bit slowed down recording of the old and the new inventory opening for comparison. Parts of these changes got into the previous version so you may have experienced the speedup to an extent already. Startup So on the before mentioned toaster, it took 5+ seconds to show the title screen after launching the game. This was mainly due to pre-loading almost all the assets and saved data so that handling the content while the game is running can be simple. I postponed tiny parts of this, but the logic largely stayed the same and instead I choose to simplify the majority of the game data to speed-up load times. Still not lightning fast, but I measured a hefty 40-50% win which is really nice Tech talk So doing some optimizations is definitely a nice thing for the game, but the readers probably won’t die from excitement after skimming through these paragraphs
To spice up the entry a little I’m going into some of the details. Warning, technobabble ahead! Starting out optimizing? Easy: measure, measure, and measure. Don’t dive in changing around stuff like a madman since you could easily try to optimize algorithms which don’t really take much time or you could introduce massive changes without big wins. Once you have the answer to “what specifically needs to be optimized” and “what can actually be optimized (preferably with the least effort)” questions you are officially ready to make a mess out of those parts of your code-base
After you change something guess what? You measure some more to make sure your experiments do make things faster… Skeletons in the closet I mentioned a lot of data and loading related changes. Simply because reading meta-data took the most time (descriptions of items/monsters/pickups/chests/skills/effects + screen layouts and settings). I knew instantly I could easily optimize these with big wins, because I’m a lazy programmer What that means is I often use simple, generalized tools (usually built-in or third-party and throwaway solutions) for many things to save development time, but these tend to be quite slow (like XML and reflection…). var monsterDescriptions = xmlSerializer.Deserialize<MonsterDescription[]>(file); Yes, it really is this simple to load stuff if you are lazy Before someone attacks me for my choice, I’m not advocating this approach. It does usually work out, but I know that these shortcuts can bite you later on. Back to optimizing So switching to a format which is easier to parse and still not hard to work with. My solution: CSV
It eliminates redundant data, tooling support is quite good (excel, google docs, etc…), it is still text-based and super-duper simple to load. <!-- ... --> <EffectDescription> <Name>Splash</Name> <Sprite>EffectSplash</Sprite> <EaseInSeconds>0.35</EaseInSeconds> <EaseOutSeconds>1.0</EaseOutSeconds> <MaxTransparency>0.66</MaxTransparency> <AllowFlip>false</AllowFlip> <Layer>Ground</Layer> </EffectDescription> <!-- ... --> The old XML version of a special effect for a skill. Name,EaseInSeconds,EaseOutSeconds,Sprite,MaxTransparency,AllowFlip,Chained,Layer ... Splash,0.35,1,EffectSplash,0.66,False,,Ground ... The CSV version of the same effect (the header/meta-info is not repeated for each entry as opposed to XML). My first tests showed a whopping 75-80% load time decrease with some types so I went full steam ahead with converting the data and the loading routines to CSV. I know there are actual wars fought over XML versus JSON versus YAML versus INI/TOML etc… with a lot of casualties already , but before I get some glaring looks for my idiotism for originally using XML over JSON as an example think again! With JSON/YAML/… you still have a ton of redundant data (the property names are duplicated for each object the same way as with XML) and you are probably still using reflection (which is a huge factor in speed) whereas with manual loading and a simple format like CSV you do get 0 redundancy and can easily implement parsing without any runtime type information. EffectDescription ReadEffectDescription(CSVLineReader lineReader) { // each Read* call jumps to the next cell in the CSV line var effectDescription = new EffectDescription(); effectDescription.Name = lineReader.ReadString(); effectDescription.EaseInSeconds = lineReader.ReadSingle(); effectDescription.EaseOutSeconds = lineReader.ReadSingle(); effectDescription.Sprite = lineReader.ReadString(); effectDescription.MaxTransparency = lineReader.ReadSingle(effectDescription.MaxTransparency); effectDescription.AllowFlip = lineReader.ReadBoolean(effectDescription.AllowFlip); var chained = lineReader.ReadString(); if (!string.IsNullOrWhiteSpace(chained)) { effectDescription.Chained = chained; } effectDescription.Layer = lineReader.ReadEnum<EffectLayer>(EffectLayer.Spell); return effectDescription; } Reading the effect shown before using a simple manual (non-reflective) CSV reader construct. With converting a huge chunk of the data I saved some disk space too. From 62727 (XML) to 11930 (CSV) bytes which is almost an 81% reduction in size Tips time! Spidi, this all sounds nice but what if I have complex composite data (vectors, colors, arrays) or nested data (dictionaries, trees). Most of these problems can be addressed: Vectors/colors turn into multiple columns (position.x, position.y, colortint.r, colortint.g etc…), or you can turn them into single-cell string “scalar” value: 123;456 (x;y ‘;’ character used as separator), 0xFF0000FF (color red as hex RGBA) etc… Arrays/lists are a bit trickier, but if you have relatively small collections (only a few entries) you can use the same approach as with vectors: 0;1;2;3 (‘;’ character used as the entry separator). Dictionaries? No problem! The first column can be a “Key” column if it can be expressed as a scalar. Done. Trees with parent and child relations? No problem! The first column can be the “Id” column to identify elements and the second is the “Parent” which has the id of the parent element. This way you just need to look out for ordering or you build the tree as a “post-load” step. If all else fails? Then you either stick to your exiting format if optimizing it is not an absolute must or you look for a different representation (e.g.: binary) if it has to be faster. To give an example for both cases the save-games in I Am Overburdened had a hand-rolled binary format from the get-go, but I “had to” stick to XML for the item database. In the latter case, I did not want to lose the ease of editing of items (a lot of work goes into tweaking them) plus the skill data structure is super complicated. I did manage to throw out reflection and use a hand-rolled parsing method though…
Oh my goodness, but parsing XML/JSON/YAML/… by hand is utterly disgusting, isn’t it? Well, there are patterns to make it pretty simple: // XmlPacker structure, PackUnpack methods implementing read & write for each primitive string PackUnpack(string name, string value) { if (this.IsReading) { // Checks whether a property read has to be performed // and if the name matches the node if (ShouldRead(name)) { return this.Reader.ReadElementContentAsString(); } } else if (this.IsWriting) { this.Writer.WriteStartElement(name); this.Writer.WriteValue(value); this.Writer.WriteEndElement(); } return value; } // Item class void PackUnpackPropertiesXml(ref XmlPacker packer) { this.Name = packer.PackUnpack("Name", this.Name); this.Type = packer.PackUnpackEnum("Type", this.Type); this.Sprite = packer.PackUnpack("Sprite", this.Sprite); this.Sound = packer.PackUnpack("Sound", this.Sound); this.Level = packer.PackUnpack("Level", this.Level); // other properties ... } // When reading "PackUnpackPropertiesXml" is run in a loop for all child nodes This is called the pup or pack-unpack pattern (at least that is how I know it) and it helps immensely. The actual property parsing code becomes really simple and you will get both a reader and a writer method automatically only by making this one method for a type. Validation Yep, these are relatively major changes for extra performance so besides measuring your results you should definitely evaluate whether the data loaded from the new format matches exactly the old version! Some tips on how to do this efficiently if you have the old loading methods and the new one is already implemented: Equals: implement an equality check for the given type and evaluate with it whether the data loaded from the old format matches the data loaded from the new format. Write: implement a write (save) method for the given type in an arbitrary expansive format and save both the data loaded from the old format and the data loaded from the new format. Now compare the saved data. Assert: generate a bunch of unit tests from the original data. You can execute these asserts on the data loaded from the old format (to make sure code generation worked as intended) and then on the data loaded from the new format. This is my favorite by the way. Was it all worth it for faster startup and inventory opening? Yes, absolutely! Besides improving the user experience, I always had plans of porting the game to mobile platforms. In the last few months with all the optimizations I’ve done I believe it is going run flawlessly without sucking the batteries dry Upcoming? My hand is only a tiny bit better, but at least it is not killing me nowadays. I’m slowly working towards finishing the expansion for I Am Overburdened. Sorry for not sharing new details about it with this entry. To make up for it I’m going to post images and gifs showcasing some of the new monsters and items with the following update For next time I’m planning to release another tiny graphical enhancement. Thanks for reading my post and much love for your support.
Stay tuned!

Spidi

Spidi

I Am Overburdened, cracks showing

frequentHello everyone! This entry will be a bit more personal and full of rambling about game development in real life and how come making a tiny bug-fix update for a game takes a whole month. Stay awhile, because if you can put up with my whining, you are going to read some real advice The unexpected Around a month ago severe cartilage damage and bone wear (arthrosis) was diagnosed in my right wrist-bone(s). This is a permanent change. One that quite possibly will heavily affect my future I always had problems with my hand, we could call it chronic pain I guess, but it never was so frequent or so drastic that I thought something could be really wrong… In middle school, I thought it must be my hobbies. A lot of Diablo and other games plus art (both classical and digital).
In university, I thought it must be my studies. My hobbies stayed with me and I started programming multiple hours daily.
As an employed programmer, software became my full-time job and I thought it must be my life-style. I started pouring hours after work into game development and art daily because I really wanted to make games, not just business software. Probably you are rolling your eyes by now, that I must be crazy for not taking care of myself, but I’m pretty sure if you are reading this you may have a similar history and of course I always did everything I could to heal. I always took sufficient rest, sometimes totally stopping these activities for a few days taking medicinal products to recover, plus in the last few years, I used various supporters to help my hands during work.
I never experienced wild long-lasting pains. Except for 5 weeks ago. I heard it called pianist disease by a Doc and it is fairly common amongst musicians, artists, programmers, essentially anyone using their fingers and wrists excessively for work. I’ve been doing physiotherapy and taking medication during the last month besides keeping my hand in a splint and barely using it at all. It is better now. I only experience pain if I disobey the “try not to use your right hand!” rule Doctors told me that the pain will become manageable, but surgery seems to be necessary if I want to use it again for work… Yep, you guessed it well. Even though I’m right-handed (was?) and relatively fast at typing (was!) writing this entry took me a while because I used my left hand only. That is how a tiny bug-fix update takes a month Now onto the advice part:
Life will throw unexpected things at you. Even if you are at a point where everything seems to click and nothing can stop you, I’m pretty sure there is something that can. Take care of yourself and if you happen to experience similar things consult with a doctor to see if you can prevent bigger problems down the line. The update Since players discovered some glaring issues lately and I just managed to repair a few long-standing problems, I decided to put out a build with important fixes in it ASAP as version 1.2.4. Not saved Sadly the path was not “ensured” (existence of directories) in all cases when saving the game. I estimate, that this could affect quite a few people, but not many reported it so far on any of the channels for the game. I hope this means it worked for most people and not many run into it If you did lose a save I’m really sorry. Please accept my apology and know that now it is fixed and works as intended. Hallucinated boss Some items in the game are totally insane and their combinations, well let just say they can lead to weird outcomes One of these is the “Carnival Mask” which can turn monsters into hallucinations. It cannot be triggered on the boss level, as there are no other monsters around the boss itself. Except when you have an item on you which can summon monsters in certain situations. Mix in some chemical X and bang! The boss can easily turn into a hallucination, preventing the player from completing the run. Funny thing is that I already had a configuration coded for items to optionally disable them against certain enemy types (e.g.: the boss), but I probably thought this could not happen.
Fixed! Left-handed Due to the underlying technology I used the game could not support left-handed mouse usage (left and right buttons switched in the operating system). I swapped out parts of the tech and fixed this problem. As you can guess I only realized the existence of the issue when I myself started using my mouse in this mode To all the left-handed people in the world who would have loved playing I Am Overburdened with a mouse: I’m sorry for not realizing this before! Focus on what you are doing! There were some reports about the game occasionally capturing mouse input even if its window is not in focus. I tried fixing this before, but I never had the complete picture about what is going wrong. I’m still not sure if it is fully fixed, but I could reproduce a case when it occurred and with the input tech change, I could correct this problem too. Special thanks to all the community members who reported and helped in the diagnostics of these issues. Is this the end?! This slowed me to a crawl (no pun intended), but there is no way I’m stopping game development
I just wasn’t prepared for it. Neither physically nor mentally. It will take some time getting used to it, but my left-hand dexterity is getting better each day and hopefully, surgery will further improve the state of things later on.
It is uncertain now how long it will take, but I will follow through my plans and deliver the content expansion pack for I Am Overburdened. Thank you very much for reading my post and for all your support.
Take care!

Spidi

Spidi

I Am Overburdened, experience tidbits

Hi there! So it came to pass, that only a tiny update gets completed within two weeks while working on another way bigger project
Hopefully, the user interface enhancements in I Am Overburdened version 1.2.3. will be appreciated still. The book of monsters The biggest (albeit functionally neglectable) change is the new “Book of Monsters” layout. Now the unlocked monsters can be explored using a scrollable grid just like in the case of the “Tome of Artifacts”. It looks much less crammed + this was a necessary change for the future Yep, this also means new monsters will join the party with the upcoming bigger content update (currently it looks like 4 to be more exact) and for this to happen the presentation had to be changed beforehand to accommodate. Scroll madness All the scroll-bars (not just the new monsters book one) were updated to handle up/down clicks too + screens where scrolling grids reacted to mouse movement (Stash, Treasury), were fixed since they could produce horrible noises with the quickly changing focused artifacts. Nearby beasts How could I forget about this feature?! The same thing was implemented for the “Tome of Artifacts” with nearby items long ago, but somehow I missed this one. Opening the “Book of Monsters” next to an enemy now selects it immediately. Tome hot-keys I also added hot-keys for accessing the tomes (Left Ctrl + A for the “Tome of Artifacts”, Left Ctrl + M for the “Book of Monsters”) with only one press as they may be opened semi-frequently during play. The input guide was updated to reflect these changes. In-game inventory on steroids! A real nemesis of mine. I could not find a good way to notify the player about nearby items so far. I tried multiple things in the past (some even made it into the game), but I was never satisfied.
I think I got it now? I really like the current version. Let me know what you think! Little development history One thing I tried long ago was changing the color palette of the slots which may be affected by a neighbor item pickup. Empty slots became lighter and used slots became red. I scrapped this approach because I could not find good enough color variants and it generally did not look that useful. To give at least some help to the players I decided to add in-world slot notifications. I liked them quite a lot so I released this feature a while ago, but I admit that functionally it was not best (e.g.: with a full inventory the slot icons don’t help too much )… Then it hit me! Don’t change the slots I have to focus on, change the ones I don’t have to focus on. May sound counter-intuitive, but it worked way better than my first color based attempt It wasn’t a ~perfect solution though. I just could not pinpoint the best time when to fade in and out unrelated slots. It looked a bit chaotic. With some iteration, I worked it out though. If there is a rapid change just forget the whole thing (disable the feature) so it doesn’t bother the player and only fade out the unneeded slots if the player stays still a little nearby an item (or items). Summer Sale In the meantime I Am Overburdened also joined the Summer Sale! You can buy it at Steam or at itch.io for dirt cheap (50% Off – 2.49$, may vary based on region). What’s next? This is the first “teaser” update where changes related to the expansion pack crawled into the official build of the game and I shared tiny but concrete info about what is to come. Expect a few more updates like this in the upcoming weeks, but soon (hopefully really soon) I will unleash a bigger and better I Am Overburdened upon the world Thank you very much for following my progress and for all your support.
Stay tuned!

Spidi

Spidi

I Am Overburdened, cosmetics

Hello everyone! New I Am Overburdened update, new entry
This time instead of launching new content or features I’m upgrading the graphics of the game a little. Graphical facelift As I hinted before on social media I’ve been working on multiple graphics related changes. This is the first update for I Am Overburdened focusing only on the visual aspect. If the response is good I may create another similar one Let me know what you think! Auto-Tiling The biggest graphical improvement is the auto-tiling feature of the dungeon levels. In short, it is a technique to (dynamically) change tiles based on their neighbors to achieve a much less “blocky” look and to add depth to the scenes. To me, the difference is night and day. It does make the grid structure of the levels less readable (functionally may be a bit of a downgrade), but it makes the dungeons feel much more claustrophobic so all in all, I feel like it is a big win Some technical details: The most flexible and well-established method is the “blob” or 8-way auto-tiling where you create special tile graphics with the required corners for all the relevant neighbor combinations (47 exist, the first part of the image). Each neighbor is represented by a bit (power of 2 value, the second part of the image) and by combining the flags of the ~important matching neighbors you get a unique value identifying the required tile. Even though I coded a system like this long ago I decided to go with a different technique because of the amount of graphical work required… So I switched to the “sub-tile” approach. It is super simple to implement and requires much less sprite work while still achieving a similar result. The idea here is to split tiles which require special corner graphics and check the relevant neighbors for each corner. To cover each situation 4 variants are required so 16 sub-tiles. Based on the horizontal, vertical and diagonal neighbors of a given corner the appropriate sub-tile graphic can be selected and voila. Auto-tiling. Crystal clear The looks of the last episode in the game received some valid criticism. My original goal was to make the “Crystalline Cavern” a bit confusing. Almost like a place full of mirrors. I think I went a little overboard and visual clarity suffered a lot. I’ve redrawn parts of the tile-set, recolored the rest and a new walking effect was introduced to preserve the reflecting and mirror-like feeling. Rain The ambient sounds in the inn just weren’t doing it justice. I added some splash effects outside of the building to set a more convincing mood. Bugs & Performance The fixes and optimizations are graphics related too. The biggest enhancement is the introduction of multiple (rendering) layers within the effect system and overall improved effect handling performance. Effect layers This problem probably did not bother many players, but some environment effects looked funny before the introduction of multi-layer spell effects.
Fixed! Mouse control sprites There was a tiny sprite state related bug which could only occur when controlling the game with the mouse. Not anymore. Spell performance Although the game could always run on a “toaster” hitches and frame-spikes during spell heavy moments weren’t uncommon. This is now a thing of the past. Next stop? Work continues on I Am Overburdened. The planned content expansion pack is shaping up nicely. So far, I deliberately kept concrete info about it to the minimum since I’m still really bad at estimating the work left and I would like it to be a surprising and bigger release. This means the upcoming few updates will be similar to this and the last one (just a bunch of tiny changes), but I’m going to start teasing the new features in the following weeks Thanks for taking the time to read my post.
Take care!

Spidi

Spidi

 

I Am Overburdened, journal entry

Hi there! Maybe I should start with some rambling about why I’ve been dormant for so long, but I want to jump right into the details of the latest I Am Overburdened update I’ve just released. I’m leaving the boring bits to the end ! Update Version 1.2.1. has a plethora of changes, but most of these are fixes, tunings and other tiny additions. All in all it is not THE huge content update I’ve been teasing, but it has a bunch of nice things I hope many will appreciate. The game has been localized to German ( …) and Spanish ( …). With this second set of official translations the game now supports 7 languages 😮 ! Hopefully this way even more players will be able to enjoy the wacky descriptions and dialogues I would love to add even more in the future, but I can’t make promises yet as these take time and money. Will try my best. Special thanks to the translators for their work:
Nico Weiß (canemus): German, Juan Buleo (PsychoKurt): Spanish Mouse and UI When I Am Overburdened launched it lacked proper mouse support. I patched-in this feature shortly after and I tried upgrading it ever since, but there are still a few ideas left worth pursuing. Book graphics and controls The menu book graphics were improved with a simple trick and all the screens received separate “Back” and “Close” buttons. This way it is way easier to navigate them (some menu “stacks” were quite deep) + now it is possible to move around with only the left mouse button easily. In-game UI There is a new book icon under the health-bar for opening the menus. Again this allows left mouse button only navigation during play. Inn renovation The same way the user interface needed some changes to better support controlling the game with mouse only, the inn had to be updated a bit to accommodate. I added a journal next to the innkeeper which can be used to access the main menu. Stash confusion Many players claimed that they did not notice the “Stash” in the inn and had no idea about collecting starting items. Mea culpa, this was a big design error on my end. Now when it has items in it there is a smoke effect triggered when entering the inn similar to the ones accompanying other unlocks and play variants. Hope this helps in discovering the unlocked starter items. Bug-fixes and tweaks Besides adding new languages a lot of localization fixes found their way into the game. Layouts of the menus were changed a little to make translated content better fit them. I also increased the item pickups notification time for longer fluff texts as translators suggested. A small balance change was applied too. The luck penalty on nightmare difficulty has been decreased to 3 from 5. It is not a heavy impact modification, but it does make nightmare an itsy-bitsy less luck based. Path-finding I made a mistake in the underlying path-finding system which caused a rare but weird issue when controlling the player with the mouse. Fixed! That is all for this update, but soon more will follow! So what’s up? Sadly In the last six months I had to face a lot of difficulties (financial, personal and housing/moving related). Due to this I left the game hibernated and as a result its community dwindled I really wish to do a 180 on this. I’m going to have free time for making updates in the upcoming months and I already re-organized my TODO list and plans. I’m also working on a somewhat “new” project pretty closely related to I Am Overburdened To sum it up, I really had neither time, nor money or energy to work on the game. Thankfully it looks like now I’m on track to complete updates I’ve been dying to deliver for months now Thanks for taking the time to read my post.
Stay tuned!

Spidi

Spidi

I Am Overburdened, saving my soul

Hello everyone, So much time has passed. I’ve been away from my online life and making games for months. Thanks to some new opportunities it looks like the time has come for me to return to active development again And what better way to restart my venture than putting out new updates for my games I will share some details about my short term plans soon, but I’m devoting this entry to a long-overdue I Am Overburdened update! Update Version 1.2.0 is live and the highlight of it is the save-game feature! Besides this one major addition, it is mostly a bug-fix and tweak build. Save & Exit Finally the game can be suspended in the dungeon and continued later. Since a full play-through is relatively short plus I Am Overburdened is primarily a rogue-like and save-scumming would undermine this core idea so only one save slot exists. Of course more could be added with slots only having a continue option if there are genuine requests for it, but I think the game works well this way. This is more like a convenience feature to be able to stop playing at any point you wish and finish the run when you have the time to spare. The pause menu had to be reorganized a bit, since it was already crammed. As you can see it’s cleaner now and the last option saves and closes the game. I would like to create a more technical post too about this specific feature. Kind of like a tutorial about aspects of save systems. Let me know if you are interested! Immediate (Save &) Exit The immediate exit hot-key was remapped from F10 to F9. Sorry about this change, it was a necessity (os/platform reasons), but as a bright side it also supports saving the game. So now if you hit F9 during play and the game could be continued (e.g.: the player is not dead ), the state will be saved just like when saving and exiting using the pause menu. This change is already reflected in the input guide. Pesky bugs I’ve been working on the game on and off in short bursts in the last months and alongside with the community I discovered some problems too. I fixed quite a few things so I’m simply going to list them: Few items and their related skills could cause a crash under super specific circumstances. It’s not likely many of you run into these issues, but if your play was interrupted by a crash I’m sorry.
Certain item skills with persisting effects (e.g.: Fear, Cripple) could get stuck or be triggered on recently summoned/resurrected monsters in rare cases. These were not visible, but could affect how well you did, so my apologies for the occasional unfair (de-)buffs.
The positioning of hallucinations from toxicity effects (e.g.: Toad monsters, poison in potion) were not correctly randomized. These hallucinated monsters were always placed in the upper-left quarter of the map, breaking the illusion. Now this is fixed.
A while ago I added item-slot notifications to item pickups and chests when standing nearby. It did not occur to me though, that with this modification the treasury pickups and chests triggered unnecessary ones too. Oops, fixed!
  In balance With this update balance tweaks found their way into the game too. There were still some complaints regarding this aspect, so I made normal mode a tad bit harder and nightmare difficulty a tiny bit more forgiving. These are not substantial changes, only slightly affecting the pickup and chest spawn rates. Another extra is “near death” detection. Simply put if you end up in a really bad situation at some point, the game tries not to punish you even harder on the next dungeon level These changes are subtle, so they keep the game challenging, but they were introduced to make it more fair at the same time. Boss confusion Some people found the boss level corpses confusing. I don’t know if the new version will work out better (this is not the first time I change this ), but now the number of corpses (below the one serving as the story hint) are tied to the unlock progress of the boss entry in the monster book. I know some other unlocks still need more and better hints too. I’m going to work on these problems in the near future… Am I still alive? Yes, pretty much. Due to personal and financial reasons I had to put full-time game development on hold for a long while, but I’m back now and I will be working on my projects in the upcoming months. Before I vanished from the face of the INTERNETZ I teased possible ports and a bigger content update for I Am Overburdened. These are not forgotten and progressing well In a week or two I will reveal more details about my plans. Until then, have a fun-filled time.
Thanks for reading and take care!

Spidi

Spidi

 

Magic Item Tech, Summer Sale (Steam / itch.io)

Hi everyone!

Two Magic Item Tech games have joined the "Summer Sale" on Steam and itch.io

I Am Overburdened



The silly roguelike full of crazy artifacts and a "hero" who has 20 inventory slots, is 40% off so currently it's only 2.99$ (may vary based on region, base price is 4.99$) !

You can buy it at Steam or at itch.io.

   





Go go go dungeon crawlers !!!

Operation KREEP



The best couch co-op multiplayer Alien satire action game, is 83% so currently it's only 0.50$  (may vary based on region, base price is 2.99$) !!!
If you are a sucker for retro party games like Bomberman (Dyna Blaster) or Battle City make sure to give it a try!

You can buy it at Steam or at itch.io.

   





Remember:
In space no one can hear you KREEP...

I hope you check them out and they will be to your liking ! 

P.S.: Magic Item Tech also has a Steam developer page now. Feel free to follow me there to receive first hand news about my games, updates and sales.

Thanks for taking the time to read my post, have an awesome summer full of fun
Cheers!

Spidi

Spidi

I Am Overburdened, tiny achievement

Hi there! Lately I had less free time to post updates about about my games, but I just released a tiny new update for I Am Overburdened and I have some news/plans to share so here comes a short entry Update Version 1.1.8 is online, featuring mostly fixes and fine-tunings, but lets see in detail what it has to offer! Achievement bug fixed Due to some timing and file-reading mistakes in rare cases some achievements were not unlocked. The boss, monsters and the four artifact unlocking related trophies may have been affected for some players. Now the problem is solved and I added an extra step to the startup logic of the game so that achievements missed by previous versions will be unlocked automatically (e.g.: if you unlocked all the monsters, but the achievement is missing). My apologies for each of you who run into this problem. Item pickup and shop enhancements Item pickups (especially buying one in the shop) bugged quite a few people, due to not knowing what kind of item one receives. I wanted to leave item collection as a "mystery" and unlocking artifacts being both a reward and a learning process, but I understand the inconvenience of this. To alleviate it a little I added a simple item slot notification when the player moves next to an artifact. Another hopefully useful addition is the "same item speech" in the shop, which triggered before when you tried to pick up an item you already own, but now it triggers before buying items you have equipped too. What's next? Finally the Mac and Linux ports are getting closer to the finish line and the save-game feature is already functional ! It will still take a week or two to stabilize and complete them, but they are next in line and will be out later this month Anything longer term? I'm also working on a bigger update. I may have mentioned it before, but it is still too early to show anything in action, however it will see the light of day by the end of summer. My long term plans are a bit vague at the moment. I think I have clear goals in my mind, but no exact plans on how I could reach them. I want to deliver more updates for I Am Overburdened and I would love to port it to multiple platforms (console and mobile to be exact), but I don't really have the resources nor the contacts to really do it. Will see what the future holds... As always if you have useful tips for me, any suggestions or critique, I'm all ears.
Drop me a comment or a mail! Thanks for reading my post and for your continued support.
Take care!

Spidi

Spidi

 

Operation KREEP - Weeklong Summer Welcoming Co-op Sale

Hi everyone!

Operation KREEP, the best couch co-op multiplayer Alien satire action game, is 83% off for a week (only 0.50$ 😮 , may vary based on region, base price is 2.99$)!
If you are a sucker for retro games like Bomberman (Dyna Blaster) or Battle City make sure to give it a try!







You can buy at:

   



There is also a demo if you want to see the game in action first:
http://www.indiedb.com/games/operation-kreep/downloads

If you are interested in the development process, my devblog and my website holds a great bunch of write-ups about how it was made:
https://magicitemtech.com/category/operation-kreep/

Remember:
In space no one can hear you KREEP... I hope you check it out and it will be to your liking ! 
Thanks for taking the time to read my post. Cheers!

Spidi

Spidi

 

I Am Overburdened, where have I been?

Hello everyone! It’s been a while since my last I Am Overburdened update and I haven’t posted anything online for more than a month now. In this post I’ll showcase the changes in the latest version which went live today and I’ll go into what happened to me. Update So I uploaded version 1.1.7. It does not contain many new features or new content, but has some nice additions. The game has been localized to French ( …), Danish ( …) and Romanian ( …)! These are the first bunch of official translations besides English and Hungarian. I’m hoping the game will reach more players with new languages added. Of course I would like to add even more in the near future and I already started talking to translators to make this happen. Special thanks to the translators for their work: Nicolas Fourcroy (French), Victor Fisker (Danish), Fazekas Sándor-Imre and Vezsenyi Ákos (Romanian) Another addition is the “developer” tools for localization and QA. In the latest build of the game three debug screens can be accessed. Of course these were developed for internal use, primarily to test translations, but I thought they could help anyone who would like to localize the game. So I cleaned them up and added an option to access them in the release builds too. I also created an official guide how these tools can be used and how new languages can be added to the game. P.S.: I guess using them could be considered cheating (spoiler alert!), since you can see all the items and monsters the game has to offer even if you have not unlocked or seen them previously. Sale To promote the new languages and the game itself a bit, currently it is 40% off for two weeks, so you can get it for 2.99$ (may vary based on region). You can buy it at Steam or at itch.io. What is up? So yeah, long time no see and this update isn’t a huge one neither. What is going on with Magic Item Tech?! Last month I stopped focusing on my projects and made the decision to find a full-time job. I already have a position secured at a studio. This does not mean goodbye, my contract allows me to keep my company and I’m not abandoning my games. Magic Item Tech and I Am Overburdened will not be forgotten, only they are becoming a secondary commitment. Besides job hunting, organizing and integrating the translations, I also worked on new features from time to time. If you checked my Trello board recently you already know that the “save game” feature is getting close to completion. I’m planning to release ports and content updates too in the future. They will take more time due to working on them on the side, but I will try to make all the ideas I mentioned before a reality . Thanks everyone for reading my blog and for all the support I got from you. I’m not sure when, but sooner or later more posts will follow. Take care!

Spidi

Spidi

 

I Am Overburdened, recap and numbers

Hi everyone! It has been more than two months since I released I Am Overburdened and since I wrote a devlog entry. Please accept my apology for this, I was super busy with the release and support of the game. But now I’m back with an in-depth analysis how the overall production and final numbers turned out . Summary I want to do a fully detailed breakdown of the development and business results, but I don’t want break it up into a typical postmortem format (good, bad, ugly). I’ve drawn my conclusions, I know what I have to improve for my upcoming projects, but I don’t want to dissect the I Am Overburdened story this way, I want emphasize how much work goes into a game project and focus more on how a journey like this actually looks and feels like. If you really want know my takeaways, here it goes in a super short format: I consider the game a success from a development perspective (good), but I failed from a marketing and sales standpoint (bad and ugly). Now I go into the details, but will focus more on the objective “what happened, how it went, what it took” parts. Development The game started out as a simple idea with a simple goal in mind. I partially abandoned my previous project, because it ballooned into a huge ball of feature creep, so I wanted to finish a more humble concept in a much shorter time period. The original plan was to create a fun game in 4 months. I really liked the more casual and puzzle-y take on the roguelike genre like the classic Tower of the sorcerer game, or the more recent Desktop dungeons and the Enchanted cave games so I set out to create my own take. I designed the whole game around one core idea: strip out every “unnecessary” RPG element/trope and keep only the items/loot, but try to make it just as deep as many other roguelikes regardless of its simplicity. From this approach the “differentiating factor” was born, a foolishly big inventory, which helped me to define and present what I Am Overburdened really is. A silly roguelike full of crazy artifacts and a “hero” who has 20 inventory slots. Most of the prototyping and alpha phases of the development (first two months) went smoothly, then I had to shift gears heavily… Reality check After 3 months of development, when all of the core systems were in place and when I deemed big parts of the content non-placeholder, the time came to show the game to others. I realized something at that point, forcing me to make a huge decision about the project. The game was not fun . The idea was solid, the presentation was kind-of ok, but overall it was simply mediocre and a month of polishing and extra content in no way could change that! Back than I was super stressed out due to this and I thought about this as my hardest decision as a game maker, but looking back I think I made the right choice (now I feel like I actually only had this one). I decided to postpone release, explore the idea further even if it doubles!!! the originally planned development time (and it happened ) and most importantly I decided to not make or release a “shovelware”, because the world really isn’t interested in another one and I’m not interested in making/publishing one… Final scope So after 4 months of development, feeling a bit glum, but also feeling reinvigorated to really make the most out of I Am Overburdened I extended the scope of the design & content and I also planned to polish the hell out of the game . This took another 4 months and almost a dozen private beta showings, but it resulted in a game I’m so proud of, that I always speak of it as a worthy addition to the roguelike genre and as a game that proudly stands on its own! Some numbers about the end result: It takes “only” around 30 to 40 minutes to complete the game on normal mode in one sitting, but due to its nature (somewhat puzzle-y, randomized dungeons & monster/loot placements + lots of items, unlocks and multiple game modes), the full content cannot be experienced with one play-through. I suspect it takes around 6 to 12 full runs (depending on skill and luck) to see most of what the game has to offer so it lends quite a few hours of fun . There are 10 different dungeon sets and they are built from multiple dozens of hand authored templates, so that no level looks even similar to the other ones in one session. They are populated by 18 different monsters each having their own skill and archetype (not just the same enemy re-skinned multiple times). And the pinnacle, the artifacts. The game has more than 120 unique items, all of them having a unique sprite and almost all of them having unique bonuses, skills (not just +attributes, but reactive and passive spells) and sound effects. This makes each try feel really different and item pickup/buy choices feel important and determinative. The game was also localized to Hungarian before release, because that is my native language so I could do a good job with the translation relatively fast and this also made sure, that the game is prepared to be easily localized to multiple languages if demand turns out to be high. Production numbers How much code I had to write and content I had to produce all in all to make this game? It is hard to describe the volume/magnitude with exact numbers, because the following charts may mean a totally different thing for a different game or in case of using different underlaying technologies, but a summary of all the asset files and the code lines can still give a vague idea of the work involved. Writing and localization may not sound like a big deal, but the game had close to 5000 words to translate ! I know it may be less than the tenth of the dialogue of a big adventure or RPG game, but it is still way larger than the text in any of my projects before… I’ll go into the detailed time requirements of the full project too after I painted the whole picture, because no game is complete without appropriate marketing work, a super stressful release period and post-release support with updates and community management work . Marketing If you try to do game development (or anything for that matter) as a business, you try to be smart about it, look up what needs to be done, how it has to be approached etc… I did my homework too and having published a game on Steam before I knew I had to invest a lot into marketing to succeed, otherwise simply no one will know about my game. As I said this is the “bad” part and I’ll be honest. I think I could have done a much better job, not just based on the results, but based on the hours and effort I put in, but let’s take it apart just like the development phase. Development blog/vlog
I started writing entries about the progress of the game really early on. I hoped to gather a small following who are interested in the game. I read that the effectiveness of these blogs are minimal, so I tried to maximize the results by syncing the posts to at least a dozen online communities. I also decided to produce a video version because it is preferred over text these days + I could show game-play footage too every now and then. I really enjoyed writing my thoughts down and liked making the videos so I will continue to do so for future projects, but they never really reached many people despite my efforts to share them here and there…
Social media
I’ve tried to be active on Twitter during development, posting GIFs, screen-shots and progress reports multiple times a week. Later on I joined other big sites like Facebook and Reddit too to promote the game. In hindsight I should have been more active and should have joined Reddit way earlier. Reddit has a lot of rules and takes a lot more effort than Twitter or Facebook, but even with my small post count it drove 10 times more traffic to my store page, than any other social media site. Since the game features some comedy/satire and I produced a hell of a lot of GIFs, I tried less conventional routes too like 9gag, imgur, GIPHY and tumblr, but nothing really caught on.
Wishlist campaign
I prepared a bunch of pictures up-front featuring some items and their humorous texts from the game. I posted one of these images every day starting from when the game could be wishlisted on Steam. I got a lot of love and a lot of hate too , but overall the effectiveness was questionable. It only achieved a few hundred wishlists up until the release day.
Youtube & Twitch
For my previous Steam game I sent out keys on release day to a 100 or so Youtubers who played any kind-of co-op game before, resulting in nearly 0 coverage.
This time I gathered the contact info of a lot of Youtubers and Twitch streamers upfront. Many were hand collected + I got help from scripts, developer friends and big marketing lists ! I categorized them based on the games they play and tried talking to a few of those who played roguelikes way before release to peak their interest. Finally I tried to make a funny press release mail, hoping that they will continue reading after the first glance.
I sent out 300 keys the day before release and continued the following weeks, sending out 900 keys total.
And the results?! Mixed, could be worse, but it could be much better too. 130 keys were activated and around 40 channels covered the game, many already on release day and I’m really thankful for these people as their work helped me to reach more players.
Why is it mixed then? First, the videos did generate external traffic, but not a huge one. Second, I failed to capture the interest of big names. I also feel like I could have reached marginally better results by communicating lot a more and a lot earlier.
Keymailer
I payed for some extra features and for a small promotion on this service for the release month. It did result in a tiny extra Youtube coverage, but based on both the results and the service itself all in all it wasn’t money well spent for me (even if it wasn’t a big cost).
Press
This was a really successful marketing endeavor considering the efforts and the resulting coverage. I sent out 121 Steam keys with press release mails starting from the day before release. Both Rock Paper Shotgun and PC Gamer wrote a short review about it in their weekly unknown Steam gems series and the game got a lovely review from Indiegames.com. Also a lot of smaller sites covered it many praising it for being a well executed “chill” tongue-in-cheek roguelike . The traffic generated by these sites was moderate, but visible + I could read some comforting write-ups about the quality of the game.
Ads
I tried Facebook ads during and a bit after the release week + in the middle of the winter sale. Since their efficiency can not be tracked too well I can only give a big guesstimate based on the analytics, sales reports and the comparison of the ad performances. I think they payed back their price in additional sales, but did not have much more extra effect. I believe they could work in a bigger scale too with more preparation and with testing out various formats, but I only payed a few bucks and tried two variants, so I wouldn’t say I have a good understanding of the topic yet.
Some lifetime traffic results: So much effort and so many people reached! Why is it “bad”, were the results such a mixed bag? Well, when it comes to development and design I’m really organized, but when it comes to marketing and pr I’m not at all. As I stated I never were really “active” on social media and I have a lot to learn about communication. Also the whole thing was not well prepared and the execution especially right at the release was a mess. The release itself was a mess . I think this greatly effected the efficiency! Just to be more specific I neglected and did not respond in time to a lot of mails and inquiries and the marketing tasks planned for the launch and for the week after took more than twice as much time to be completed as it should have. I think the things I did do were well thought out and creative, but my next releases and accompanying campaigns should be much more organized and better executed. Time & effort I don’t think of myself as a super-fast super-productive human being. I know I’m a pretty confident and reliable programmer and also somewhat as a designer, but I’m a slowpoke when it comes art, audio and marketing/pr. For following my progress and for aiding estimations I always track my time down to the hour level. This also gives me confidence in my ability to deliver and allows me to post charts about the time it took to finish my projects . Important thing to note before looking at the numbers: they are not 100% accurate and missing a portion of the work which were hard to track. To clarify, I collected the hours when I used my primary tools on my main PC (e.g.: Visual Studio, GIMP), but it was close to impossible to track all the tasks, like talking about the game on forums & social media, writing and replying-to my emails, browsing for solutions to specific problems and for collecting press contact information, you get the idea… All in all these charts still show a close enough summary. 288 days passed between writing down the first line in the design doc and releasing the game on Steam. I “logged” in 190 full-time days. Of course more days were spent working on the game, but these were the ones when I spent a whole day working and could track significant portion of it + note that in the first 4 months of the project I spent only 4 days each week working on I Am Overburdened (a day weekly were spent on other projects). Release So how the release went? It was bad, not just bad, “ugly”. After I started my wishlist campaign, close to the originally planned date (2017. Oct. 23.) I had to postpone the release by a week due still having bugs in the build and not having time to fix them (went to a long ago planned and payed for vacation). I know this is amateurish, but the build was simply not “gold” two weeks prior to release . Even with the extra week I had to rush some fixes and of course there were technical issues on launch day. Fortunately I could fix every major problem in the first day after going live and there were no angry letters from the initial buyers, but having to fight fires (even though being a common thing in the software/game industry) was super tiring while I had to complete my marketing campaign and interact with the community at the same time. The game finally went live on Steam and itch.io on 2017. Nov. 2 ! I did not crunch at all during development, but I don’t remember sleeping too much during the week before and after launching the game. Big lesson for sure . I saw some pictures about the game making it to the new and trending list on Steam, but it most probably spent only a few hours there. I never saw it even though I checked Steam almost every hour. I did saw it on the front-page though, next to the new and trending section in the under 5$ list . It spent a day or two there if I remember correctly. On the other hand, itch.io featured it on their front page and it’s been there for around a whole week ! With all the coverage and good reviews did it at least sale well, did it make back it’s development costs, if not in the first weeks at least in the last two months? Nope and it is not close to it yet… Sales In the last two months a bit more than 650 copies of I Am Overburdened were sold. Just to give an overview, 200 copies in the first week and reached 400 by the end of November, the remaining during the winter sale. This is not a devastating result, it is actually way better than my first Steam game, but I would be happier and optimistic about my future as game developer with reaching around 3 to 4 times the copies by now. To continue as a business for another year in a stable manner around 7 to 8 times the copies total (with price discounts in mind) during 2018 would have to be reached. I’m not sure if the game will ever reach those numbers though . If you do the math, that is still not “big money”, but it could still work for me because I live in eastern Europe (low living costs) + I’m not a big spender. Of course this is an outcome to be prepared for and to be expected when someone starts a high-risk business, so I’m not at all “shocked” by the results. I knew this (or even a worse one) had a high chance. No matter how much effort one puts into avoiding failure, most of the game projects don’t reach monetary success. I’m just feeling a bit down, because I enjoyed every minute of making this game, a.k.a. “dream job” , maybe except for the release , but most probably I won’t be able to continue my journey to make another “bigger” commercial game. I may try to build tiny ones, but certainly will not jump into a 6+ months long project again. Closing words It is a bit early to fully dismiss I Am Overburdened and my results. It turned out to be an awesome game. I love it and I’m super proud of it. I’m still looking for possibilities to make money with it (e.g.: ports) + over a longer time period with taking part in several discount events the income generated by it may cover at least a bigger portion of my investment. No one buys games for full price on PC these days, even AAA games are discounted by 50% a few months after release , so who knows… If you have taken a liking to play the game based on the pictures/story you can buy it (or wishlist it ) at Steam or at itch.io for 4.99$ (may vary based on region). As an extra for getting all the way here in the post, I recorded a “Gource” video of the I Am Overburdened repository right before Christmas. I usually check all the files into version control, even marketing materials, so you can watch all the output of almost a year of work condensed into 3 minutes. Enjoy ! Thank you very much for following my journey and thanks for reading.
Take care!

Spidi

Spidi

 

I Am Overburdened, it’s alive!

Hello there! In the big sprint towards publishing this game I forgot to update my blog with a proper release announcement . I had to split myself in millions to actually finish the game and put it out there, but still, silly me how could I forget . Takeaway: I have to prepare better for my next release, but I heard from other developers, that no time is actually “enough” . Released Yes, I Am Overburdened was released at evening (by GMT) on the 2nd of November. It can be bought on Steam and itch.io for 4.99$ and there is a launch-week 20% discount so get it while it’s hot (currently at 3.99$ which may vary based on region)! There is also a tiny extra for my previous customers, call it a “gesture” if you will. On Steam if you bought Operation KREEP before, there is a Magic Item Tech RETRO Bundle to “complete my games” and you get an extra 10% off for I Am Overburdened (sorry itch.io users, I haven’t found a way there to bundle it like this). First day Now that I’m over the big rush for the release and over the first day, I can slowly ease into handling issues and working on updates, fixes and fine-tunings. The first batch of feedback is really positive and I got decent featuring from the press so far, which is awesome. People seem to understand and like the game, many even praise it and are really enthusiastic about its future . This is an awesome feeling! The game is up to a slow start sales wise but it is too early to draw any kind of conclusions (it’s only been a day). Of course I will do that in a few weeks in another blog entry. Fingers crossed . Thank you! Allow me to grab this opportunity to formally say thank you. Thank you for all who followed the development. Thank you for those who supported, helped and encouraged me along the way. Thank you for everyone who contributed, either with tips, suggestions, testing or critique. And thanks for everyone who already bought the game, I hope you all are having a great time ! I’m adding a new screenshot about the inn in the game (pun intended ), because in the last two weeks of development I changed it a bit (added even more stuff to the game ). Thanks for reading, I’ll be back with more stuff soon.
Take care!

Spidi

Spidi

 

I Am Overburdened, so close, yet so far...

Hello there! This is going to be a painful post for me, but I got to do it ... TLDR:
I had to postpone the release of I Am Overburdened by a little more than a week, to the 2nd of November ! That is the Steam workshop page. The build is approved, only a press of a button would make it live, yet I messed it up big time! During the "hopefully final" test session this weekend I discovered few severe technical issues (bugs yuck). Since I went to a family visit I did not start fixing stuff + it would have taken more than a few minutes (still tried to work a little during the middle of the night , but with no luck yet ) . I also miscalculated how much time I will have for creating proper release marketing materials today, so all in all I simply did not prepare well for the 23rd of October. I can not express how sorry I am and how shameful I feel right now. This was an extremely hard decision to make. I made a lot of posts around the INTERNETZ with the previous release date, trying to gather some interest around the game, but releasing it in this state would go against my principles. I simply don't want to publish a buggy product. I know, I know, there will be bugs, no software is perfect, but as I stated numerous times before, a good game tomorrow is better than a mediocre one today and we are talking about only 10 extra days. "If it is only a few bugs and a bunch of marketing materials why not only a few days instead, why more than a week?!" Good question and the answer is simple. This is already and immensely embarrassing situation, even though I know I'm making the right choice. I feel like I'm letting people down who wanted to play the game today . It is a no-brainer, that I don't want to end up in something similar again. Targeting the 2nd of November will give me plenty of time to fix the remaining issues and prepare for a better launch without an absurd work-schedule. I hope you understand my decision and forgive me for my messed up planning. I thought about continuing the release calendar at least. I prepared the first extra one and if you are interested I will keep posting it . Again, I'm really sorry. I'll try to make it up to you with an even better game !
Take care.

Spidi

Spidi

 

I Am Overburdened, coming soon!

Hi everyone! This entry is a bit more like an announcement and less like a devlog entry, but here it goes:
I Am Overburdened is going to be released on October 23 for PC !!! Here it is, the release trailer featuring some fun game-play footage in all its glory: Store, platform, price & wishlisting The game will be sold primarily through Steam and itch.io for Windows PC initially. The future platforms will depend on how well the game does sales wise. I would not like to promise any other devices/OSs upfront as porting can be a big effort so if the game flops I may not have the time/capital to deliver. It will cost 4.99$ (may vary based on store & region). It is a relatively short game, but has a huge “replayability” factor. Since it is run focused and has permanent death, completing it once will take less than an hour, but the game has enough content (artifacts, monsters, procedural dungeons, unlocks, game modes) to keep it fresh for dozens of playthroughs. I really believe it is a correct price point. It has a lot of fun stuff to keep you entertained for a while . You can already wishlist the game on Steam to get an e-mail on release day: Or you can follow my developer profile on itch.io to get a notification: My website, the Steam store-page and the Steam Community Hub already has a lot more information about the features of the game and the release itself. Release calendar I’m doing a little marketing “sprint” thingy up until the release day. I’m calling it the “Wishlist Release Calendar”. Essentially, to promote the game a little, I’m going to release an artifact from the game every day with its “fluff” text on various channels (here too) updating or posting the new version of the following image: Heeeeeeeelp! If you like the game or liked it’s development “story” you can help me. Wishlisting the game now on Steam (even for buying it later) or buying it on release day (there will be a tiny discount ) supports me tremendously. Even if you are not really interested in buying/playing the game you can help. How ?! It’s simple, share it. Share a store-page link or the trailer with friends and relatives who may be interested in playing it. That is all! It’s really nothing, but it may allow the game to reach a broader audience, and thus in the long run may allow me to further support my game development journey . Thanks in advance. Promises, future No one knows how the future unfolds. I have confidence in the game, because it is AWESOME, but I’m crazy nervous . The success of a game doesn’t only depend on its quality (or I should say the quality it’s developer perceives ). No matter how this release turns out I can promise more devlog entries . At least one about the last development weeks of I Am Overburdened and a little later a postmortem entry about it. My journey may change course, but it doesn’t end here , wish me luck ! Thanks for reading and thanks for all the support so far!
Take care.

Spidi

Spidi

 

I Am Overburdened, striving for balance

Hello there! I'm still alive and working on the game so I jump right into what I worked on in the last month or so. Even though I was pretty silent a lot has "changed". The topic will be polishing, because it never stops , some input handling tricks and another pretty complex one: game balance. Polishing During a series of play-test sessions with friends, family and old colleagues I gathered some really valuable feedback on how to enhance the user experience. Thankfully the game itself was well received, but the mentioned "issues" really bugged me, so I sat down for a week or two to further enhance the presentation. Cost indicators This was a tiny addition but helped a lot. Now the color of the chest and shop item cost texts reflect the state whether you can open/buy them.
Animated texts I went into an in-game UI tuning frenzy, so I added a "pop" animation on value change, besides the existing yellow highlights, to gold and attribute texts.
Health bar The health bar got some love too! I implemented a fade-in/out effect for the heart sprite slowly turning it into a "black" one when you are low on health. I also added a maximum health indicator and the same value change "pop" animation I used for the gold and attribute texts.
Battle events Battle events and various skills (hit miss, dodge, fear or cripple events etc...) got many complaints due to their visibility being insufficient, leaving the player puzzled sometimes why a battle didn't play out as expected. Besides using the existing sprite effects I added text notifications, similar to the ones used with pickups. No complaints ever since . Critical strike This one was an "extra". I wanted to beef-up the effects of the critical strikes to make them look more ferocious and better noticeable.
Level transition Play testers shared my enthusiasm towards having a better level transition effect, so I slapped on a black screen fade-in/out during dungeon generation and it worked wondrous. Input handling I knew for a long time now, that the simple input handling logic the game had will not be good enough for the shipped version. I already worked a lot on and wrote my findings about better input handling for grid based games, so I'm not going to reiterate. I mostly reused the special high-level input handling parts from my previous game Operation KREEP. It was a real-time action game, so some parts were obviously less relevant, but I also added tiny new extras. I observed players hitting the walls a lot. Since the player character moves relatively fast from one cell to another this happened frequently when trying to change directions, so I added a timer which blocks the "HitWall" movement state for a few milliseconds towards each walled direction for the first time when a new grid cell is reached. Again, results were really positive . Balancing My great "wisdom" about this topic: balancing a game, especially and RPG, is hard. Not simply hard, it is ULTRA hard. Since I never worked on an RPG before, in the preparation phase I guesstimated, that it will took around 2 to 3 days of full-time work, because after all it is a simple game. Oh maaaaaaan, how naive I was . It took close to two weeks. Having more experience on how to approach it and how to do it effectively I probably could do it in less than a week now with a similar project, but that is still far off from from 2/3 days . Before anyone plays the judge saying, I'm a lunatic and spending this much probably wasn't worth it, I have to say, that during the last 6 months nothing influenced the fairness and "feeling" of the game as much as these last 2 weeks so do not neglect the importance of it ! Now onto how I tamed this beast! Tools and approach Mainly excel/open-office/google-sheets, so good old-fashioned charting baby . And how? I implemented almost all the formulas (damage model, pickup probabilities, loot system etc...) in isolated sheets, filled it with the game data and tweaked it (or the formulas sometimes) to reach a desirable outcome. This may sound boring or cumbersome, but in reality charts are really useful and these tools help tremendously. Working with a lot of data is made easy and you get results immediately when you change something. Also they have a massive library of functions built-in so mimicking something like the damage reduction logic of a game is actually not that hard. That is the main chart of the game, controlling the probabilities of specific pickups, chests and monsters occurring on levels. It plays a key role in determining the difficulty and the feel of the game so nailing it was pretty important (no pressure ). If balancing this way is pretty efficient why it took so much time? Well, even a simple game like I Am Overburdened is built from an absurd number of components, so modeling it took at least a dozen gigantic charts . Another difficult aspect is validating your changes. The most reliable way is play-testing, so I completed the game during the last two weeks around 30 to 40 times and that takes a long while . There are faster but less accurate ways of course. I will talk about that topic in another post... Tricks and tips #1.: Focus on balancing ~isolated parts/chunks of your game first.
This wide "chest chart" works out how the chests "behave" (opening costs, probabilities, possible items). Balancing sections of your game is easier than trying to figure out and make the whole thing work altogether in one pass. Parts with close to final values can even help solidifying other aspects! E.g.: knowing the frequency and overall cost of chests helped in figuring out how much gold the player should find in I Am Overburdened. #2.: Visualization and approaching problems from different perspectives are key!
The battle model (attack/defense/damage/health formulas) wasn't working perfectly up until last week. I decided to chart the relation of the attack, defense and health values and how their change affect the number of hits required to kill an enemy. These fancy "damage model" graphs shows this relation. Seeing the number of hits required in various situations immediately sparked some ideas how to fix what was bugging me . #3.: ~Fixing many formulas/numbers upfront can make your life easier.
Lot of charts I know, but the highlighted blue parts are the "interesting" ones. I settled on using them as semi-final values and formulas long before starting to balance the game. If you have some fixed counts, costs, bonuses or probabilities you can work out the numbers for your other systems more easily. In I Am Overburdened I decided on the pickup powers like the + health given by potions or the + attribute bonuses before the balancing "phase". Working out their frequencies on levels was pretty easy due to having this data. Also helps when starting out, since it gives lot of basis to work with. Now onto the unmissable personal grounds. Spidi, you've been v/b-logging about this game for a loooooong while now, will this game ever be finished?! Yes, yes and yes. I know it has fallen into stretched and winding development, but it is really close to the finish line now and it is going to be AWESOME! I'm more proud of it than anything I've ever created in my life prior .
Soon, really soon... Thanks for reading!
Stay tuned.

Spidi

Spidi

 

KREEP, missed tap.

Hello everyone! In my last post about Operation KREEP, I mentioned that for the 1.2 update of the game I made some improvements to the input handling logic and hinted a near future deep-dive into this topic. Quite a while ago, right before releasing the Steam version, I wrote a similar post describing the input handling enhancements I made back than. Although it is a bit lengthy, if you are interested in the technical details of high level input handling logic I highly recommend it. Not a requirement though, since I'm continuing this post with its summary to level up your knowledge for easier digesting of the upcoming technical details. Short recap The game plays on a grid and all entities move complete tiles (no standing in between two tiles). Each "move" action by a player will actually take multiple frames to complete (precisely 12 which is 200 milliseconds under 60 fps). The players usually do not feel this (it does not feel laggy/bugging), since it is a quite fast and action packed game + 200 ms is not much and the overall rules/design of the game is deeply intertwined with grid based movement. The initial movement handling logic was utterly simplistic. If a direction button is pressed the player moves towards that direction, with a silly hard coded priority for handling cases when multiple direction buttons are down: "Up" beats "Down" beats "Left" beats "Right". When a player is already moving and the corresponding direction button is held down it will be handled with highest priority, so continuing movement forward is considered "important/intentional". Warning, warning incoming pseudo code: void handleIdle() { if input.isPressed("up") { startMovement("up"); } else if input.isPressed("down") { startMovement("down"); } else if input.isPressed("left") { startMovement("left"); } else if input.isPressed("right") { startMovement("right"); } } First pass of input handling in "Idle" character state. void handleMoving() { if (input.isPressed(currentDirection)) { continueMovement(); } else if (input.nonePressed) { stopMovement(); } else { // this will handle direction change // the same way as in "Idle" state handleIdle(); } } First pass of input handling in "Moving" character state. That is it. This simple control mechanism was really easy to code certainly but it wasn't intuitive nor responsive, and clearly intentional actions were missed out from time to time. It took me some time to realize that it was bugging many players and it could be improved a lot. Around the 1.1 (Steam) release, I made significant changes to this system, by introducing some smart checks to figure out the intentions of a player as best as possible. These rules included: Checking the surroundings of the player character. Taking non-walkable target tiles into consideration (making them a less preferred choice). Taking dynamic blockers like other players, props or the KREEP, into consideration (just as important targets as walkable tiles). Saving the elapsed time since the last press of each direction button to use it for prioritization (presses closer to the direction change in time considered more important/intentional). These modification made a huge difference back than. At least the "testing committee" (a.k.a. friends) had an immediate positive reaction, although I still had some ideas for improvement I was thrilled by the results. For more details about these enhancements, please check the old post. I'm jumping onto new stuff now! The missed tap One thing that was still bugging me related to these movement controls and the overall responsiveness of the game is the "missed tap". Due to one move action taking 12 frames, the direction change evaluation logic runs "rarely" and it is easy to miss it by a frame or two. An occasional maneuver is trying to change "lanes", by moving one tile perpendicular to our current direction, but continuing in the original direction right afterwards.
Some players (including me), try to achieve "lane changing" by holding down the main direction button and tapping the perpendicular direction button. The perpendicular direction gets bigger priority, due to the press occurring closer to direction evaluation in time, so it would be selected as the new direction for the player. But being a short tap the button state may be released one or two frames early and usually the following happens: Based on my guesswork, trying to achieve "lane changing" with a tap fails 3 out of 4 times (may be even worse). This is not hard to detect and sort-of can be made sure to be not mixed up with different intentions, so here comes my solution. Implementation details Instead of saving only one elapsed time since the press of a direction button, two timers are saved for the last two states (regardless whether it is pressed or released currently). This way we can buffer the most recent changes and the preceding actions of the players related to movement (buffering input events and their timings). struct BufferedInput { bool pressed; float currentElapsed; float previousElapsed; void update(bool state, float dt) { if (pressed == state) { currentElapsed += dt; } else { previousElapsed = currentElapsed; currentElapsed = dt; pressed = state; // pressed changed, timers swapped, current restarted... } } } That is the most crucial part of the solution. From now on we can detect the "missed taps" when evaluating the player movement, since we have all the required data. I think each game needs a little fine-tuning / trial and error regarding this part as timings and speed wildly varies between them, but my logic and my numbers may be useful: const float FrameTime = 1f / 60f; // frame time in case of 60 fps const float MovementTime = 12 * FrameTime; bool detectBufferedTap(BufferedInput input) { if (!input.pressed) { var tapTime = input.currentElapsed + input.previousElapsed; if (tapTime <= (MovementTime - 2 * FrameTime)) { if (input.currentElapsed &amp;lt;= input.previousElapsed) { return true } } } return false; } This means that the game considers a situation a missed tap, when a direction button is released during evaluation, a press occurred at least 2 frames after leaving the last tile (last direction evaluation) and the button was in a pressed state for at least as much time as it was released during these x <= 10 frames.
Taking these "missed taps" into account with just as much priority as a pressed input button, while the player is moving and a direction evaluation occurs, reverses the 3 out of 4 failures, so approximately 3 out of 4 times (maybe even better) a short tap is enough for a tile lane change. Tried tweaking this logic and the numbers, but could not really improve the consistency further. I'm happy with these results though. And again, after this update, controlling the game felt much better than before! Probably there won't be updates for (nor posts about) Operation KREEP for a long while, since despite my efforts the game could only reach a miniscule audience + I'm getting fully occupied by my upcoming game Unified Theory, but who knows what the future holds... Take care!

Spidi

Spidi

 

KREEP, input is king!

Hi there! I'm not going to go into a big yakking this time about the obvious again. Summarizing: still not advancing as planned and my online presence is still far from adequate, but the update I've been working on is "finished". Finished in the sense, that I've added all the features, fixes and fine-tunings I really wanted to add, but it is not yet released, so a final test and a last big "marketing" push is ahead of me... This time I would like to talk about the last feature I've implemented, and as the title suggests, it is input handling related. I feel like it was bit of a daring act, but in the final stage of the development I've decided to rewrite most of the input handling logic of KREEP as the finishing step. Yep, it was kind of a bald move, and took some serious effort, both design and implementation wise, at least compared to other features I've been working on lately, but it made such a huge difference, that I'm really glad I made it! A while ago I had a rather lengthy test session with some friends and colleagues. They told me they had a blast, but I could squeeze out some constructive (negative :)) criticism too. It was targeting the input handling, notedly the movement of the player characters. While I was observing my peers playing, I noticed this sentence come up a couple of times: "it's not moving in the direction I want it to move". It wasn't angry/bad, but heard it enough to start thinking about it, but when I asked around, no one could actually pinpoint the problem, or describe it in more detail, only there was "something annoying" about the feel of the player control. Some other developer friends, actually praised the controls before, stating, that it is really tight, and feels like older Pac-Man or Bomberman games, so it took me some time to figure out the problem, but approximately two weeks ago I had an "a-ha" moment while playing and realized what was bugging my buddies. The game indeed feels like old Pac-Man or Bomberman games, but I discovered some problems with this scheme (at least with my implementation). The movement is discrete as in the mentioned games, so by pressing a direction key, your character will not stop until it reaches the next tile and the game is pretty fast. It takes 0.2 seconds, so 12 frames (with 60 fps fixed loop), for a player character to move a full-tile distance. When trying to do tight "maneuvers", so turning around a corner, or entering a door, or simply changing your direction at the right moment, you have to be spot on, otherwise you can miss the corner/door! Based on what I've found, this 0.2 seconds is already lower than the average reaction time for humans to a visual stimulus (which is 0.25 seconds by the way). This is pretty common in games, so reducing game speed was not something I planned to change though, especially because it would modify the design and game-feel a lot. I went further down the rabbit hole and found, that not only you have to be spot on in KREEP, but the logic I've implemented for deciding which direction to "prefer", when multiple keys/buttons are pressed in a given frame, does not "aid" the player. It is pretty much stupid (simplistic) and fails utterly in a sense, because in the before mentioned situations (maneuvering), you usually have two buttons pressed... Here it is what I'm talking about, what the user intends to do is on the first GIF, and the second and third GIF shows what happens from time to time: In the first "failure" case, the player is holding down "Right" and "Down" together for a split second and releases "Right" too late, and in the second case "Down" is pressed too late. The latter problem is really hard to battle, but can be done to some degree (still experimenting with that, more on it a little later), but the first one is actually not "fair" (at least the players feel that way: "it's not moving in the direction I want it to move") and it can be fixed using a simple idea + a full rewrite of my previous input handling logic :lol:. So previously I used a pretty simple input handling logic for controlling the player character movement (warning, warning incoming pseudo code): void handleIdle() { if input.isPressed("up") { startMovement("up"); } else if input.isPressed("down") { startMovement("down"); } else if input.isPressed("left") { startMovement("left"); } else if input.isPressed("right") { startMovement("right"); } } Input handling in "Idle" character state. void handleMoving() { if (input.isPressed(currentDirection)) { continueMovement(); } else if (input.nonePressed) { stopMovement(); } else { // this will handle direction change // the same way as in "Idle" state handleIdle(); } } Input handling in "Moving" character state. There is a huge problem in both parts. One is that a direction "preference" is hard-coded, so "Up" beats "Down" beats "Left" beats "Right" and the other is that while "Moving" the current direction is again "preferred" over other directions, for no real obvious reasons (except for it is easy to code :P). Both problems and the previously mentioned "multiple buttons pressed" issue can be eliminated easily by adding time-stamps to button presses! Instead of simply checking one button after the other, we always check each direction and the later a button was pressed the more "preferred" it is, due to a simple logic which is: the last button pressed by the player is most probably is the "intended" new direction. This logic off-course can be further enhanced with another trick. It is most probably isn't the "intention" of a player to face a wall when multiple direction buttons are pressed and some of them would mean simply trying to move into concrete, so besides time-stamps, possible directions are checked also. Here it is, the further enhanced "smart" input handling algorithm (warning, warning incoming pseudo code again): bool canMoveTo; direction target; time pressed; void handleIdle() { canMoveTo = false; target = null; pressed = time.min; detectTarget(); if (canMoveTo) { startMoving(target); } else if (target != null) { changeDirection(target); } } void detectTarget() { foreach (direction) { if (input.isPressed(direction)) { if (canMove(direction)) { // prefer movement over hitting a wall // if no walkable target is detected yet use this one! if (pressed < input.pressedTime(direction) or not canMoveTo) { targetDetected(direction); } canMoveTo = true; } else (not canMoveTo) { if (pressed < input.pressedTime(direction)) { targetDetected(direction); } } } } } void targetDetected(t) { target = t; pressed = input.pressedTime(t); } New input handling in "Idle" character state. bool canMoveTo; direction target; time pressed; void handleMoving() { canMoveTo = false; target = null; pressed = time.min; detectTarget(); if (canMoveTo and target == currentDirection) { continueMovement(); } else { if (canMoveTo) { changeDirection(target); } else if (target != null) { changeDirection(target); stopMovement(); } else { stopMovement(); } } } New input handling in "Moving" character state. And here is the representation of the inner workings of the new algorithm in action: The direction arrows represent the pressed direction buttons by the player and the lighter color means the most recent button press. Both possible directions hold an orange question mark until the decision about the direction is made (this is not actually checked or saved anywhere until the respective frame). The frame in which the decision happens is "frozen" for a tad bit in the GIF so the choice is clearly visible.
It worked wondrously :)!!! The movement become a bit easier using the keyboard, the multi-press problem disappeared, but the gamepad + thumbstick based control feel got a real "level up" due to this modification! It is really cool. After completing and trying it, I felt that all the updates I've added to the game (new maps, new mutators and achievements) are simple gimmicks compared to this modification. It really makes a difference and I'm really happy I made it. After a lot of testing, I've found a situation where the new logic was kind of detrimental, and I felt like it may not actually follow the players intention. When a corridor gets blocked by a dynamic entity (a player or the KREEP), the new logic actually "tries" to move the player in a different direction, like in the following situation: Here the player presses "Down" than a bit later "Left" in both cases, but in the second case another player blocks the corridor. Since "Down" is still pressed, due to the new logic, the player starts to move downwards as there is nothing in the way. I felt like in most cases this could be counter intuitive, since the player usually tries to move towards these "dynamic blockers" (due to the game rules this is the most logical goal), so I introduced some extra code, which separates dynamic and static blockers (collidable map tiles) and handles dynamically blocked tiles just as much "preferred" as walkable tiles, so that only the button-press time-stamp makes the difference in these cases. Again this worked like a charm, but all-in-all it is pretty ugly and "duct-taped" (so no pseudo code this time :rolleyes:) + the whole thing took a long time to experiment, implement and test thoroughly. What I'm still fiddling with, but is not going to be in the upcoming Steam release, is the second issue from the original "perceived" control problems: pressing the intended direction too late. This is much trickier and it is much more a player fault than the first one, but can be helped a little with an "input window". For one or two frames, you buffer specific situations where different input state would have ended in a different direction. Than later you reposition the player, if still possible / makes sense, and it is much more likely, that the given direction is only a late press (e.g.: in the new position it would be blocked by a wall and no other directions are pressed at the current "late" frame). Most probably in these situations a one or two frame continuation in the same direction will not be noticeable by players, but will extinguish almost all late-press annoyances. Here it is, a little animation showing the inner workings of the "input window" algorithm in action: In the GIF there is a one frame "window" represented. This frame in which the decision and reposition happens is "frozen" for a tad bit so the choice is clearly visible. The second GIF shows the animation sped up to the same level as the characters move in the game. Even on this GIF with rectangles and lines, the one frame "window" and repositioning is barely visible so I have high hopes, but the implementation is tricky, so it's going to take some time + I'm already in a "I really want to release this game on Steam" mood :)! Overall working on this problem was a wonderful experience, because it taught me how much difference good input handling makes (input IS king :wink:), and that it is worth putting energy into seemingly miniscule issues/ideas too, since they may end up awarding huge benefits (+ I F'ING LOVE GAME DEVELOPMENT :D). I'm planning to release the update in two separate turns. First giving it out to those who already bought the game on itch.io and IndieGameStand within a week or two, than releasing the game on Steam a week or two afterwards. Sorry for the long write again, stay tuned for more :wink:!
Best regards.

Spidi

Spidi

 

I Am Overburdened, light at the end of the tunnel

Hi everyone! I took my time again to make this new post, but I was really occupied with life and stuff and took approximately two weeks off from work (got married <3 + been pretty sick for a week ). Last week was only spent on polish and adding "extra" features, so it is only a matter of a few weeks to finally tackle this beast of a game , I'm almost at the end of this marathon! I'm also trying a new vlog format this time, with more video content and less slides. It is a video log after all :wink: ...
I hope you all will like it.   Map generator tricks I extended the implementation of my "semi-procedural" map generator algorithm with a neat and simple trick. It is working from hand authored map templates, so I added the possibility to randomly flip over the vertical and/or horizontal axes! For the 4 resulting maps on that screen the exact same handmade tile-map template was used. This results in 2 to 4 (if you can use both axes) times the possibilities of slightly different generated maps for the same amount of hand made maps :wink: . Dungeon progression Each level type has a unique name now + when you enter a level you get a notification about where you are in the dungeon/story: I'm still not 100% satisfied with this level change pacing/effect. I may add a really tiny "to black-screen and back" transition effect too. I'll try it out and see whether it works better... Speech bubbles These fancy text graphics are pretty useful for delivering help notifications, narrator or character speeches and to convey more details about the world to the players. I also implemented some features to make them easier to control and more readable: New ones can optionally "cancel out" old ones (request them to start fading out), or can simply be played alongside the existing ones (conversation). New ones are automatically overlaid on top of the existing ones. Some conversations and player speeches will occur during the game-play too, not just in the "menu". Polishing animations The game has only static sprites, no hand-drawn or any key-frame based animations at all. So far I tried my best to move the sprites in a way, that make all the motions look fluid, but I always had plans to go further than that! I wanted to achieve a look, regardless of having no "proper" animations, that is interesting, at least a little bit. I implemented an animated "stretch and squeeze" transformation for sprites and added a subtle one to the hitting obstacles/walls movement of the player character. As the next step I added stretch, squeeze and shake to sprites at various points during battle. These GIFs have "New & Old" slides for comparison, but it's fun to check back how the game looked few months ago. Here goes the "same" battle from an early version: I'm really proud how much I could achieve with only "static" sprites . I wanted to further enhance the user interface too, not only the in-game action, so I added a small and short "Back Out" ease to item pickup sprites to make them pop: I still have plans for more animation enhancements, but it is already August and I still have a lot of other tasks to take care about before releasing this game, so it most probably will have to suffice. Collectibles I integrated some systems into the game last week which I deemed "extra" previously, but as I mentioned around a month ago, I want to make the most out of this game, and completionist players (myself included ) are going to love this :wink: ! Now you can gather detailed information about the monsters and artifacts of the game. After several kills you can unlock a monster (weaker ones need more kills) and after a few pickups you can unlock an artifact (rare ones need less pickups). There is an extra secret monster unlock too, which you have to look for carefully during a play-through, its hidden well . There will be more traditional achievements too, but they are currently in the design phase, so nothing to show yet. I also ~finalized my "elevator pitch" for press/buyers:
I Am Overburdened, a silly roguelike with 20 inventory slots
Tell me what you think! I'll be back in a week or two with more news on the game :wink: . Thanks for reading!
Take care.

Spidi

Spidi

 

I Am Overburdened, quality over quantity

Hi there! Where was I for a month again and what’s up with the title?! Many friends already asked this and other difficult questions like “I planned to finish this game in 4 months and I’ve been working on it for 6 now” or “Last month you kind-of promised to have an open beta and a complete game by now” and the title was the best answer I gave. Actually I really believe in what I’m doing and the way I’m doing it. I know it is madness, game development is about risk management and this project is becoming more and more risky day by day (risk of losing a lot of money and losing the ability to continue full-time game making ). The thing is the game was NOT GOOD two months ago. I could have rushed it to market, I really could, but my ghost whispered to me and I had to follow its lead. I’m in this for the love of it and for the love of the craft as a whole. I want to make games and continue making games as a living, but at the same time I want to be good at it and be proud of what I make. Now with this out of the way let’s jump onto the progress in the last four weeks ! Polish Few people said to me, based on my last entry, that the game starts to look really polished. I felt really happy about that, because I haven’t actually started on my planned polishing tasks. Besides composing the sound track and working on finalizing and balancing game systems, the last few weeks were spent on polishing the look and feel of the game . Movement First I added some sprite effects to the player movement which fades out over time. This is a great visual cue to show the direction and the old positions of the player and also makes the “dusty & old” dungeon image more believable . Then a subtle bounce was put on top of the original player movement transition. It does not seem like a big addition but it does make it feel more like walking than the old moon-walker dance move . The last movement tweak was configurable sprite and sound effects for levels. Now there is splashing in the caverns instead of dust puffs as an example. Animated health-bar This is something which is absolutely not a necessity for a game, but once you saw the Diablo 3 health globe it cannot be unseen . Back to reality. I wanted to add a subtle sliding animation to better signal the player about the significance of the health change. I think it turned out wondrous ! Ambiance One nice touch I really like is atmospheric sound effects. In many games if you mute the music you can easily hear a lot of background effects which do not come from entities in the world but from the environment itself. Examples include crackling fire, rats squeaking, stuff like that. I Am Overburdened is not a gothic themed nor a horror game, far from it actually, but I wanted to achieve a “spooky” overall feeling so I added something similar. Dripping water in the caves, rattling chains in the dungeons etc… Dripping.ogg Chains.ogg Monster skills This was a feature which was missing from the game for so long. I actually implemented the underlying system while working on the prototype (so really really long ago), but I had no time to actually add unique skills to the monsters . Now each and every one has it’s own “thing” which makes them memorable and really stand out. Not just attribute differentiation, like careful this one is “strong”, this one is “fast”, bla bla, but instead something like this: careful this can dodge your attacks, or that one can interrupt you and cancel your hit, or that pesky beast can resurrect so it is a real damage sponge! There are some neat ones which I will not spoil because they are really fun, powerful and buy the game once it’s out (there is no fun in spoiling everything) ! The Black Raven Market During a play-testing round I realized there is a huge problem with the pacing of the game. The game-play did not change enough during a full play-through regardless of the changing environments, monsters and increasing power levels. Another problem a lengthy game usually had is RNG (those infuriating random numbers ). It felt a little boring and a bit too random (not enough control over the outcome). I realized a shop could solve these issues, but not a typical buy whatever you want when ever you want type, but more like a rogue-like shop , that allows more player control but it also presents another hard choice (as many things in rogue-likes). Welcome to the Black Raven Market. Every first shop level sells random pickups (health potions, attributes etc…) and every second shop level sells random magic items, but you can only buy one stuff on each level! I’m evil, I know it MUWHAHA. In a full play-through you will encounter 10 shop levels which gives some extra space for player choice and nicely breaks up the “kill some monsters defending important loot and run to the next level” game-play loop. Music makes the world go around! I’m not a musician and the following sneak-peek into the official soundtrack of the game is proof of that. Regardless of it being pretty amateurish I’m still really proud of it . Instead of trying to make AWESOME music (which I simply can’t ) I focused on adhering to some fundamentals I settled on before jumping onto composing: Retro sound, match the looks of the game. Leave a spooky and mysterious impression. Be consistent using similar patterns and tunes. Gradually get more intense and chaotic. I hope it isn’t grating at least . The full OST is around 15 minutes so its my longest work in this regard yet + it is long and varies enough to not get too repetitive during a full play-through . I should also mention, that I used the wonderful Bosca Ceoil tool for composing. It’s quite limited, but it is really really easy to use. You should definitely check it out if you would like to make some chip tunes. It is free and works in the browser too! Thanks for reading!
Stay tuned.

Spidi

Spidi

 

I am Overburdened, what takes so long?!

Hello everyone! I've been pretty silent for a while again...
I really dislike this, because I'm usually open and post a lot about my progress, but sometimes it just slows down and I end up in a spiral of "awkwardness", when I'm not progressing too much and I really don't want to talk about that :mellow: . Oh well, I'm preparing for the beta, some tiny fine-tuning left before I'm ready to upload a build, but before that, I share this update with a teaser. Menus, menus everywhere! I completed most of the menus. Some minor stuff (few more characters) are still missing but I will finish those during June. I included myself as the inn keeper :) . Interacting with the guy brings up the help screen and he also tells the "story" of the game in the teaser. Your journal I went for a journal look for the classic focus driven menus and your inventory. I think it turned out good looking and it fits the game well. For item pickup notifications I made a fancy scroll too. Animated box-art While preparing the trailer and other marketing materials, I had this urge to animate something related to the game :) . The in-game sprites are all static and I wanted to keep it this way, so I made an animated box-art. Some say it's a better attention grabber on storefront pages :wink: . Dungeon templates I made a bunch of new dungeon templates for the generator. Not enough for the final build, but there are already plenty and they provide good variety for a full beta play-through. Progress, balance First balancing pass over the item, monster and pickup power levels is also done. Nothing major, but you can complete the full 30 level deep dungeon now, encountering a new set of monsters and a new tile-set after every 3 or 4 levels and generally fighting stronger enemies as you progress. It is going to take days of tweaking to make it engaging though. I'm planning to devote a full entry to this topic soon. Teaser trailer teaser Yes, the following is just a teaser for the teaser trailer :D , a sneak-peek so to say. I'm working on a lengthier one which showcases gameplay features too with music, flashy texts and everything one would expect from a proper game trailer. So this is just the first 20 seconds of the real teaser, but I thought I should share it in this form and ask for some feedback/opinions about it... Thanks for reading!
Take care.

Spidi

Spidi

 

I am overburdened, back among the living

Hi there, long time no see! Last month was rather chaotic for me. After a lengthy Easter vacation a nasty flu forced me to spend almost a week in bed, and overall the progress on "I am overburdened" was dreadfully slow up until last week. That is why I had no energy and not much drive to write new posts or to create video log entries, but it is time to break the silence. Really, no progress? There was a lot actually, but the development entered its last stage where there are a zillion small tasks left to be done but no modifications are substantial. The notorious last 10% which takes 90% of the development time :D . I go through all the changes made during last month in a few sentences, than I'll adumbrate when and how am I planning to push this game through its finish line. Monsters I completed all the monsters from the easiest pawns up until the final boss. Their attributes are not balanced yet, but all their names, sprites and basic settings are done. Now each and every one has its own corpse graphic and unique sound effect too. This last bit was originally flagged as a nice-to-have addition, but after trying out the game with a few monsters having its own sound and carcass, there was no turning back :) . Attack and skill effects The battles and item skills were lacking visually, so I decided to apply some cosmetics. I Implemented a simple system to flash in and out various sprites at given coordinates in the dungeon on top of the entities. I was pleasantly surprised with the effectiveness of the initial results. Since than, I added configurable opacity easing- in and out and timings. Now item usage and battles are really shiny :o . Notifications Another set of crucial visual queues missing from the game were notifications. Many pickups and events yield varying results in a roguelike and yes a player can figure out how much gold was picked up, but it is so much nicer if the game helps a little with these, especially when important changes occur. Clearly when it does not fit the style its not necessary, but I am overburdened is not a "super serious" game. Of course these can be overdone, but I tried making them not too obtrusive. Both the effect system and the notification system is accessible by the item skills, so various "spells" can trigger these too. Items, items, items 103 unique items, each and every one having a unique sprite. All the graphics are done with around 50% of the item lore finalized and it was a hell of a lot of work. Sadly something I underestimated again. Making the graphics was not difficult but coming up with unique, interesting or funny concepts, skills and short descriptions after having around 75 piece already, was tough. The last mile became a grueling, laborious crawl! When a lot of great content is already in place and almost every single archetype is taken, it becomes ridiculously hard to come up with new ideas hitting the same quality bar :( . After all I think I achieved my goal in creating intriguing hand crafted loot what may serve as a strong hook for the game, so I'm proud of the end result. I don't want to spoil too much so I'll only show a small selection of sprites. Sorry, you have to play the game for more :) . Localization In Operation KREEP I hard-coded some strings, rendering the game impossible to be fully localized without code modification. Some buyers actually asked about how they could do translations. I felt really ashamed while answering those mails :( . For I am overburdened I've built a system which allows to bind assets for specific cultures and all the strings are read from asset files too. There are no major limiting factors now, so technically the game could be localized to any language without modifying the application. I know some languages are super hard to handle, e.g.: right-to-left ones or the ones with huge glyph sets, but the point is, that it is feasible now. Since I don't have the budget to pay for professional translations, only English and Hungarian will be done for release, but if the game does well, this is something, that is high on my list :wink: . In-game UI The user interface for the game is pretty much complete. Some finishing touches are missing here and there, but it is already pleasant looking and almost fully functional from the health-bar all the way to the item pickup pop-ups. The main menu I dislike making menus because they are usually boring to design and program. For Operation KREEP I came up with the idea of creating a "screen in the screen" look, to make it more interesting and alleviate this feeling while working on it. You navigated the menus of a retro-looking computer and the whole frame of the machine was drawn. It blitted the maps on the level selection screen in awful 4 colors and all the cozy stuff like that :) . It worked for me and for the game too. I tried a non-traditional approach again, but menus are still boring :D . Since it is a classic trope to have a city in action RPG-s and roguelikes where you return to from time-to-time, I thought about including one in I am overburdened. The idea did not align well with its mechanics, so I decided to make it the main menu! You move around in an inn, interacting with people and objects there to enter specific parts of the game. Talking with the inn-keeper lands you on a help screen, poking a bookshelf shows the settings, leaving the inn exits the game and the trap-door starts the actual dungeon crawling... If a player gets lost, escape will bring-up an ordinary focus driven menu. It is far from complete, but the skeleton is there and some parts already work. Open beta, plans I've been talking about this open version thingy for ages and I still haven't released it. In my original plans I wanted to have the full game completed by now :( . For the most part it is, but some planned content and finalization (+polish) is missing. There comes a time when I have to say stop and I think it is here, so from now on I will only focus on wrapping the whole thing up and this starts with putting out a beta version. Will prepare some marketing materials beforehand, like store page graphics and texts, maybe even a teaser trailer, so it may take a few days, but will share a download link for it in the next post :) :wink: ! Stay tuned.

Spidi

Spidi

 

I am overburdened, check out the graphics!

Hello everyone! Tiny post with lot of pics this time. Last week I worked on the original sprites of the game and progressed steadily. Far from finished with every piece but a huge portion is done! Missing pieces In the last log I showcased the tile graphics, but one final adjustment was missing back then. All the tile-sets shared a single stair sprite which wasn't fitting well, so I made a separate sprite for each one. Entity sprites The next stop was entities. I started out with defining clear goals for the looks and creating a palette serving these goals. The idea was to select contrasting, vivid colors to make entities pop from the environment and on contrary to the looks of the dungeons make them lively (browns and yellows are still pretty strong still :D )!
Not yet finalized! Player I really liked the design I came up with before for the player character so I reused my concept which was a failed attempt at the box art of the game. Two sprite states exists, since in the planned "story" scenes the player will have his sword in its scabbard. Chests The first apparent visual choice here are the light borders. I decided to add a colored one to every interactive entity type, so the player can not miss which tiles poses a threat and which ones provide bonuses. I made four chests with various costs/functions but I'm keeping the last one as a secret for the final version :wink: . Pickups Pickups come in many flavors. Permanent attribute bonuses (Meat = +Strength, Frying pan = +Armor, Carrot = +Vitality, Coffee = +Speed, Clover = +Luck), gold, potions, random items etc... Here are a few: Monsters I settled on a style after a few tries where the monsters are pictured from the same angle as the player. I plan to have around 15-20 unique monsters and a boss, which will provide a good variety for the 30 dungeon levels. They were divided into four groups based on the story when designing the looks: were/giant animals, goblinoids, undead and the allies of the boss. Almost all of them is ready (currently at 16). Some screenshots from the current version of the game: This week will be spent on completing the missing sprites (e.g.: items, some monsters) and overall visual improvements and polish, so I'm guessing the next entry will be similar. A kind-of "news" is my plans for an alpha demo. Before I complete and release the game I really want to do a open build (which will become the demo later) to gather feedback. I think wrapping this version up sometime next week is perfectly viable, so by the end of this week I'll post a finished plan for this too. Thanks for reading.
Take care.

Spidi

Spidi

 

I am overburdened, miles of tiles

Hi there! Short entry, a bit tutorial-ish, about the tile graphics of the game. Art direction, ideas I really liked the style of the open art assets I used for prototyping. Pixel art, huge value differences between the wall and the floor tiles and a little noise to make it a little grimy & wrecked. Though I liked it's looks and simplicity, I wanted to try some other ideas before settling on anything so I went ahead and made mockups. False positive The most interesting and furthest developed one was a tile-set and look with an oblique top-down view effect. I think this looks really good in many games, but sometimes it can get too exaggerated covering too much of the entity sprites. I came up with this, but I decided to scrap the idea. I liked it sort-of, but making multiple varied sets for the 30 to 60 minute long campaign and fully fleshing them out in this style would require and immense amount of work. I choose the original simple style with a decent amount of variation instead. Goals, final looks So I returned to the looks of the prototype. Easily distinguishable wall and floor tiles, noisy and grimy places (it is an old dungeon after all) and good variations (many sets and small randomization within each set too) so it does not become boring during a full play-through. I needed a cool palette. Something murky. While picking colors I naturally deviated towards the looks of a game I always cherished for its atmosphere :) . Colors were picked carefully for supporting the look of the entity sprites, as they will use a marginally different palette full of contrasting colors instead of saturated ones to make them pop from the terrain (again just like in the prototype). Here goes some shots about the results: I have 10 different tile sets ready which I suspect will provide a good variety :) . With 30-ish level deep dungeons a set change will happen after every 3 levels. How-to? For creating a lot of pixel art tiles, like the ones I made, you are going to need a frame so to say. Some rules and patterns how you start pixeling each tile and afterwards patience for experimentation. That is all to it actually. I walk through the creation of one. I use GIMP, a free and cross-platform image editor, but pixel art can be done just as well in a lot of paint programs (even in paint, but I advise you to choose a better one which supports layers). A graphics tool which can work with tiles or a hot-reload engine feature (because GIMP as an example does not support tile graphics) also helps, since you can check while you are drawing, whether your graphics work well when tiled instantly. First I usually start with selecting values for the whole set. This is a handy technique for defining an overall lightness/darkness balance for each tile.
Than I "sketch" a simple pattern for a tile using the values, usually with a light-source residing in a North-West direction.
I add a little variation, like cracks, missing bricks, mixing up the pattern etc... Detail like wines or stains can be added after coloring is done but this step alone makes enough differences between tiles.
I know simply selecting the same hue for the given values feels easy, but it makes the outcome look kind-of boring. Try to make colors interesting by selecting at least two different hues and by playing with saturation a little. It will make a huge difference!
Now you have a nice looking tile. The next step is optional. Adding noise was a deliberate style choice in my case. You simply add an extra set of values with only slight changes relative to the originally used ones. Select the noise colors the same way as the "normal" colors. Generate a noise pattern and overlay the noise colors on top of the tile using it as a mask.
A screenshot with the final tiles:
Thanks for reading.
Stay tuned!

Spidi

Spidi

 

KREEP, apples and penguins.

Hi everyone! Haven't written for months now about Operation KREEP. It is time to revisit this old buddy bud bud of mine!
Yes, as the title suggest, it is cross-platform time :wink: ... Not official, but soon... Nope, sadly no official release yet :( , but the Linux build is ready and tested (at least on my Nix machines) and the MAC build is ready for testing too. This means, that in a week or two an official release can happen, although a little piece of the puzzle is missing. I require additional pylons! I have two PCs, so I tested the Linux version of the game on two Ubuntu versions, but more would be nice (zillion distros :( ) + I HAVE NO MAC MACHINE :( ...
This means, that the MAC build essentially never ever been started! I would really love to release the cross-platform builds, players already asked for them, but without sufficient testing it is not going to happen. Buying a MAC would be a somewhat logical investment at this point, but Operation KREEP (and my whole game development venture for that matter) is on an extremely tight budget as it is not profitable so far, so I will try to postpone that a little. Feedback, results, "compensation" Based on the differences between the builds (almost 0 code change, only packaging varies), I think a few simple checks would suffice. Whether installation works (files copied, icons set etc...), whether the game starts and basic configuration settings checks (settings work and are saved to correct application data folders) + a short test play round just for fun :wink: . I know it is shady to ask for free QA for a product, but this is the reality of the situation I'm in :| . If you would like to help out I thought about sharing a limited amount of Steam/itch.io/IndieGameStand keys for the full game as a "payment". I put together a short form to ease reporting results: KREEP, apples and penguins
If you dislike sharing any personal information, but still would like to help out, please simply post results as comments here or contact me by e-mail: [email="spidi@magicitemtech.com?subject=KREEP,%20apples%20and%20penguins"]spidi@magicitemtech.com[/email] I guess contact info of a cheap&used MAC reseller in Hungary could help too if you know any :) . Demo builds Porting tech stuff Just a little tech talk as closing words. The windows version of the game was made in C# using XNA. Two really cool projects were born to both preserve and enhance XNA in the last few years. MonoGame and FNA. Both are great and well established/tested at this point, but I choose FNA for porting Operation KREEP to Linux and MAC. My reasoning was the following:
Around a year or two ago when I was using MonoGame to work on my Linux machines I encountered some difficulties. MonoGame on Nix platform was using OpenTK for window, input and OpenGL context management and as I know, that library had it's fair share of bugs and there was no real support/contribution/fixes for it for a long while.Remark: as I know the MonoGame team changed to SDL2 lately, the same library FNA uses under the hood so it is probably not the case by now.
MonoGame favors a per-platform build approach, which looking at all the possible target platforms (desktop, mobile, consoles) is a logical choice, but requires managing and building multiple executables for each target. FNA from the get go approached this with a common desktop runtime, so one build works on all major desktop platforms (only packaging has to be taken care of per target).Remark: if I'm not mistaken, last year a "common desktop" build was introduced for MonoGame too, so technically it could work the same way as FNA for desktop.
The FNA developer Ethan Lee had laser focus on cross-platform desktop XNA development and delivery, and the wiki for FNA had a really nice documentation about both working with FNA (differences and extras compared to XNA) and packaging + delivering games using it for Windows, MAC OS X and Linux. This documentation seemed really helpful and complete.
All in all I suspect both libraries could work perfectly for publishing your games to the three major desktop platforms, but I wanted to give FNA a try too. I was pleasantly surprised, most things worked like a snap without much fiddling.That is it for today, in a few days I'll post a new video & blog entry for I am overburdened. If you decide to help MUCH LOVE, SUCH WOW :) and thanks awfully! Take care!

Spidi

Spidi

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!