Trending Games | World of Warcraft | Overwatch | Anthem | Final Fantasy XIV

    Facebook Twitter YouTube Twitch.tv YouTube.Gaming Discord
Register
Quick Game Jump
Members:3,835,901 Users Online:0
Games:948 

Show Blog

Link to this blogs RSS feed

IfThen Software

Development log for IfThen Software. IfThen Software is a family owned and operated indie game development company. http://www.ifthensoftware.net/

Author: InvisibleLf

Devlog #16: The Bugs are Fixed... I Think

Posted by InvisibleLf Wednesday February 25 2015 at 9:39PM
Login or Register to rate this blog post!

Well, the good news is that this works!

Volund - 2D MMORPG

I finally managed to fix pulling across map borders. You still aren't moving your target... But at least you are not longer getting stuck.

I still had a host of small bugs to fix today, this being one of them:

Volund - 2D MMORPG

Fortunately, I managed to get most of the bugs fixed. The last remaining glitch is causing you to be unable to enter "pulling mode"... But it's so difficult to replicate that I can safely leave it alone for right now.

I also redesigned part of the movement system.

Volund - 2D MMORPG

Previously, the UI was using polling to issue move and change direction commands to the logic layer. This code really did not need to be running at 60Hz.

I redesigned the code to issue those two commands based on different events. For example, the move command will now be issued when the "I want to move" event is raised, among others.

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #15: Pulling is Buggy

Posted by InvisibleLf Tuesday February 24 2015 at 9:08PM
Login or Register to rate this blog post!

The Pulling Mechanic

So, today I started work on the "pulling" mechanic. This mechanic allows you to pull other characters around the map.  Such a feature would be useful in combat, and would also aid in forcing characters out of choke points.

I decided to get it working in a simple situation first: Neither the target nor the grabber is moving. I expected this to take two hours, tops... I am currently well over 5 hours into this task. So much for simple!

I keep coming back to this, but one of the big reasons why adding new mechanics takes so long is the state of the code base. But, I am gradually redesigning it.

 

The Bugs

I don't have much more to say on the subject. So, I'll leave you with a sampling of the sort of bugs I had to fix today:

Volund - 2D MMORPG

Volund - 2D MMORPG

Volund - 2D MMORPG

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #14: The World of Volund has been Mapped!

Posted by InvisibleLf Monday February 23 2015 at 10:36PM
Login or Register to rate this blog post!

Grabbing Sprite

Today started off with a relatively easy task: Add in a "grabbing" sprite for when a character grabs on to another.

I started off with getting things setup to add the sprite to the character's spritesheet. This went well, however I discovered something surprising: It was already there! Wishing I had noticed this sooner, I quickly moved on to adding in the simple logic for triggering the new sprite.

 

Bugs Fixed

I managed to squash three bugs today. Two of these bugs are currently present in v0.3.3.

  • When being grabbed by two other characters on opposite sides, it was impossible to escape.
  • Characters were jittering back and forth when attempting to move into a blocked tile on a northern map.
  • The character's sprite wasn't being set properly after grabbing another character. This bug was only present in development builds.

 

Badly Needed Refactoring

I spent the rest of the day refactoring/redesigning the server's movement code. A majority of this work involved moving methods out of the VolundServer god object and into separate classes.

The code was separated based on whether it handled synchronization or game logic. Currently I'm just throwing synchronization-related code into the PacketHandler class. Game logic code winds up in the GameLogic class, which is at least a bit better.

 

Community Report

Captain Argentina and Pema99 have mapped out the world of Volund! WARNING: These maps contain spoilers!

Later in the evening, Red Squirrel returned to his house to find...  A gigantic "R" spelled out in characters! Who could be behind this?

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #13: New Version and Lots of Fan Art

Posted by InvisibleLf Monday February 23 2015 at 10:20PM
Login or Register to rate this blog post!

New Version

Version 0.3.0 of Volund Prototype #1 was released earlier this morning. You can find out more here: http://www.ifthensoftware.net/volund-p1-0-3-0-released/

 

Name Tags

Due to popular request, "name" tags have been added at the last minute. The name is simply an incrementing number, but it allows you to identify each other while playing.

Fanart by SurvivorTuga:

 

The Caboose has been Found

I finally fixed the bug that was causing the third character in a dragging train to disappear! Apparently, the create character packets were being sent before all of the character's state was set. This was causing the character to appear outside of your screen.

 

AoD's Fan Comics

AoD, a regular on the livestream, has created several comics related to the game and the various bugs that we've been trying to fix. Enjoy!

Fanart by AoD:

Fanart by AoD:

Fanart by AoD:

These next two comics need some background information. So, I was in the middle of adding the name tag feature mentioned earlier. While doing this, things got a little...  Uhhh...  Crowded.  Here is a screenshot I took during the chaos:

And here are AoD's comics related to this incident:

Fanart by AoD:

While testing the nametag feature, it was noticed that the spiders also had the "shouting" name tags. This gave both myself and the livestream viewers a rather creepy mental image...

Fanart by AoD:

 

Community Report

Territory lines are being drawn up. Armies are forming. The prototype lands of Volund are barely under control!

The two main factions vying for control are Survivor and RedSquirrel.

Survivor has claimed this land. He even seems to have spiders guarding it! How far does his control extend?

RedSquirrel claims the rock enclosed space south of the spawn point. (note: unfortunately, the image cannot be embedded at this time, sorry!)

The propaganda machines are running, and there is already a poster floating around in Survivor's favor!

Fanart by SurvivorTuga:

A fight broke out in RedSquirrel's house. Our camera crew was on the scene, but due to an unfortunate equipment malfunction the video is being withheld.  Investigations are ongoing as to whether or not Survivor was behind this.

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #12: The Mystery of the Vanishing Caboose

Posted by InvisibleLf Thursday February 19 2015 at 11:31PM
Login or Register to rate this blog post!

It was a dark and stormy night...

No, not really. Although the morning certainly started off cold!

 

Bugs, Bugs, and um... Bugs

Today was full of bug fixing, which I expected going into it.  The day started off with implementing the final part of the "grabber dragged along" mechanic: Slowing the speed of the target's movement.

Things were going quite well, until this happened:

Volund - 2D MMORPG

I spent most of the morning fixing this fun little bug, and part of my lunch break too! The problem wound up being related to storing the grabbing direction and the movement direction as two separate states.

Storing them separately wasn't the problem, necessarily. However, the code that handles dragging the grabber behind his target was using the wrong one!

To recreate the problem, you had to first grab another character. Let's say that you grab them while facing north, like in the animation above. You then press the down arrow key to "move" south. Because you are grabbing another character, you don't move. But! Your character's movement direction is still updated.  When the character you grabbed tries to move, you'll be "dragged" in the direction you are "facing"... South!

 

The Internet Destroys Everything

The latter half of the day consisted of lag testing. This involved deploying to the staging site, and then seeing how badly latency would affect the new grabbing mechanics.

Sadly, it was pretty bad. One bug which I spent four hours solving was allowing characters to run right by grabbers. If there was enough lag, you could run right by another character who was trying to grab you.

This was being caused by some code in the server which would correctly grab the character, but then immediately cancel the grab! I added some additional checks, and the glitch seems to have been resolved.

The last bug I ran into, and the one which I didn't manage to fix, is demonstrated here:

Volund - 2D MMORPG

If you have three characters, with two of them grabbing two others in a row, the last one in the chain will disappear when switching maps! I suspect the "caboose" is being teleported into the map's border, but I have yet to prove that theory.

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #11: Choo-Choo!

Posted by InvisibleLf Thursday February 19 2015 at 12:51AM
Login or Register to rate this blog post!

Uh... That Shouldn't be Happening

So today started off with fixing a rather odd bug. You see, the- Uh... Well. This is easier shown than described:

Volund - 2D MMORPG

So. That was happening. Fortunately I managed to fix it (not without the help of the livestream viewers in the chat - thanks!)

The problem, like with most bugs, wound up being relatively simple: The character's velocity was being incorrectly set after changing maps.

IfThen Software - Indie Game Developers

The real issue is that the server works with coordinates and velocity measured in tiles. The client, however, uses pixels. This is definitely on my "I need to refactor this" list.

All Aboard the Game Mechanic Train!

As you may know, I've been working on the "grabbing" feature. This breaks down into several mechanics, but here is the basic idea: You can "grab" another character and push them/pull them out of the way, or hold them in one spot. Very useful in combat.

One of the mechanics is that if the character you are grabbing tries to move, they pull you along with them. This will eventually result in slower movement speed, but that is still being worked on.

At the request of the livestream viewers, I tried grabbing the character which was grabbing the other character, and then moving... Thus was born The Train! Choo choo!

Volund - 2D MMORPG

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #10: A New Mechanic and Helpful Bug Fixing

Posted by InvisibleLf Tuesday February 17 2015 at 8:51PM
Login or Register to rate this blog post!

Hindering Movement is Finished

The biggest news I have today is that the "hindering movement" mechanic is finally finished!  Here is an animated gif of it in action:

Play Volund - 2D MMORPG

With this mechanic, you can approach another character, grab on to them, and then prevent them from moving away quickly. After grabbing the character, he is unable to move in any direction without a delay.

The hindering effect only lasts for a single tile. However, that could be significant, particularly in a combat situation.

Bug Fixing with Friends

Before starting work on the next game mechanic, I needed to exterminate a bug. The bug was first discovered last night right before the livestream ended. I didn't have a chance to fix it then, so it got tacked on to today's work list.

The glitch happened when a character grabbed a target character and then followed closely behind them. After only a couple steps, the server would crash.

Volund - Grabbing Bug

After a very long debugging session, two and a half hours in fact, the problem was found and squished: The server was issuing a grab command without first making sure that the grabber wasn't...  Uh... Grabbing.

Thank you very much to the people in the Twitch chatroom, and Voidinc_ in particular, for helping me find the problem. It would have eluded me for much longer without your assistance!

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #9: Holding Hands and Fast Iterations

Posted by InvisibleLf Tuesday February 17 2015 at 1:54AM
Login or Register to rate this blog post!

Engine Doesn't Allow Fast Enough Prototyping

Well, I have learned one thing over the past few iterations: Adding game mechanics takes a long time. A very long time.  Just the framework for the grabbing feature has been in development for the past couple months.

So, I've identified a problem. Now what? Well I need to figure out how I'm going to solve it. I believe one of the major issues is the way the code is designed at the moment. It's desperately needing some large overhauls.

With that in mind, I'm going to try and spend extra time refactoring and redesigning. This will be in addition to the work I normally do on the livestream, and I'm not planning on livestreaming it.

One problem with deciding that a code base needs to be reworked is that you can easily get stuck only reworking it. This means you don't make any forwards progress on new features. Doing the redesign as extra work, rather than replacing existing work time, should help prevent this from happening.

Hand Holding Turns Violent

While on the livestream today, some players decided to form a circle and  "hold hands" using the grabbing feature. This was all well and good, but then the circle was abruptly disrupted and the whole thing turned into a melee! Fists were swinging, characters were running all over the map... It was chaos! Also quite funny, haha.

Play Volund

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #8: Friday Comic and New Versions

Posted by InvisibleLf Friday February 13 2015 at 2:14PM
Login or Register to rate this blog post!

Friday Comic

First off: The Friday comic! This was inspired by an unexpected behavior in the grabbing mechanic for Volund, the 2D MMORPG my brother, father, and I are developing. The grabbing mechanic will allow your character to reach out and push another character, or even drag them away. Apparently it also works across map borders!

Volund Comic - 2D MMORPG

What's New?

Well, since the last development log we released, a few things have happened.

Volund Version 0.1.0 Released

First off, version 0.1.0 of the first pre-production prototype for Volund was released. You can give that a try over here: http://www.ifthensoftware.net/volund

It includes a version number at the top-left corner of the screen. This will make it easier to keep track of bugs and which exact version was causing the problem.

Guests can now access the game as well. This means that you no longer need an account to play the game.

Changes to Automated Testing

I have decided to drop automated testing for game mechanics. The reason is simple: We are in early pre-production, and these are all just prototypes. Because they are all prototypes, they are changed frequently if not outright scrapped! So writing automated tests does not make sense at this point.

However, I will still be writing automated tests for engine-level features. The engine most likely will not change as frequently as the rest of the game.

Volund Version 0.2.0 Release

Version 0.2.0 of the first prototype for Volund was also released. This morning in fact. Be sure to head on over to http://www.ifthensoftware.net/volund and check it out.

The major change for this version is that the framework for grabbing is in place. You can now press the space bar to enter "grabbing mode", although it doesn't do anything gameplay-wise yet.

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #7: Version Numbers & Grabbing

Posted by InvisibleLf Wednesday February 4 2015 at 10:19PM
Login or Register to rate this blog post!

Version Number is now Displayed

So, first off: I finished another user story! Within a single day too. Believe it or not, I’ve had a rather bad track record in that department.

While on the livestream, I managed to finish the version number user story. This means that the next release will have a version number in the top-left corner.

This is helpful mainly to developers and testers. If something is acting strangely, you have a way to make sure you are using the latest version. It also helps with tracking bugs, since you can pin them down to an exact build of the game.

I finished the feature in the expected amount of time. Very unexpected, and I was quite happy about it!

 

Grabbing… Not Quite as Good

I worked on one other user story today: Grabbing. Unlike the version number, this one will require more work. This is mainly because I ran into a problem while writing the acceptance tests for it.

Mockolate apparently calls the constructor for each class you mock, but provides null arguments. This is usually fine…  Unless you try to use one of those arguments in the constructor. That is exactly what happened while I was coding grabbing.

At first I didn’t even know it was a problem with the mocks. I’ve mentioned this before, but trying to debug a problem within a step definition while using Cuke4AS3 is very difficult. I had to gradually comment the relevant code blocks before I could even figure out which source file and line was causing the error.

This particular problem happened with two classes. The first was the Synchronization class which I created. To make things easier, I simply moved the offending calls into the initialization method.

The other was the Character class. Its constructor was creating a Spritemap using the art asset supplied by an argument. FlashPunk did not take kindly to being given a null graphic, and complained. To fix this problem, I decided to simply use the full Character class and not bother trying to create a mock for it.

 

Official Blog for the Indie Game Development Company, IfThen Software

Devlog #6: Planning, Mocking Bugs, and Tasks

Posted by InvisibleLf Wednesday February 4 2015 at 1:46AM
Login or Register to rate this blog post!

*phew* I just finished a livestream that lasted for just over 8 hours! It's way more fun to work with people to talk to.

This devlog is for both today and yesterday. Yesterday's work was fairly evenly split between project planning and writing automated tests for the client. Today's work was a blur of refactoring with occasional emergency bug fixes.

 

Very Large Tasks

I started the day yesterday by adding in Jake's tasks for iteration 39 and 40. This consisted of making a few tasks and entering a lot of work logs.

The tasks were very large, consisting of an estimated week+ worth of work. This has been throwing off the iteration charts, but I plan on sitting down with Jake to get it sorted out.

The main issue is that an iteration is only one week long. So a task which is more than one week worth of work will just not fit. These larger tasks should ideally be broken up into bite sized pieces of perhaps no more than a days worth of work.

 

Mocking Trouble in Mockolate

I had a lot of trouble with mocking methods using Mockolate. I kept getting an Error #1065 when I tried running Cuke4AS3. The error seemed to be caused by any of the "calls..." methods. However, DConsole in the Cuke4AS3 DeveloperUI was not giving up any filenames, line numbers, or stack traces.

Fortunately I found a workaround, albeit a far from perfect one: Stubbing, rather than mocking, worked just fine. I had no idea why, but I was just glad something worked.

But unfortunately, I ran into the error again and this time simply changing the mock to a stub did not fix it. Rather than on a "calls..." method, it was now happening with the "times" method. No matter what I did, the error would not go away.

While looking for a way to get more debugging information, I accidentally found the cause: The DeveloperUI was automatically including a version of FlexUnit in addition to the one I provided. This must have been causing some sort of conflict, because once I removed the redundancy the error disappeared. I hope this helps anyone else who is having the same problem!

 

Who Owns It? UI or Logic?

One part of the refactoring work stands out in my mind. It is the part that I spent the most time on: Deciding whether moving characters between tiles is the responsibility of the user interface or the logic layer.

This isn't as simple as it might seem. Having the character start moving to a new tile could be seen as a move command. That feels very much like it belongs in the user interface layer.

On the other hand, the code would need to be aware that the character can move. That decision is a game rule, and if so it belongs in the logic layer.

I eventually decided to use a bit of a hybrid method. The UI polls the logic layer to see if the character can move. If he can, the UI issues a move command to the logic layer. The logic layer then handles the rest.

 

The Bug that Couldn't be Traced

While trying to move a forgotten user interface method into the GameUI class, I discovered that changing directions didn't work anymore. Upon further digging, I also spotted that your character would not stop animating after running into a wall. To make things even stranger, it looked perfectly fine for everyone else: Your character would be continually walking into a wall on your screen, but everyone else saw him standing still!

I first assumed it was an issue with the event listener call order. To test that theory, I placed trace statements in all of the listeners. Oddly, the output window remained empty.

So I looked for a method that I was sure would be called. The class didn't have a constructor, so I decided to use its initialization method instead. Placing a trace statement there, I ran the game again... And the output window was still empty.

The next few minutes consisted of random tests, checking flashlog.txt, checking other windows... Someone watching the stream even jumped in to try and help me figure out where the traces were going.

I eventually tried creating a basic constructor for GameUI. After placing a trace statement in it, I tested the game again.

There was a message in the output window!

This is when I realized what had gone wrong: The class was never being initialized. None of its event listeners were being registered!

After properly initializing the gameUI object, the game worked again. This was a major oversight that may have gone undetected if I had not decided to move that one method. Who knows how confusing it may have been to debug if it had been left alone.

 

Official Blog for the Indie Game Development Company, IfThen Software