Trending Games | Fallout 76 | World of Warcraft | Star Wars: The Old Republic | Lord of the Rings Online

    Facebook Twitter YouTube YouTube.Gaming Discord
Quick Game Jump
Members:3,908,676 Users Online:0

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.

Author: InvisibleLf

Newsletter #41 - Tumbleweed

Posted by InvisibleLf Friday July 31 2009 at 1:17PM
Login or Register to rate this blog post!

From the Programmer
Written by Invisible

The DirectInput version of the input core seems to be working correctly. Other than that though, there really isn't anything new to report.

I am currently looking into dependency graphs for planning out features. If anyone has any tool recommendations, please leave a comment.

Community Spotlight
Written by Invisible

Unfortunately, nothing new has happened in the community since the last newsletter, besides people joining Stick Adventures Online.

Newsletter #40 - Return to Ruby

Posted by InvisibleLf Thursday July 23 2009 at 2:40PM
Login or Register to rate this blog post!

From the Programmer
Written by Invisible

After running into several issues while creating the library, I have decided to finish the input core and GUI system before continuing. I have also decided to scratch the event system I described in one of my previous articles. There would not be much gain from it, and would only complicate the code.

Yesterday I decided to fix a few bugs with HAL (an SAO bot used for moderating the chat) and was reacquainted with some fun things like ruby hashes, arrays, strings, and regexps everywhere. Once you get used to it, ruby isn't that bad of a language, especially for small projects like HAL which rely on text manipulation.

Community Spotlight
Written by pifreak and Invisible

The bot HAL might just be a program, but thanks to InvisibleMan and Acaceol, the game community benefits a lot from it. HAL has become a big part of the game because it is a connection between IRC and SAO, allowing people to read the in-game chat without needing to be logged in. It also greatly helps moderators enforce the rules. Two especially cool features are the .help and .mods public commands; if any player types them into the chat, HAL sees them and will respond with basic game help and a list of the game moderators. Helping new players is a great thing and I hope fixing up HAL will make the community nice and more newb-friendly.

There has not been much activity in Loradon except a bit of discussion in the Loradon Legends post. I hope they get something more developed and the Legends chosen, since it seems like a fun idea.

Loradon 3.0's progress is crawling along, but if you read InvisibleMan's Twitter you will see that he is working on some impressive ideas and implementing very difficult concepts into the game. I think the community will be very impressed with Loradon 3.0.

Newsletter #39 - Libraries with Acne

Posted by InvisibleLf Thursday July 16 2009 at 7:38PM
Login or Register to rate this blog post!


Overall progress for the Loradon 3.0 Preview has reached 87%!

From the Programmer
Written by Invisible

I have finally had enough of the mess and have decided to put IfThen Software's engine into libraries. Currently, all the source code for the engine is copied into whatever project needs it. If a change to the engine is required, the changes are made to the engine in the project I am working on at the moment. This wouldn't be too much of a problem if the changes were always made to the other copies of the engine, however that rarely happens. Each project ends up with it's own version of the engine "grown" into it, creating quite a mess.

This is my first "big" attempt to make static libraries, and it is surprisingly easy. The static library is pretty much no different than a normal source code file in your project, it is simply pre-compiled. Of course, there are aspects to static library design that can be a little tricky. Making sure that the user of the library can't see the internals of the library is important, and there are a few possible solutions.

Hiding structures, constants, #includes, and various other parts of the library that are only used internally can be done by creating a public header and one or more private headers. The public header will include what the user of the library needs to use the library. The private headers contain declarations and class/structure definitions that the library uses internally, and does not need to present to the user.

The above solution obviously won't work to hide private members of a public class. In order to hide these details, you can either use a pimpl or an interface and factory.

A pimpl is an object in the public class which contains all of the private members. The pimpl's class definition is located in a private header, so the user never has access to it. Unfortunately, this means that the library will need to dereference the pimpl every time private members need to be accessed, which could happen frequently depending on if the code accessing the private member is part of the pimpl or not.

An interface is a pure virtual class that the library's internal class would inherit from. An instance of the internal class can be accessed through this interface, only allowing the methods in the interface to be access. You cannot create an instance of a pure virtual class, so the library would need to provide a factory to create objects of the internal class and hand back a pointer to it. Since interfaces cannot allow direct access to member variables, this solution would not work well in all cases. Also, there would be overhead every time a method of the interface is called. This is because the object's vtable needs to be checked to find the correct address to call.

Community Spotlight
Written by miotatsu, Arekusandaa and Invisible

We are happy to welcome a new member to the SAO leaderboards, Materger1. Speaking of the boards, it is also interesting that Miotatsu now has the first recorded instance of two separate accounts on the top 10! Also, on the forums Eeevil has been organizing a drawing contest, be sure to check that out!

In the Loradon community the only real activity this week was Jay's discovery that mages can get past level 60.

Newsletter #38 - Forum and SAO Upgrades

Posted by InvisibleLf Friday July 10 2009 at 7:28PM
Login or Register to rate this blog post!


Overall progress for the Loradon 3.0 Preview has reached 86%!

The IfThen Software Forums were upgraded last week, introducing new features such as a new skin and the ability to rate individual posts. Be sure to check it out!

Version 1.2.3 of Stick Adventures Online has been released! This new version includes the following:

  • Security has been enhanced.
  • Double-clicking the login button will no longer kick you out of the game.
  • Typing a symbol into your username on the login screen will no longer disconnect you.
  • The grammar used in a death message has been fixed.

From the Programmer
Written by Invisible

This week I have mostly been doing design work for Loradon 3.0 and fixing glitches in SAO. However, there are a few things that I can talk about which might be interesting.

I have looked into SEH (Structured Exception Handling) which would allow me to create better error catching code. From what I understand, I would be able to create a version of the "Send/Don't Send" window that you see sometimes on Windows, and have it report the error to us instead of to Microsoft (who obviously wouldn't be able to do anything about it).

Currently you need to create an account for each of our online products in order to play them. You also need a separate account to talk on the forums, and IRC (can be accessed at the top of the forum index) has it's own account system. To make things easier for our customers, I am starting plans to allow the creation of a central account that you can use throughout our community. Luckily, our forum's software has the ability to plug into different login systems, so that part will be somewhat simple. I have not yet found out if a similar system is available in our IRC software, but I will continue to search. When this new system is put in place, you will be required to create a new account with it. Don't worry about losing your previous accounts though. You will be allowed to associate a Loradon Online account, a forum account, and some number of SAO accounts to your new global account. If this system is released after the Loradon 3.0 Preview, you will also be able to associate your Loradon 3.0 account.

It appears as though send() was not completely causing the random disconnect glitch in SAO. After fixing send() to continue trying if there is a non-fatal failure, players are still being disconnected. The only way I am going to fix this bug is by getting a client-side log of packets sent to and received from the server. Unfortunately, very few players would likely bother emailing me the log. To remedy this, the client will automatically send the debug logs to a special server when it disconnects. I will most likely also use this "special server" to receive error reports when I implement SEH.

Community Spotlight
Written by pifreak and Invisible

This week was very exciting for Stick Adventures Online players. IfThen Software has been updating the game by fixing glitches, increasing security, and re-ordering the GUI. Some unused parts have been removed as to not confuse new players. The game is almost glitch free now, and there were as many as 14 players online at once.

Over in the Loradon Online community, things have been staying active. Perhaps the new forum design has encouraged new posts and activity. There is still discussion about who is to be included in Loradon Legends.

Newsletter #37 - SAO 1.2.2

Posted by InvisibleLf Friday July 3 2009 at 6:49PM
Login or Register to rate this blog post!


Stick Adventures Online version 1.2.2 has been released!

  • Unused parts of the GUI have been removed.
  • Pressing the enter key twice while on the login screen should no longer disconnect you.
  • The random disconnect bug should now be fixed.
  • The repeating character bug while typing should be fixed.
  • Creating a character with a symbol in it's name should no longer kick you.

From the Programmer
Written by Invisible

This week I decided to fix some glitches in SAO that have been bugging the community for a while. One of them was quite difficult to figure out and was causing players to be disconnected at random. After many tests, I finally figured out what the problem was: Threading and non-blocking sockets do not mix well unless you handle WSAEWOULDBLOCK from each Winsock function including send(). Due to various reasons, send() would sometimes return a non-fatal error such as WSAEWOULDBLOCK which just means that the packet needs to be sent again at a later time. Unfortunately, my networking code was not doing so.

Due to the bug fixing I have been doing on SAO, I have not had a whole lot of time to work on that new input system. However, I think I have the design finished. Callbacks can be registered with the input core for the events KEY_DOWN, KEY_UP, KEY_REPEAT, CHAR_ENTERED, MOUSE_MOVE, MOUSE_BUTTON_DOWN and MOUSE_BUTTON_UP. I will expand this list of events when I require input from a different device, such as a joystick or gamepad. When one of these events occurs, the event is triggered and all registered callbacks for that event are called. The CHAR_ENTERED event is triggered when a specific character is entered, rather than a key pressed/released. The KEY_REPEAT event will handle repeating a key press (the exact timing of each press is figured out by the input core and depends on the API it uses as well as the operating system). A callback registered to handle a KEY_REPEAT will most likely want to copy the code used in KEY_DOWN, however the two events are made separate so that if key repeating is not required, it doesn't have to be handled. The callback is able to check the current state of all the keys/mouse buttons/mouse position/etc, not just the one it was created to handle.

Artist's Easel
Written by GreyKnight

The bank is finally finished! The only light sources are the two braziers (unless you count the door), so I gave everything a slight orange tint.

This is the end of the Artist's Easel for now. If I am working on a large background or something similar, I might start this section up again. However, it is getting difficult to show what I am working on without giving too much away.

Part #5

Drawn with:
MS Paint

Community Spotlight

Sorry, there isn't a community spotlight article this week.