NaGa CreMo 2013 and ADG Compo #2

What do these 2 things mean? Lets start with NaGaCreMo, it is a challenge unofficially hosted each year on The Game Creators forum, the challenge is in tribute to NaNoWriMo, which stands for National Novel Writing Month, so as you can imagine NaGaCreMo is National Game Creating Month. The idea of NaGaCreMo is to meet your own goals, generally you are expected to have a completed demo by the end of it. The original Abeyance demo was a NaGaCreMo creation.

What about the ADG competition? ADG is the App Developers Group, a group of developers who produce apps for various platforms using products from The Game Creators. Last year’s results can be found here.

Click for NaGaCreMo 2013

Click for ADG Competition #2

So, why am I writing an article about these 2? I’ll be aiming at using Abeyance for both. I want to have a decent demo for Abeyance out by the end of both. For ADG Compo, the theme is New Beginnings and unfortunately, starting a project in a new engine doesn’t count, however, there is a scene in Abeyance that’ll fit the theme. The idea will be to have a prototype demo ready for December 31st, the deadline for the first competition. So then, what’s the plan for NaGaCreMo? To have a fully fledged demo for Abeyance as a showcase for the final game. I will try and plough through as much content as possible, but bear in mind I am working full time, so hopefully these goals won’t be unrealistic. Either way, I will work hard towards them.

How is this going to approached, I am working on the actual engine for Abeyance, it’ll use XML to script much of its content as previous articles have suggested. It’ll mean I’ll just need to work on the core engine and then the rest will rely on the scripts. The method I am using will be based on an old text adventure of mine, which read LUA scripts. The text adventure can be found here (for those curious little folks).

For an example, you can see 2 sets of scene data loaded on the screen, this data will be used to create each ‘room’, there will be additional scripts, for example, NPC data and each NPC created will be assigned to a room.

image

Abeyance: Asset Workflow

Now I’ve got a bit more money behind me I can start getting the applications I prefer to use in creating Abeyance. I’ve already picked up Silo 3D, which is an excellent 3D modeller and in many ways superior to Hexagon. Then to add on top of that I’ll need 3D Coat (my next purchase) and Carrara 8. These combined should help me create some decent enough media. Silo has invested itself in ergonomic 3D modelling and I can quickly create media:

image

Then import it into 3D Coat where I can UV Map and Texture my object in 3D.

image

3D Coat is actually a really cool application for texturing, it in some ways tries to be a cheaper alternative to ZBrush, but for me it’s UV Mapping and texturing tools are what makes this a worthwhile tool. The above texture was really simple, I use the auto-UV feature and then I was able to paint a texture I had saved onto my HDD onto the model.

Then the next stage is I can import it into Carrara 8, from there I can pose my scene and then export to .x or in the case of character models, animate them first.

image

image

For scenes, the next step could be Gile[s] to just bake in lightmaps.

Abeyance: GDK

Okay, okay, okay, this is the second time I’ve switched, please don’t kill me. I picked up Dark GDK.NET, lets be honest, I learned programming through Dark Basic Pro, but I love what C# has to off and Unity3D is an awesome toolset and it was sad to leave Dark Basic Pro behind, so I’ve decided to head to the middle ground and convert my DBP code to Dark GDK.NET, which should be a quicker process than converting DBP code to Unity3D, because Dark GDK.NET is a .NET version of DBP. What will you guys be expecting? What I originally promised, basically, just in Dark GDK.NET. Plus, in using C#, I’ve got the bonus of having XML to code with too, which’ll be useful for handling data.

I’ve also bought a load of models from The Game Creators Store, just as stock media to work with, so I can worry about coding.

You can see here, I’ve already got a scene loaded, the character moves around and you can see on the left are skills, these are just displaying information directly from an XML file – so to add skills, all I need to do is type in my XML document and it’ll reduce compile times nicely.

. Abeyancedgdk

Abeyance Classes

Whisperer

Heavily Neuro focused. Has more MND. Wields a dagger and pistol.

Psychopath

Heavily Psycho focused. Has more DEL. Wields a short sword and pistol.

trigger finger

Gun specialist. Has more DEX. Wields a dagger and shotgun. Fires Neuro from barrel

Manic

Melee Specialist. Has more STR. Wields a long sword and pistol.

Tormentir

Defender. Has more VIT. Wields a hammer and a pistol.

Shadower

Masters of evasion. Has more AGI. Wields a special dagger and a pistol

Shadow Talker

Jack of all trades, master of Notts. Balanced Stats. Nott related attacks. Wields a short sword and pistol.

Class System In Abeyance–Update

I’ve not posted much Abeyance stuff and to be fair, I was away in Germany last week and this week my brain has literally been fried. Some of the stuff I was working on in Dark Basic Pro was experimentation leading up to the code I’d be using in Abeyance to implement my classes and in the process I have made update to skills and items (due to discovering a more convenient method).

In theory, I could have as many classes as I’d like without changing any code in C#.

image

See, I can just define everything inside of the editor. Keats’ Class is also listed there, his current class will be set to whatever the string ‘Class’ says. The default is Whisperer. But in mid battle whilst testing I could change this and everything would adapt.

image

Current stats are set to ‘Whisperer’. But in editor all I have to do is type a different class.

image

And automatically the player data changes to that specific class. I am not going to implement a system where the player can change class, but this demonstrates a much more sensible way of handling classes. Also, lets say I wanted to add a new class?

image

No changes to code were necessary.In fact, all of these screenshots were all taken from the same test run and we made whilst debugging. See, this is what I love about Unity3D – I can write my code to make as much use of the editor as I need.

So what about the code? Essentially I am using a class in C#, previously I was using structs, but you can’t get a struct to show in the editor, but you can get a class to if you use this command:

[System.Serializable]

It goes before you create the class:

[System.Serializable]
  public class Classes
   {
      public string name;
       public string magic1;
       public string magic2;
       public string skill;
       public string weapon;
       public string armor;
       public float HP;
       public float MP;
       public float Speed;
       public float STR;
       public float VIT;
       public float MND;
       public float DEL;
       public float DEX;
      public float AGI;
   }

In DBP it’s like using UDTs.

With having the ability to level up in game, I can’t have set the HP, MP and so on from just within the class. Instead I use a base stat. You’ll notice above the Demoniser class had ‘24hp’ but Keats actually has ‘120hp’. It’s because I use that ‘24’ as part of a calculation to get the player’s final stat, which scales as the player levels up.

So how has this affected my inventory & abilities. With the ability to use a class inside of the editor it means I can throw my old system out of the window, the DBP version of that system can be found here Like with the classes I can just define all of these variables from within the editor and not compile anything.

image. image

So with this system, how would make class specific abilities? I haven’t implemented this system yet, but you’ll notice in each class/path, there’s Magic1 and Magic2, this would work nicely as a place holder for creating different types of spells. In Abeyance there’s only 2 types of ‘magic’ and that’s Neuro and Psycho and they’re hardwired into every class/path. However, each class has a set of exclusive ‘Neuro’ and ‘Psycho’, so I can still take advantage of ‘Magic1’ and ‘Magic2’ to give categories for exclusive spells, these would have to match with a spell’s particular school. Why have I done it as “Magic1’” and “Magic2”? It’d make the code re-useable for future projects without change. For now the school is just defaulted ‘neuro’ or ‘psycho’. But in actuality for ‘Shadower’ I might have magic1 as “shadow” and magic2 as “darkblade” and Mindjolt’s school could be ‘shadow’. So when Keats’ Neuro list appears as a Shadower it’ll show Mindjolt, but no other class could see it unless there’s another class with ‘shadow’ as magic1. The advantage here is that you could actually mix and match some classes – for example 2 classes might share the same Neuro attacks but have different Psycho attacks. And should I introduce a new class I could easily set up a new series of spells without coding or recompiling.

What about animation? I can just add 1 extra line of code in my class and have my animation code use that line to grab the animation from that line of code. Simple.Thank Satan for Object Orientated Programming.

Abeyance: Title

Generally I don’t like to have a title screen until the main components are put into place, but players do pick Keats’ class from here and the character info will be set up in this scene as well. So it seems to be the obvious next step, as I am working on scene transitions. Though admittedly, I haven’t done anything for a few days, you can blame Mass Effect 3 for that one. It’s a damn good game.

I liked the atmosphere of the original title I hate in Dark Basic Pro, because it was smoky and eerie with the music that came with it. You might remember this. I would have had no trouble recreating that in Unity3D. But I thought I’d experiment with something else. Just to have more visuals and capture the atmosphere of some other part of the game. Whilst not a lot has been said about the plot beyond the warehouse, but Keats does have this sanctuary in his mind. The ideas of the game actual stem from a few pieces of poetry from different poets, you can probably work out John Keats is one of them and those who know his poetry might be a little puzzled given the atmosphere, but hopefully that part will make sense later. The idea of this sanctuary in Keats’ mind actually comes from the poem ‘I am’ by John Clare, because John Clare spent the end of his days in a mental asylum and this poem is beautiful piece into how a man in his position felt. It is a sad piece, but in it he longed to be back with nature, free from all burdens and free from burdening others. Reading it I had this vision of a valley where his was alone, but at peace.

But here is the title menu I ended up with.

image

The terrain is representative of Keats’ sanctuary. Of course, to match the mood of some of the sadness, the rain is added and an overcast sky and the music is meant to reflect it too. But don’t worry, this game isn’t going to be full of depression and it isn’t going to keep you on a downer, for a start that would be bad pacing, but I hope that as a title screen it’ll help set the atmosphere.

Abeyance: Enemy AI

image

 

 

 

 

 

 

The battle system is practically finished. To do: Iron out bugs, end battle conditions, add damage to GUI, add battle maths

How do you work out enemy AI for such a game? It’s actually pretty simple. You leave it all up to chance. You work it out by percentages. So a number out of 100. Then you choose your range. In the above video the ranges are:

0 – 40: Attack

41-70: Hex

71-100: Twitch

image

So this means Hex and Twitch have an equal chance of being used, whereas Attack has a slightly higher chance. Of course, to complicate things, like for boss battles you can add extra conditions (which you might set out as a boolean) so if Enemy Health > Then increase the chance of Hex.

That’s all there really is to it.

Abeyance: Animations Part 2

I’ve not behaved in not offering daily blog posts. So as I am back on track with this project I ought to make one for today.

It’s mostly about getting the battle system sorted out in Unity3D. As you’ve seen previously I’ve done the main menu with melee and ranged attacks and displayed the inventory with a scrolling system (and a tutorial on how to do it). Today is show how to make such an inventory system work, but on my set of Neuro attacks. The technique is to parse each of the items and pick out the name of the current selection and offer conditions for each name. In code it’s represented like this:

if (Stats.NeuroInv[x].modEff1 == “damage”)
{
Enem.HP -= Stats.NeuroInv[x].mod1;
Stats.MP -= Stats.NeuroInv[x].mpCost;
selectionM = 0;
selection = 0;
scroll = 0;
Anim.CrossFade(“Cast”);
Stats.ATB = 0f;

}

So in this instance of the parser (not posting the entire parser code as it’s too long) . This part of the parser is checking skills of a certain ‘modifier’ type. My system is split between 2 modifiers because an attack might have a dual purpose, say, damage an enemy and lower his VIT. For simplicity, this is just one mod and it’s for attacks that damage an enemy. If the skill you’ve selected does damage, it’ll do that damage (in the code it’s using ‘mod1’ as it damage, just because I’ve not coded the battle maths for it), it’ll take away the MP (or concentration for Abeyance), reset the menus, use the cast animation and reset the ATB meter.

For the individual skill animations, there are separate conditions away from the battle calculations.

In the video, I only gave animations to 2 skills (for demonstration purposes, they’re not the actual particles to be used).

if (Stats.Neuro[x] == “Mindjolt”)
Flare.Play();
if (Stats.Neuro[x] == “Shades of Grey”)
Gunshot.Play();

So this checks the actual name of the current selected skills and assigns a particle animation.

Abeyance to Unity: Day 1 – Inventory

Started with having the inventory system set out and getting all the stats in there. This will be necessary for when Keats gets to pick up items & abilities. Also, it has given me the opportunity to get some of the UI in, I think the UI this time round looks better. The inventory works exactly as it did before in DBP.

Abeyance: Over to Unity3D

I think I’ve got to grips with Unity3D enough and Ronin can go back to working in the background whilst I continue with Abeyance. Ronin was gonna be a joint effort with a couple of friends of mine, but I really shouldn’t leave a project on the sidelines like that. If the friends still want to get involved, I’m sure I can find some way of getting them involved with Abeyance to alleviate some of the work. I quite like what I cooked up in Dark Basic Pro, but Abeyance is being ported over to Unity3D. Unity3D will make life easier in many respects. I’ll try and keep an up-to-date log of the port.