• entries
9
4
• views
23641

Personal development journal asside from my other projects.

## Introduction to the level editor for Genix...

Unlike the Xbox 360 version of Genix, The PC edition allows us to give more game for your buck. With the release of the latest patch came a small piece of software that is designed solely for creating your own levels for the game for purpose of sharing and loading them to extend game play adding more challenge and fun.

# Getting Started

Before we start make sure you have a copy of Genix installed on your computer, then apply the v1.6 patch found in the downloads section for this game (of click here). It is important to note that this patch is only for the full version of the game, and applying it to the demo will result in an unstable installation.

# Building It

When developing the level editor we decided against adding modelling functionality because there are far better programs for doing this out there, so instead before we boot up the editor we need to create the geometry for our level with a 3D design program. For this tutorial I recommend Blender as it's free, and for simplicity purposes it will be the only one demonstrated in this tutorial.

Tutorial Images #1 - Indie DB

Notice that in the image the mesh that has been created has absolutely no faces, and that names of objects and their inner meshes are important. [color=#ff0000]WorldMesh[/color] describes the mesh in which you should put walls of the map as collision detection is applied to only this mesh. And for the two doors in the level I have named them [color=#ff0000]Door.001[/color] and [color=#ff0000]Door.002[/color] . (note: if you wanted the doors to have keys, you'd use [color=#ff0000]Key.***[/color]). Lastly the inner mesh should be named the same as the object, you can always ensure this is done by checking the scene graph to the top right of the screen.

# Exporting It

Once we have finished with our mesh, we need to export it as a WaveFront OBJ file, Genix does not require a lot of the information the OBJ format usually contains, so we need to strip out a few things like materials and UV's. So before you export, make sure you use the following settings:

Tutorial Images #1 - Indie DB

I recommend also adding this as a pre-set by clicking the + sign next to "Operator Pre-set's" at the top of the Export OBJ panel so you don't need to refer to this image every time.

# Building The Map

Now that we have our OBJ file, it's time to boot up "Genix Editor.exe" which should be inside the folder in which Genix was installed. When you boot it goto the File menu and select 'New...'.

Tutorial Images #1 - Indie DB

In the dialogue that appears enter a name for your map and also put an author name in so people know who made the map. Before you click OK make sure to also select the OBJ file that we created. GME uses the geometry from the OBJ file work out where things go, and to build a custom structure for the geometry suited for displaying in Genix.

Tutorial Images #1 - Indie DB

After pressing OK, you should see the geometry that we saw a minute ago in Blender (except instead just in 2D). GME is fairly WYSWIG (what you see is what you get) so dragging and dropping plays a big part here, as we want the finish point to be in the last room, I simply dragged it to the position I wanted. If the size of the finish point is a bit small or a bit too big, then right click on the finish point and you'll be able to resize it (metal note; right click on things to edit).

Tutorial Images #1 - Indie DB

Now lets place some entities, first note that you must ALWAYS add a spawn point lol, not doing so will cause the map to simply not load so it's good practice to remember to do that first. Creating entities is simple, click on one of the types on the tool bar left of the window. There is a type for enemies, spawn points and pick up's.

Next I placed two baddies into the level, a QuadBot in the first corridor, and a ClawFish within the centre room of the map. Notice that in the bottom left of the window gives you a running count of how many enemies you have placed, this is important because once you start to get up to around 100 on a not so new computer, you'll find the AI can be a bit cruel on the frame rate (also sanity note, place enemies inside the level, there is no AI written to stop an enemy wandering off into oblivion lol).

Once you have placed a spawn point and a few baddies in there, lets save the map as a GMF file, and boot up Genix!

Tutorial Images #1 - Indie DB

Assuming you have booted the launcher, you'll find a new tab (as long as the patch has been applied correctly) named 'Custom Game'. Click on it, click on the browse button and locate the GMF file that you just saved.

Tutorial Images #1 - Indie DB

Once you've found it, simply click on 'Start Custom game...' and voila the map you created should load for you to play!

# Conclusion

I realise that this is not the most detailed tutorial at the moment, instead the purpose was to give you a bish bash bosh no frills introduction into the subject of creating levels for Genix. As you can see it's possible within just a few minutes to have something resembling a playable map, and I sincerely hope that after reading this you'll feel confident enough to give it a go yourself. And if you are particularly happy with one that you create, that you perhaps share you special creation with us either here at gamedev.net or on our community hosted on IndieDB / Desura .

Thank you for reading, and have a great time map designing!

Aimee

## New indie game Genix releases next week for PC and XBLIG...

After months and months of slaving away trying to build something we think people would actually play, I am proud to announce that Genix our first ever commercial game will be making it's way to the stores next week! Genix is an action packed twin-stick shooter game that takes the space invaders concept, mixes up with a few classic gaming mechanics then throws in a dose of 3D magic to bring it all to life.

For the PC, Genix will be available through Indie City, and Desura on Monday 19th of November.
For the Xbox 360 this all depends on the peer review process, however we think you'll likely be able to play it on Wednesday the 21st of November.

So what do you get for your dosh? Well Genix is designed from the ground up for HD. One of the ways we did that was to deal with thin lines which can distort when they are far away, we built a custom vector engine that is able to deal with depth, line thickness, and end caps so no matter where you are in a level you can still see the boundaries crystal clear. To Joe Blogs this may seem at first like a game with little graphical detail, but we assure you the devil is in the detail

As well as swish graphics, we have built 30 challenging levels for you to battle through, each one gets progressively more difficult, and we bet by level 13 you are pulling your hair out over it! To help you cope we have designed 9 mental weapons that each have their unique abilities (check the images coupled with this post for more info about them), 8 types of robotic enemy, 8 boss battles, and to boot we have written 6 original music tracks to keep you bopping while you battle.

That's all for now, thank you so much for reading and I hope you join us this weekend by visiting the official website for Genix at: http://genix.xpod-games.com

Aimee.

## Teamwork is awesome...

Even when an event is small, it doesn't mean it's insignificant. Today Rob passed me a model he had textured and animated, and for the first time I was able to import it, and show it animating in our game engine Phobius. Yep this is a small achievement, but for us it means volumes, this means that the engine is ready finally to be used by other people, and is not going to throw a strop when someone else uses it!

Aimee

Hey everyone! Today is quite big for my team and I as we have released the first alpha of a jewel clone we have been working on, it's written in XNA 4.0, and is built on the reach framework, so it should run on most peoples computers. So make sure to get over to the game's website, and download a copy, it's free, so feel free to share with your friends!

> http://jewels.xpod.be

Also I would like to thank everyone who's been following me recently, knowing that people are watching makes it all more important to get things done, so it's a great motivator.

Take care.

Aimee.

## Phobius3D - January Tech Demo Video

[media]
[/media]

Hi everyone, If your not yet familiar with the projects we are currently working on, the video above will serve as a good reference. My name is Aimee, and I am the lead coder in a team called Xpod Games. Our aim this year is to release two big indie games that we have been working on for the last few months, I can't talk about either in this article, but I can tell you that the first will be a zombie slasher, and will be available for both windows and the Xbox 360.

Before I go into any information about the for mentioned video, I would like to explain how we've gotten to were we are. Last year we started work on a game engine that ran using a new platform called OpenTK. As of yet this engine is not complete, and is taking longer that we first envisioned, because due to the nature of cross platform, OpenTK has it's quirks.

# How We Got Here

So during Christmas, I started work on a second engine that would ensure that we could get at-least 1 game out this year. I picked XNA because of it's reliability, and ability to run on the Xbox 360. 5 weeks on, and as a team we are pretty surprised with the results! Thank's to the learning curve of XNA, we've managed to get done in just over a month, what we could not get done in 10 with the previous framework.

# Engine Specification

Now that the explaining is over and done with, here is a run down on what the specs for Phobius3D are:

• Written in XNA 4.0 (Hi-Definition Profile).
• Provides reliable scene management.
• Includes an XAML based parser coupled with a fast user interface system.
• Standard overlay console.
• Unified 3D world importer (FBX file coupled with an XML description file), which allows you to specify time or condition based triggers to control, translate and animate entities within a 3D world.
• Skinned models, with animation and entity attachment support
• Particle system support, with emitters defined as entities, so they can be attached to other entities.
• A non-clunky real-time point light mapping engine.
• Box, Sphere and Triangle collision detection support. 3D world's allow for separate mesh to be loaded as collision map.
• Post processors, including Gaussian Blur, Color Washing, and Depth of Field.
• An overriding material system for ModelMeshPart objects, allowing you to specify custom shaders for special effects.
• Sky boxes (spherical).
• Re-implemented UV texture and normal mapping.

As of today, all the features above are complete, they are in need of a little more testing, but are complete. This means from now till the end of March, our team is going to be working hard to finish the first game I mentioned before. One of the reasons why we built this engine in the first place, was for the experience obviously. However it was also because we needed something that we were unable to find using google.

# Availability

It's our aim to share this engine with other indie teams in the end, in turn asking for a small share in any profit made with it. So if you are looking for an engine like this for your project (or would like to join our team as were still looking for talent of all kinds), then please feel free to either message me directly, or alternatively email me at: aimee[at]xpod.be

For now take care, and I look forward to showing you more of the hard work we are putting in.

Aimee Bailey
Xpod Games.

## Phobius3D Site Online!

After a few days slogging it out, I'm pleased to announce that the new website for our flagship project is now
online! Phobius3D is a all purpose game engine written in XNA, please make sure to check it out at the

http://phobius.xpod.be

Aimee.

## Use FMOD Ex to play audio in Linux, A C# Mono tutorial.

[quote]
Since I posted this article, I was approached by the creator of FmodSharp and since he has joined our games development team (thanks Marc-Andre!). Also as the project is now fully active again, the file's I originally provided on my website are out of date, and thus instead I have provided a link to the active FmodSharp project. When looking for files to complete this tutorial, please refer to that website instead. The code is up-to date, and far more reliable than the ones I originally provided.

Aimee.
[/quote]

If anyone has visited the project I am working on with others at the moment named Akaldiroka, you will know that we have spent a great deal of time ensuring that the engine works fine on both Windows and Linux. Recently while debugging and seeing how the engine ran on other peoples computers, a problem crept up with OpenAL failing to load, causing the game to crash on windows. Also Ubuntu 10.10 (the distribution I am using) had mixed results while dealing with the JACK server.

Now from a game developers stand-point, this is a simple fix. Perhaps use some API from DirectX instead to handle audio, and not pay attention to the misbehaviours of Linux leaving it for users to fix it. This would surely solve the problem, and everyone would be happy as Larry (apart for those unfortunate enough not to have the right Linux set-up). However from a cross-platform point of view, it would also mean maintaining multiple versions of the game, which in-turn would mean allot more work (not very good for an indie developer, and possibly career destroying having a first title that didn't really work).

So digging around, there seemed to be allot of hype about FMOD, and it's abilities to work on pretty much any system you care to distribute for. Also as mono allows you to target native FMOD linux binaries, which means one piece of code suits all. On the down-side, as of yet (or as far as I could find) there is no real tutorial on how to make this work in a C#/Mono environment (though the sample for Windows should just work out of the bag), so today I will run through what is needed to get your audio playing in Linux.

Pre-Requisites:
- fmodapi43400linux.tar.gz (get it from http://www.fmod.org).
[s]- fmodsharp.tar.gz (get if from my site http://aimee.xpod.be/bin/fmodsharp.rar)[/s]
- FmodSharp (get it from http://gitorious.org/fmodsharp)
- MonoDevelop 2.4 (get it from http://monodevelop.com)
- An mp3 or some other type of audio file you can use to test the project with.

Assumes:
- Ubuntu 10.10, allthough im sure this will work with other unix based operating systems like Mint.
- {user} in terminal commands should be replaced with your logon username.

1. Extract the dependencies

OK, so the first thing we need to do is extract the tarball we downloaded from FMOD and the one I provided. For simplicity sake we will be using a folder on the desktop. So lets open up the terminal and create it:

mkdir /home/{user}/Desktop/fmodsharp

Once this is done, open fmodsharp.tar.gz, and extract the contents of that tarball to the directory you just created. Next open fmodapi43400linux.tar.gz and navigate to the internal folder '/fmodapi43400linux/api/lib/', there you will see these two files:

- libfmodex-4.34.00.so
- libfmodexL-4.34.00.so

These files are the fmod binaries, so we'll need to install them. But for now, extract these also into the desktop folder you created.

2. Install the FMOD binaries on Linux.

Now that we have the files we need on our desktop, it's time to do something with them. So lets go back into the terminal and write this command:

sudo cp /home/{user}/Desktop/fmodsharp/libfmodex* /usr/local/lib

If everything goes well, the terminal should ask you for your root password, then return with no errors. Doing this adds the libraries you need to be able to use FMOD, so this is a critical step and should not be skipped.

3. Refresh the binary cache.

This is a really simple step, but important. Even though we have copied over the libraries, Linux does not yet know they exist. So we must refresh something called ldconfig. To do this, simply run this command in your terminal:

sudo ldconfig

A step I almost missed when I first got this working. In order for you to be able build your project, mono need's to know where the Linux equivalent libraries are. To do this, we must edit a file. As it is protected,
use the sudo command like so:

sudo gedit /etc/mono/config

When gedit opens, you'll see alot of XML code with nodes such as dllmap etc..., this is the file Mono uses to direct DLL calls when running under linux. So in order for us to have FMOD work too, we must add it, so after the last

Now save the file, and exit gedit.

Notice that i have used the library that ends with 'L', this is the logging version of FMOD, which means you get a more verbose output when trying to solve problems. I reccomend changing this at later date when you are happy things are working right.

5. Test it!

Yes we are just about there! Let's go back to the folder we created on the desktop from FmodSharp and open the PlayFile.csprj solution in MonoDevelop.

[s]Credit here should goto the FMOD team as this solution is just a modification of the 'examples_csharp/vs2005/playsound' example found in the Win32 download of FMOD. However there have been some important changes that make this project cross-platform. Here are the fixes that have been made:

- Linux doesnt like unicode filename's, especially when it comes to FMOD, so fmod.cs has been altered to deal only with Ansii.

- createSound has had the MODE changed from MODE.HARDWARE to MODE.MPEGSEARCH to ensure the mp3 is read correctly. See the FMOD documentation for more info on this subject.

Now you will notice on line 190 that I have chosen a file called 'kandi.mp3', make sure to change this path to the mp3 you wish to play. Once you have done so, press F5 to debug the application, the window should appear like so:[/s]

[s]If it shows, then congratulations! click on the button and you should be able to hear your audio file playing. If you have any problems, feel free to email me and i'll see what I can do. For now, thanks for reading.[/s]
[s]
[/s]
In the new FmodSharp, you must either specify the file in the command line as an argument, or change the SoundFile creation to use a string containing the path to the file you wish to play. If it plays, then congratulations!. If you have any problems, feel free to email me and i'll see what I can do. For now, thanks for reading.

Aimee.

## Expanding the team...

Today I posted a new topic on the forum to explore the possibility of taking on new team members to build the first title that will use the BaseOne engine, I think I've added enough information in there to make sure people are aware of what were really asking for, however I'm also a bit weary as to what the reception will be. Things like this are always a bit hit and miss because you never know at the start of a long development project what the future will actually be like until you get into the guts of it. So fingers crossed, and lets hope there is enough interest in it to start getting that design doc looked at by new-comers.

Also I added a new item to the blog today reviewing some work we had done on the Zodra NPC engine, and a tool for pixel artists that should make things a tad bit easier. One of the great things about having a background in C# is that I am able to build little apps like that pretty fast. Perhaps when we take on new people, there will be further requests, but we'll have to wait and see.

That's all for now.

Aimee.

## Morning everyone....

As this is my first entry, I'm going to introduce myself. My name is Aimee Bailey, I am 26, and I am a coder from the north-west of England. I'm currently employed as a web-developer, although I do also own a software company that is getting it's feet off the ground at the moment. My main focus is the development of computer games, thus why I have decided to start a journal here

Recently my work has started to get noticed (which is always a good thing) as I have been developing a few open source projects based around a 2D OpenGL game engine. The main one to note is TiledMax, which is a parser written in C# for the very popular tile map format .TMX supported by the Tiled map editor project. Even though there is already an available library for .Net, the one that exists relies on the XNA framework to function. TiledMax however is not platform-specific, and is limited only by how many places .Net can operate, which means it is ideal for games developed using OpenGL, and can even be used on mobile applications!

Also in works at the moment is a ready-to-go NPC (non-playable character) conversation engine built on the .Net framework named Zodra. This is usually a big headache for people, so I believe that this system may be of some help for budding games coders out there. It features a straight forward XML layout, built in scripting functions for navigating the conversation tree (invocation based on response), profile dictionary to define characteristics about an NPC, and easy implementation for commands to be sent to your game engine.

For both of these projects, please visit the parent project BaseOne's blog by following this link...

http://themakingofbaseone.wordpress.com

* This blog is updated daily, regularly features video previews, and free downloads. So make sure you subscribe so as not to miss out on anything

Finally a note on what these journals will consist of in the future, as the main source of information is posted regularly on the parent blog, it sometimes can be hard to maintain both. However as allot of what is going on at the moment concerns things that may be of use here, I will keep this journal posted on what is going on. Also where relevant, I will post some articles and tutorials on how to perhaps use the tools I have developed, and see if I can contribute to the already rich content available on this site.

Thanks for taking the time to read my first entry, and I hope you check back to read more of my rantings.

Aimee.