Trending Games | World of Warcraft | Final Fantasy XIV | EVE Online | Ashes of Creation

    Facebook Twitter YouTube Twitch.tv YouTube.Gaming Discord
Register
Quick Game Jump
Members:3,875,753 Users Online:0
Games:883 

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

Newsletter #76 - Cursed Tools

Posted by InvisibleLf Thursday February 24 2011 at 3:28PM
Login or Register to rate this blog post!




News

The second demo of our test project (a vertical scrolling SHMUP) has been released.  For details, click here.

Forum account registration has been temporarily disabled.
http://www.ifthensoftware.net/forums/index.php?showtopic=2197


From the Programmer
Written by Invisible

To make it easier to create the background images, our artist GreyKnight requested that I create a tool for him.  This tool would allow him to create the rough outline of the terrain by stacking blocks.  Blocks would be stacked by clicking the mouse over the area where you want the block to be placed, and it would appear at the top of the stack at that location.  Blocks would then be removed in a similar fashion by right-clicking.

Unfortunately, I seem to be cursed when it comes to tool development (just ask GreyKnight about the map editor I created for Volund).  Things started out fine; the base framework was put together in a few days and I didn't run into any problems.  However, I hit something of a brick wall when I tried to implement the mouse control.  The original plan was to have things set at an isometric angle, but I quickly realized that due to the variable height of the terrain, this would require a 3D mesh of the terrain in order to figure out where the mouse was (ray vs. triangle mesh).  In an effort to simplify the problem, we decided to make it top-down but at a slight slant.  Loradon and Volund both used this view angle, but the height and angle were faked by the artwork.  This change helped simplify the camera setup, but still required a 3D triangle mesh.  One solution, which we are currently considering, is to not use the mouse.  This would allow me to use an easy to keep track of position, and alter whatever is at that position when another key is pressed.


Artist's Easel
Drawn by GreyKnight

iScribble Sketches #34

(Click to enlarge)


(Click to enlarge)



Community Spotlight
Written by jaythemage

Documenting the progress of Ifthen Software's SHMUP in video format, Jay (a community member) created a video of the latest demo.


If you have anything you would like to say in the next community spotlight article, please post it here.

Newsletter #75 - Aeronautics and Shoot 'Em Ups

Posted by InvisibleLf Friday February 18 2011 at 2:21PM
Login or Register to rate this blog post!




News

The first demo of our test project (a vertical scrolling SHMUP) has been released.  For details, click here.


From the Programmer
Written by Invisible

Starting fresh without any wrappers around the APIs has been interesting.  The code is actually a lot simpler, and I spend more time working on the actual game rather than the engine.  This has led me to wonder if the "game engine" which people sometimes talk about is actually a game specific framework, not a collection of generic wrappers and utilities.

I have decided to use exceptions for error handling.  This would also allow me to catch any other exception and report it in a more user-friendly way (although I have not taken advantage of this yet).  The exception class is pretty basic; just a message and a constructor which accepts a variable amount of arguments and constructs the message using vsprintf().  I have plans to create my own error reporting system which generates the crash dump and sends it to an error reporting server, but this will probably have to wait.

All transformations are now handled by Direct3D.  Besides some tests with 3D graphics, this is the first time I have written a game without using pre-transformed and lit vertices.  This makes the code a lot cleaner and easier to write.  I do have a tip for anyone attempting this though:  If you do not have any lights, make sure lighting is turned off.  I spent multiple hours debugging the rendering code before I realized that the graphics were invisible because they weren't lit.  Another nice thing about letting Direct3D handle transformations is that it is really easy to add parallax scrolling; simply place the layers infront of the camera and move the camera around.

I spent some time over the last couple weeks learning about aeronautics.  Because this is the first SHMUP I have worked on which is not in space, the only way to get it "feeling" right is to learn how planes fly in real life.  I don't feel like I have learned the subject well enough to teach it, so I won't be discussing my findings here.  However, if you are interested in learning about aeronautics, I recommend the following article: Aerodynamics in flight: flight principles applied to airplanes.  The game ended up using air resistance, banking, and multiple thrusters to get the ship moving in the right direction.  Not completely accurate, but close enough.


Artist's Easel
Drawn by GreyKnight

iScribble Sketches #33

(Click to enlarge)


(Click to enlarge)


(Click to enlarge)



Community Spotlight
Written by jaythemage



If you have anything you would like to say in the next community spotlight article, please post it here.

Newsletter #74 - MMOVoices and FSM

Posted by InvisibleLf Thursday February 3 2011 at 12:00PM
Login or Register to rate this blog post!




News

The crew at MMOVoices interviewed our programmer (InvisibleMan) in their latest podcast episode: http://www.ifthensof...?showtopic=2187


From the Programmer
Written by InvisibleMan

What was originally a small detour into studying finite state machines has completely redirected development.

Due to the spaghetti code which was SAO state handling, I started researching finite state machines.  The idea is that a finite state machine would clean up the code and make it easier to read, and bugs would be easier to detect as well.  If you want to know more about finite state machines, I highly recommend these two articles: UML State Machine on Wikipedia and Finite State Machines (FSM) by Jason Brownlee.

The FSM system which I wrote involves a main CStateMachine class, a base CState class, a CTransition class, and a CEvent class.  There are also some derived state classes, namely CStateTopSimple, CStateTopComposite, CStateSubSimple, and CStateSubComposite.  CStateMachine stores the root state, and manages the initial event processing.  CState, CTransition, and CEvent are what you would expect them to be; they represent and manage a state, a transition between states, and an event respectively.  The derived state classes are there mainly to make the code easier to both read and write by automatically setting default values and ignoring certain features of the base state class.  A state can have multiple transitions attached to it, which are triggered by events.

An explicit FSM like what I just described is certainly useful, but it's a bit too much for managing character states in Stick Adventures Online.  Because of this, I will be trying out an implicit FSM in one or two test projects.  After I have experience using an implicit FSM, I will be returning to work on SAO: Redux.  An implicit FSM is very similar to how I have been coding state handling already.  However, with my experience in writing and using an explicit FSM, I should be able to write better state handling code.

I have also decided to scrap the engine and start from scratch.  Like with FSMs, I now have more experience which means I can probably write an engine faster and better than I could before.  There are some problems with using an engine for a long time.  One problem is that you forget the original reason for a feature, for example the garbage collection system; it is intended to allow generic RAII and automatic management of memory, so it does not need to be used if these features are not required.  Another problem is that the engine was written with less experience and knowledge, possibly made worse by later additions which piled more recent knowledge on top of the old, possibly bad, designs.

At any rate, I will be working on at least one test project before getting back to SAO: Redux.  Just like with Redux though, I will probably release builds of these projects to people who are in the online chat.


Artist's Easel
Drawn by GreyKnight

iScribble Sketches #32

(Click to enlarge)


(Click to enlarge)



Community Spotlight
Written by willl and jaythemage

Anticipation arises as we wait for SAO:Redux demo 29.  With the production of demos halted at the moment, many members are  beginning to feel uneasy and think that Invisible has stopped working on  SAO: Redux. Though that is not the case, many (typically younger  members) tend to flame InvisibleMan and ITS saying that they could make a  game like SAO a lot faster than this. Some of them try, fail to do so,  and apologize; others ragequit and end up coming back later for any  updates.

If you have anything you would like to say in the next community spotlight article, please post it here.


Funny Quote of the Week
From the online chat

pifreak: An Easter-egg I found on accident: hit F5 in notepad. It inserts the current date and time!
InvisibleMan: Edit->Time/Date F5
pifreak: cool, they hid the Easter egg in the menu <.>