Sunday, 24 November 2013

Week 4: The Level

It's been weeks since my last update but there isn't much of an update on my project. I can't seem to picture out an environment for a level but I finally settled on one. There was a lot of level hull I tried and scratched everything but then I started to think that I should start on a gameplay list of the level first before I start something. So I started list a flow of the level that I want.

Gameplay flow. Aplogies for a not so clear pic.
The level I had in mind is a simple tutorial level that would introduce the player to the game mechanics and the prototype battle system I developed. The picture is not too clear but the list goes like this:

- Movement Controls [WASD]
- Action Button [E] open chest with weapon
- Equip weapon [Shift]
- Attack Buttons [JKL]
- Introduce Enemy
- Introduce Skill Points
- Skill Shop - Skill Menu
- Enemy Mob
- Health Fountain / Crystal
- Enemy Mob
- Boss

After I have settled on a flow I then designed a level following the flow chart of gameplay on paper by using the list as connections and rooms. Now that I know how the player will be guided through the level, I designed a level geometry on paper as well.

Level list as rooms and connections

Level hull or level geometry
I've decided to split the level into three parts where the first part will include the introductions to movements, actions, attacking and skill points. The second part will be the inside of the skill shop and the third part will be the mobs and the boss which will have its separate room too. Here's some images for this weeks update on the first part of the level.

Thursday, 7 November 2013

Week 2 & 3: Skill Activation

It's been two weeks since I updated and I can't say that I'm a busy person since I have weekend off and I work only on weekdays. I was coding in Java last week and the change in language helped me relaxed a bit on coding in C# and when I came back it really felt easier to see the small things. A change in perspective is always good.

Enough ranting though, I try to update the work every night but I end up sleeping. Here's some updates on my Combat [Battle System] I've been working. First some images.

I've added some GUI elements to show to the player what's happening. Every time an attack is done a timer activates that signifies the amount of time that the player is allowed to be able to chain another attack thus getting it recorded into a list of attacks performed. 

The idea of the mechanic is to chain a number of attacks and press an activation button that will activate a skill as the image shows. On the update, the player is now able to activate skills by chaining attacks. The images show buttons for XBOX 360 controller because I'm using an XBOX joystick controller but the button presses are applicable on any joystick controller.

How It Works
How the mechanic works is that every time the player presses a button to perform an attack, this button is added to a list. The list is cleared when - 1. The player did not chain an attack when the timer runs out or 2. When the player presses the skill activation button.

If the player presses the skill activation button, the buttons stored in the list is compared to a button list needed by a skill. A player skill handler script contains a list of skills and each of these skills has a list of buttons that works as an ID for when it is compared to the stored list of buttons pressed.

Every skill in the game inherits from a base class called "Skill" which has an activate skill function that is overridden by the skills that inherits from it. The class diagram shows the inheritance. Since the skills inherits from a base class they also have the member variables of the base class such as the button list needed to activate each skill.

To add the skills into the list of handled skills, I first need to add it as a component to the player and then add the skill onto the list in the player skill handler script. I apologize to the one reading this if the explanations are not so clear but if you want to see a much more clearer view then I have a repository for this project found here:

The scripts are under Assets/Scripts. Some more updates that I had is the addition of a few animations for Mini. On the next update, I'm aiming to have a playable level where the player can walk around, gather some skill points and learn some skills by defeating enemies. Here's a video of the current update.

Wednesday, 23 October 2013

Week 1: Workflow and the Player

Whenever I start a project, I don’t just jump in randomly and do random stuff. I follow a certain workflow that just works right for me. Establishing a certain flow on how you work is mostly different on each individual but for me I follow three steps whenever I work on something:

Make it work
First thing I do is to make sure that the code I’m working on is working properly the way I want it too. Whatever I have to do, whether it is hard coded or not as long as it works the way I want too then I’m all good to go. It may appear messy at first but I fear not as long as I understand what’s going on.

Improvements and optimizations
Now that I know my code works the next thing I do is make improvements and optimizations. Make it human readable, keep it clean, comment out codes, use design patterns and make it as reusable as possible. I need to always keep the reusability of my codes in mind so that I will have a code base I could refer into for future works.

Constant testing and tweaking
Testing tweaking constantly will always be a part of my workflow. Trial and error is always present when I work on a project. Trying things out to see different results and learning from it is what I do and constant testing makes me feel at ease that everything is working properly.

These three steps is what I follow whenever I work on something but anyways enough with my ranting and let’s get on with the development updates. This is what I have at the moment:

It shows a character placeholder that I modelled and animated myself in Maya. It’s not that great yet and I’m on the process of learning more of Autodesk Maya but it’s a great placeholder. I named the character “Mini”. At the moment the player can control his movements and actions, he can move 8 ways and has two animations for idle and 1 animation for running and 1 for attacking.

Player movement
I’m a simple guy and I like to keep things simple and Unity is simply amazing. For my player movement I used a character controller to move the character around. A PlayerMovementHandler script handles all the movements of the player which moves the player on the Horizontal and Vertical input axis and faces forward on that movement. The player in itself only has the player scripts and the character controller as its component and I made the model which handles the animations and the camera as a child of the player.

The implemented camera at the moment is a simple one. It is locked in its position and it looks at the player when at runtime and follows its every movement. For now a LookAt camera fits my needs and I will of course update it on the coming days to give it more interactivity as a third person camera and any suggestions on how to implement a great third person camera is welcome.

Say Hello to Mini
I am a beginner when it comes to Modelling and Animating a character and not that confident yet on my skills on this side of things as my main focus is as a programmer but here’s Mini, a placeholder character I created for the purposes of my gameplay demo.

You really got to be amazed by how Unity3D made it easy for your animated models to be used directly from Maya. It needs to be noted that I am not using a .fbx model here, I’m directly using the .ma from Maya. It makes it easier for me if there are any changes to the character in Maya because by just saving any changes in Maya it is directly changed as well in Unity especially on the animation side of things.

That’s about it for now; I’m proceeding on the next phase of my development which is the weapons and the combo mechanic.

Who I am and What I intend to do . . .

Hello I’m Necther Louie Souribio, a game programmer and this year I successfully finished my studies. I have a few months before I can get my results so I decided to use my time wisely and boost up my portfolio. My goal is to be a gameplay programmer and in order to achieve that I will challenge myself and develop a number of gameplay mechanics in a short time frame. I want to have at least 2 demos of a game that will showcase my technical and creative ability as a game developer and without further ado I’ll start it off by introducing the first game idea that I will develop.

The idea is to develop a hack n slash style action adventure game that only has swords as weapons. The idea is for the character to trigger their skills by chaining combos. This will be a combination of the combo mechanic found in fighting games and skills found on action RPG games.

The combat will be a real time hack n slash. The player character will be tied down to the ground which means that there will be no jumping required. The attacks will all be melee with the usage of swords and each type of sword will have a different set of skills. A number of slots will be provided for a choice of swords for the player and switching between them can be done manually by the player. A stamina value will be used and will be depleted for every attack action the player does.

A gamepad controller will be used as an input because it will be much easier to create the combo mechanic with a controller rather than a keyboard. Keyboard controls will be present but a gamepad controller will be the main input.

Game Engine

I will use Unity3D free version to develop the game demo which means quality will be low but to showcase my ability as a programmer, quality of the graphics really isn’t a big problem. Unity3D offers rapid prototyping of a game which is why I chose this engine.

The Objective
I’m aiming to have a working demo of a level that will present the combat gameplay that I have in mind. My main focus here is to develop the combat gameplay and the others will follow second. I will be updating here as much as I could and I will give myself a rule to update every week of the progress that I’ve made on the game.