Unnamed Space Shooter

Here are a couple of screen-shots from a Freespace like space shooter that I have been developing for the last six months.  I am using Unity3d and C# to create the game. There is only one mission in the game at the movement but most of the features that I want are already there like complex objectives, including but not limited to destroy a specific group, protected a specific group, reach a point etc. All objectives can be time limited, start after a specific amount of time, depend on other objectives and more.

There are also multiple weapons both primary (lasers) and secondary (missiles), the player can active or deactivate individual lasers, multiple lasers can be active at the same time, and switch between available missile launchers. The missiles have target locking or they can be just simple fire and forget missiles.

I have also implemented some auto-piloting functionality such as automatic speed keeping either at full or half speed. Or the ability to match the speed of your current target, useful for pursuing someone while blasting them to pieces. There is also an afterburner that allows you to go slightly above the ships speed limit and accelerates faster than the ordinary engines.

The ship control itself is not realistic and is more like driving a car, I found this to be more fun than the realistic alternative.

Enough talk, here are the screen-shots, showing everything from the main menu to explosions to me getting shot at.

Posted in Game development | Tagged , , , , , | Leave a comment

RymdspeletHD has been released!

Hi,
I have just released the final version of my latest game RymdspeletHD, (that’s Swedish for “The Space Game HD”).
It’s your standard asteroids-like space shooter with a few nice features such as an online highscore and an upgrade system that let’s you upgrade your ship between levels.

The game is written in C++ with HGE. I have been working on it for about 12 months but the total amount of time spent is probably closer to 60 hours, not including the previous incarnations of the game.

It is made for Windows but it may work on Linux through wine.

It can be downloaded here.
http://www.rymdspelet.net/

I have embedded a video showcasing some gameplay, or you can watch it in hd here.

Posted in Uncategorized | Tagged , , , , | Leave a comment

Multi-colored characters

I just branched my standard shader into a special character shader that allows three areas to have different colors per mesh instance – skin, hair and eye color.

I have also modified the terrain shader to use gray-scale detail textures instead of color textures. This makes it possible to combine four detail textures into one texture, one for each channel, resulting in less texture fetches. I use a base color layer on the terrain to bring back the colors and the detail textures are also used as height maps to calculate a nice per pixel normal. All in all this saves a couple of texture fetches and quite a lot of texture memory as only two textures are used instead of 9 (1 base + 1 detail compared to 1 base + 4 detail color + 4 detail normal).

Posted in Uncategorized | Tagged , , , | Leave a comment

Continuing the conversation

Worked a bit more on the conversation editor. Line links can now be established and broken, the “l” button and the “b” button. Lines can also be moved up and down on the same level using the left and right buttons. And I also made it so that NPC responses are colored in red and links in violet.

There are also some more visual changes like icons for most of the buttons and the three main areas, the conversation list, the tree and the line editor can be resized.

Posted in Game development | Tagged , , , | Leave a comment

Starting a conversation

I am working on a rpg in the style of Baldur’s Gate and Dragon Age. An important part in these kind of games is the conversation system. The conversations are not just simple one liners but they branch and repeat in various ways so it is important that the conversation system is flexible enough to handle all of this.

A conversation is a line that may have several lines or responses. It may also have an action script that is executed when the line is activated. There can also be a condition script and if it evaluates to true then the line is visible. This means that there can be several roots in a conversation and the one that is used is the first one whose condition evaluates to true.

A line can also be a link to another line which means that the conversation jumps to that line instead, this can be great for conversations that repeat.

This is what I got so far:

class ConversationLine {
public:
	Guid ID;
	Guid Link; // optional
	string Condition; // Optional
	string Action; // Optional
	string Text;
	List<ConversationLine> Lines;
};
 
typedef List<ConversationLine> Conversation;

I made an editor for this conversation system in C# and I will probably implement it in the actual game as soon as I have got the GUI up and running. I have attached a screenshot of the editor below.

Posted in Game development | Tagged , , , | Leave a comment

A haskell interpreter in Javascript

The report for my bachelor thesis has just been completed, a Haskell interpreter written i Javascript. We were four people working on this project and my main responsibility was to make the parser, this meant stripping comment, applying the layout rules, parsing the actual grammar and generating the abstract syntax tree. Most of the language as it is specified in the Haskell 98 online report can be parsed, but we have not tested everything yet so there are probably a lot of bugs. The layout rules are applied correctly in most cases but some things like let expressions in list comprehensions does not expand correctly as we do not keep track of invalid and valid parsings for let expression, just of matching ‘let … in’ expression do get the basic stuff working.

The simple lexer and the complete parser was made using a parser combinator library called JSParse and it worked out fine except that it does not keep track of line numbers, columns or which parser that failed so it is really hard to get any good error messages. There were also a couple of bugs in the butnot-parser and in the caching for the choice parser. I managed to fix both of them and the functioning version can be found at our git repository.

We do not support type classes at the moment but we will most likely fix that in the two coming weeks as we really want them in the final presentation of the project.

The source code for the whole project can be found at our git repository, feel free to clone it. http://github.com/johang88/haskellinjavascript

I have also put up an online demo at http://hiji.tinyrocket.se that works in firefox and chrome but internet explorer remains untested. The demo has a small part of the standard prelude library the definition of which can be found here http://hiji.tinyrocket.se/hs/Prelude.hs

Posted in Functional programming | Tagged , , , , , , | Leave a comment