Thursday, 25 December 2014

Shaders

     At the end of the term there was a very short introduction to writing shaders. Since Christmas break started I have decided to start following couple shader tutorials so that I can understand how these work and hopefully be able to implement at least one shader into my current project.

I used the tutorial from here. When the next term starts there will be more shader workshops at university and I hope to attend all of them so that hopefully I will soon be able to write a shader of my own.

   I have also started writing a simple pooling system, but because I do not need to use it for anything in my current project I may not finish it at this point yet.

Tuesday, 23 December 2014

Static classes and XML

     During the last lecture of the second term we learned about static classes and XML. Static classes seem to be useful for storing all global data used in one place. Those can also be used as Singletons as there is only one instance of them created. I may think if I need to use those in my current project to wrap up some repeating functionality if I will be able to find some. I may also use XML files to reduce the loading time of the level.

Monday, 22 December 2014

Delegates and Coroutines

     The next lecture was about delegates and coroutines. In C# delegates are used in the same way function pointers are used in C++. Having used pointers itself in C++ a little beforehand should make it easier for me to get the same concept in C#. The only thing I need to figure out now is how to use those in my current project.
     On the other hand I haven't used coroutines at all yet. Therefore I will look into how I could try them out and use those in my current game. They seem to be useful and even if I won't manage to incorporate them in this project i will definitely look into this topic further afterwards.

Game Entities and Singleton Pattern..

     Singleton pattern is not commonly used when utilizing OOP principles in  regular applications, as its not thread safe. Making something work is more important than good design principles sometimes and then Singletons are used. Those are used to make sure only one instance of the class is created. After the lecture I am not sure where I could implement this in my current project, and therefore i will research more on this subject.

C# and other programming languages..

     Second lecture we had was an introduction to C# programming but not only. We have learnt the theory behind how programming languages are working behind the scenes including how it works with the compiler and CPU itself.

     Main differences between C# and C++ were also highlighted, and therefore I have expanded my understanding of memory management and basic ideas behind it. It was also about memory allocations and how both C# and C++ handles it. This lecture included the introduction to object pooling lists, which I have started writing in separate project, as I can't see any way I could use it for my existing project(I am not using any spawning scripts and everything have a fixed size), I may try to implement it later. This was also the first time I saw XML code, which is not difficult to understand but may be very useful for fast loading big levels in a game.

Sunday, 21 December 2014

Leap Motion lecture

     During the second part of the first term we have  started a series of lectures and workshops led by Richard Weeks.
     First lecture was about Leap Motion technology. We were told what it is and how it works. We were also given a sample project to experiment with and see how it works in general. This was a major opportunity to find out more information about this type of software. I may think of implementing Leap Motion into my current project for this module but this would depend whether I will have a good idea what I could use it for.

Thursday, 6 November 2014

Playtest demo and final project submission..

 Recently I have added Main Menu, Instructions, Credits, Story scenes to the project so now my game has fully functional interface.

I have also done quite a lot of level design and putting everything together.

There are still some features I want to add soon as well as feedback from demo session I need to implement.

Here are some screenshots of the interfaces and the level design of the game itself.








Sunday, 2 November 2014

Mini map border, bug fixes, collectable items, GUI Text

 In this iteration I played around with colours in my game trying to make contrast better, as well as this I added new skybox I found on Unity Asset Store.



 Then I started working on a border for a mini map. I ended up creating a new camera that shows only white background and displaying it right behind the mini map, making the camera little bit wider than the mini map.

 I have also fixed base mechanics so that main character’s velocity and angular velocity is set to 0 on collision with shadow so that main character can’t slide through the shadow. This corrected the bug I had earlier, as when a player had a lot of speed he could basically go through a shadow without being caught.

 I also got round creating collectable items that will increase main character’s score when picked up. Next things I want to implement are traps that will stop players from moving when entered by each player. Some traps will be only accessible by a shadow other only by main character.

 To make my game design look better I added fog as well as changed render settings to make mountains in the background visible from any point on the map.

 As well as this I added some GUIText when shadow catches a player with some comic fonts found here

.

Some screenshots of the current progress of my game:



Soon I will implement level design which will include appropriate assets found.

Tuesday, 28 October 2014

Teleport and other updates

 Over last week I have implemented a number of different features such as teleports, scores, fixing movement and collisions for players, mini-maps.

 First of all I added particle effects to make teleports look as a magical portal and I have also made a teleport prefab that can be easily dragged into the scene and adjusted in lots of ways keeping all teleport mechanics as it should be.

 I have encountered one major problem with implementing teleport script to change player location when he enters teleport trigger area. As the player has Rigidbody attached it made the main character rotate as crazy after just basic position change. I manage to find an algorithm for this online here. Applying the second algorithm solved the problem and even though I used ready algorithm I wrote the rest of the code myself. This improved my knowledge about Rigidbody component as I have never used them before in my last game (at least not for player character).


 Basically this time I ended up writing simple 3rd person character controller without realising it! I had some other problems with main character movements and collision detection which I solved by using Rigidbody friendly script methods and variables.


 I also added basic score counter for both the shadow and the main character so now it displays both on the screen and I made sure it counts it correctly. Score system uses private variables and get and set methods to access it from different scripts. If I have time later on I will try to implement get and set methods for every variable in scripts that will be accessible through the Inspector in Unity.


 I have also added teleport mini-map pointer to teleport prefab so now-main character, shadow and teleports have their pointers on the mini-map. Next thing I will add to mini-map is border to make it easy to recognize which mini-map is which...

 Next things to implement are as follows: collectable items, traps, 3D models that will make scenery look good, mini-map border, sounds and I need to think about the main goal of the game…

Tuesday, 21 October 2014

Minimap Part 1

 I decided to create two minimaps-one for main character and the other for the shadow in order to make my game less confusing.

To achieve that I added 2 more cameras that I put on the front layer of the game screen. As well as this I've added pointer cubes with self-illuminative material on both- main character and a shadow. These are not visible by cameras attached to players and do not affect game world in any way other than showing the position on the minimap.

As for the minimap there is one more feature I want to implement, that is putting a border around it to distinguish two minimaps easily.

Thursday, 16 October 2014

Progress overview..

Implementing core game mechanics led to couple problems, but most of them are solved now.

First issue I encountered was making a shadow a trigger that will rotate a player. First iteration of this script didn't work for couple reasons. Eventually I managed to solve this problem. As I read through Unity Script Reference and there seemed to be couple solutions, there was only one that worked.

Then I had a few problems with detecting if player triggered the shadow so that it rotated him.

Split screen start view
After this I changed the controls and movement script to make it my gameplay easier.

I also changed the way rotation was triggered. The script now counts the distance between players. And if main character is in specific range of the shadow it will start rotating.To stop rotation space need to be pressed by the main character and all other controls are disabled until then.



Next thing I to implement will be Minimap to make it easier to move around the world.

Tuesday, 14 October 2014

Starting on game mechanics

Yesterday I managed to get the core game mechanics work. My first idea on how to implement it worked quite well although I will keep working on this script to improve it in the next couple days.

Having this done I can now move on to adjusting the rotation sensivity and also creating surrounding area.

I am also considering creating some pickable powerups boosts etc. As well as this I have to decide whether to use split screen or not. Using one screen for both players will increase the difficulty of the game although it may get too confusing...

More updates coming soon! :)

Monday, 13 October 2014

Dancing with Shadows-new game project idea

I got this game idea for quite a while now. I came up with it couple months ago. This term we have to make game using two different sets of controls so that two players can play it at the same time.

Therefore I decided to adjust this game idea into that concept. One player will be main character that has to escape from the shadow(the other player whose task is to follow and try to catch main character).

When shadow catches the main character, he confuses him by changing his rotation. The first idea on how to achieve this game mechanics working is to make a shadow a trigger and write appropriate script when main character enters the trigger. Hopefully I can get this done in next couple days.

I already have a movement scripts for both players although it may need changing later on as it is only basic movement script. More updates coming soon.



Tuesday, 24 June 2014

Summer holiday

It's summer holiday already and I am so bored that I've started doing some tutorials for vector graphics and soon I plan to start design my own vector graphics.

Below you can see my first attempts of this kind of graphics, from which some is done with tutorial and some is done only by looking at the final image in the tutorial.

I am also planning to start work on some summer game project soon, and all progress will be posted here or on linked blogs.

As well as this I plan to start building my portfolio over summer :)

I now have a new blog for my graphic designs :)


Thursday, 27 March 2014

Last updates, polishing game before submitting and more updates coming soon.

Due to a lot of coursework deadlines this week I did not have enough time to properly update my game, although I fixed couple things.

Major bug fixes and updates included:

  • fixing sound effects so that when background music plays all the time sound after activating an enemy is still hearable;
  • adding spinning script to the purple ball that still is only a decoration, but now it looks better, I may thing about adding some functionality;
  • adding flames to torches, which were part of the decorations in one part of the maze;
  • trying to make the plane collider in second level to be ignored by player but weeping angels should still collide with it(not fully fixed yet);
Other feedback, especially the one fro the demo session will be implemented in the following weeks and the result of it will be published on Kongregate. (Published Game)

Except for this feedback features I want to implement as well are as follows:
  • falling rocks from ceiling at the end of second level;
  • creating "weeping angels near the teleport after player activates the teleport;
  • adding nav meshes to weeping angels;
  • creating different difficulty levels;
  • finish second level;
And some screenshots, as I haven't posted musch recently...:

Collectibles

Second Level


Start


Win!
Teleport




Spinning Ball :D
Torches
Start Sign

Tuesday, 25 March 2014

Making a maze more recognisable

I was told that clues I had were too obvious(not sure why I didn't notice that...), so following the feedback I got I decided to add 'decorations' to the maze to make most points of the maze memorable, as walls texture is always the same...

Hopefully this will help players...I also added some platforms that player has to jump on to reach roboflies, which hopefully will make my game more fun..:)

Sound effects! :D

That is about time to add sound effects for enemies, as the background music for the main menu and the game itself was working correctly for some time, I needed to add some sound effects that would make player aware when he is followed by enemies.

I spent couple of hours trying to make this work, as when attaching audio to the specific game object is very easy, but playing sound effects using mainly scripts is quite tricky as Unity has two components for that-Audio Source and Audio Clip. At the beginning I encountered problems with using Audio Clip as a variable as it was missing Audio Source component so I added it as a sound to the enemies. Then I was playing around with some audio properties to get the most as I could from making sound effects work after player enters specific area(when enemies start following the player).

Sunday, 23 March 2014

More feedback, and latest updates on my game :)

Last week I asked our lecturer for some feedback on my game, and as a result I got a lot of useful information on what to add/change or fix for my game.

After last practical, thanks to my lecturer I also learnt a lot about UV mapping which was the reason why I couldn't make the textures appear on the cave model I made earlier.

I started with making start point more recognisable and I put a wooden sign(got from a cool website for free 3D models and other assets) near it, it also contains numbers which are main clues for the game-player has to find all roboflies, or at least most of it so i put numbers on a wooden sign as well as the walls. And the main problem appeared to be here...

Firstly I needed to figure out ho to put text on objects which already have textures on it..I eventually decided to use 3D text built in Unity, everything worked fine except that the text was visible through every object that was in a game!...

Finding a solution to this may seem trivial but it is not...after spending hours to find out how exactly make it work I tried following a tutorial found here, but the instructions were not clear enough...Firstly I tried using a new material other than that downloaded with the font and trying to add a GUI shader built in Unity to it...didn't work...after I finally figured out that I need the code that was given on a tutorial I tried to learn creating my own shader and figuring out where to put the code that was in the tutorial...By trying out almost every possible way I finally managed to get this all to work!! :D Now the text is not visible through walls and hopefully it will be enough clues for player :P

View from nearby start point looks like that now:

Wednesday, 12 March 2014

Updates, and bug fixes

Recently I've added some more features to my game prototype. Firstly player has one more objective- to collect "roboflies" that will enable him to use teleport before its activated, it also forces player to search through the maze instead of looking just for exit and omit all the enemies inside the maze.

I decided to add "roboflies" next to enemies, because when I did some testing of my game most people seemed to find the way out of the maze instantly without encountering any enemies... Therefore I needed something to enforce player to go and find enemies :D

I also added Menu screen as well as Game Over screen(which is not fully implemented yet) but the only thing I need to do is to attach it to one of the objects in game.

I  started working on the second level, but before I can fully move to design and implement second part I still need to create script to create "weeping angels" before player enters teleport but after he comes back from the tomb area.




Sunday, 9 March 2014

First part testing demo, testing, feedback and improvements...

  I did not have much time to since last week to write about what I've changed and added to my game yet. But throughout this time I finished first version of a demo for my game! I've added music, my friend recorded for me to, I also put more "weeping angels" inside the maze.

  Then I decided to give it to couple of my friends for testing purposes. although most of them said it works fine and everything is good, others found some minor bugs, but one of my friends tried to break my game in every possible way- and thanks to him I got the most useful feedback! :D

  He discovered that it is possible to go through the teleport while it is not active(even though I put a wall behind it to disable that, so I decided to make a teleport a platform instead of being a part of the wall. Secondly he found that some textures were not placed properly-now it should be fixed, I also got to know that the maze I created for this demo is too easy, therefore I may implement other difficulty levels later on, and the existing one will be easiest mode. As well as this I got to know that enemies might be too slow so I increased their movement speed now. :)

Now I will move on to creating a script that will delete all the enemies from the maze after player gets out of the maze and when a player gets to the tomb enemies are spawned in front of him causing him to go back to teleport and then they will also be spawning at the beginning of the maze.

Then I will be able to start creating the second part where the player will have to place specific lights over enemies to disable it from following the player.

Wednesday, 5 March 2014

Some game updates :D

 So far I finished my first testing demo! For now it only consist of first level and I still need to add a story for it and start working on the next levels but first I need some testers to make sure most of the game mechanics works fine and if there are any bugs/errors discovered fix it before moving on to the next part :D As well as this I need to find appropriate asset for my "weeping angels" as for now cubes are used to be "weeping angels"...

Some screenshots to come soon... :)

Monday, 24 February 2014

Level Design

This week I managed to complete the story for my game, which will be later on displayed on first walls of the maze(I may need to change the texture of maze walls to make the text more visible).

I also started designing parts of my levels, and after completing most of designs drawings I started creating first part in Unity, which is a maze with "weeping angels" hidden inside of it. I also had to check if "weeping angels can't go through walls as when I created new scene they were...I don't really know why...but the problem disappeared itself somehow...

Here are some screenshots of what I have so far:

Maze- top down view

One exit blocked by rocks
View at the maze when I started creating it

Tuesday, 18 February 2014

Teleport Script-done!, moving on to creating a story

I finished writing the teleport script,which appears to be almost same as the script I used for "weeping angel" touch script.

Now I should start putting all these things together to start creating  basic level design and figure out a story for my game.

I almost have some parts of the story in my head already so I just need to put all these parts together.

As well as this downloading assets for enemies and for unreal enemies as well to create appearance of it would be very useful...

I decided to use an ancient Egypt theme to style the cave and everything inside it, although the story will take place in present times. The Cave is unexplored by any any human being, as everybody who tried to explore it went missing after getting there, that's why in close cities there are some legends about it. Even though most people doesn't believe these stories, they are not brave enough to enter the cave....

That's the beginning of the story but I don't want to reveal everything before my game will actually be a playable demo..


Monday, 17 February 2014

Weeping angels script part 2

Rrewriting weeping angels script from Javascript to C# and making it work was a piece of cake.. On the other hand, changing player's position back to the start after the weeping angels touch the player, which seemed easy at the beginning, was much more difficult than I thought... At first it seems all i need to do is check if the cube position is the same as player's position and then "simply" change the position of game object... I couldn't be more wrong..

After two days spent writing this script I finally managed to make it work  almost in the way I want it to work... The solution I found was to make function check for collisions(I found basic script to do that), from that script I only took general functions:

(example taken from  website)
function OnCollisionEnter(theCollision : Collision)\
{
    if(theCollision.gameObject.name == "Floor")
    {
    }
}

Which I still had to convert to C# and then change all variables to what I needed.
But this was the easiest way after couple hours reading through Unity Scripts reference for rayCasting functions(not really helpful) and then through OnCollisionEnter functions: partialy helpful-only thing I did wrong was to call these functions in wrong place...

In the end all I needed to add was about two lines of code... Hopefully next scripts won't take me so much time-it may be a good idea to follow a tutorial for most of it :)





Saturday, 15 February 2014

Game idea and some scripts...

I started improving m game idea and tried to make it more original. Being inspired by my favourite episodes of Doctor Who series, which included weeping angels statues(for future reference I will use statement "weeping angels" to talk about the idea behind it not the statues), I decided to implement something similar in my game. On the Internet I found already made script for "weeping angel", unfortunately it was in Javascript...(reference link to the script I found)
Weeping Angels from Doctor Who

I rather use C# in Unity therefore I rewrote parts that were specifically in Javascript-mainly declaring the variables. For some I had to figure out what type of variable it was myself as Javascript use type var for any variable whereas in C# I had to specify the type myself. It wasn't very difficult but tricky sometimes.

After this when i tried testing this script I got some errors after starting the game, it happened only because I forgot to set the initial position of a "weeping angel" and made the variable private, which was a big mistake.. But after I figured that out the script started working as it should be(I am not going to explain it exactly as hopefully most of people will play the game first and discover this themselves).

Starting final term project..

Even though I am still developing the idea for my game to improve what i already have, I started creating simple cave in Blender, so that i could start working on other stuff like scripts as soon as possible.

Here is a screenshot of what I already have for my cave(I also created another one just to try import it to Unity and it wasn't difficult so I can can keep working on this one again):



Monday, 10 February 2014

Physics project

Next task I got for my module was to create shooting script. Most of it I remembered how to do from the workshop last week but I also used Unity official tutorial to refresh my memory and make sure I am writing script correctly. each brick in the wall as well as the bullet has a rigidbody component to make sure it acts under physics. The final effect is that when you press mouse button bullet is created in front of the player and is then shot at the direction mouse is pointing, and then after 5 seconds object is destroyed in order not to have too many clones of it.

Some screenshots:



Thursday, 6 February 2014

Spotlights following the player-scripts in Unity

Finally managed to make the spotlights follow the player when the specific key is pressed once. Now I will continue updating this script to make the other lights disengage when button is pressed.

Then I will create some random movement for the other spotlights.

Next I will create scripts for shooting bullets into a wall.

After I get all these tasks done I will finally be able to work on my final term project- I have already developed an idea for it, which is quite complexed but fortunately most things are independent in it, therefore if I run out of time I don't have to include everything I wanted and it still will be a playable demo :D The first thing I need to do is to prioritize things I want to implement. The most important for me is probably the cave, which I need to create in Blender and then import into Unity. But more updates on this topic to come soon...

Monday, 3 February 2014

Scripts-first attempt summary..

So I managed to make fully working script that can be assigned to any object and then in Unity there can be keys assigned to move forward, backward, right and left. Unfortunately I didn't fully solved the other problem that would concer spotlights...The farest i got was to create spotlights that can be changed by using assigned keys but to make spotlights follow the player fluently keys needed to be pressed for all the time when moving object...

Spotlights that follow the player...

When creating script I had a problem of how to make if statement for each pressed key work every time Updater is called...I solved it by adding a variable that will store a key to be assign inside Unity itself as a component.

For now I figured out how to write about 4 lines of code that will make the spotlights follow the player..Unfortunately it only follows player as long as the key is pressed down... Therefore I need to figure out how to make it follow the player after single key has been pressed.

Also when I put LookAt() function inside if statement for some reason it is checked only once and then it doesn't update which means player would have to press the key constantly to make the spotlight follow...

Beginning of scripting in Unity

This week I have learned how to write simple scripts for Unity during one of my workshops.

Now I created universal controller that can have different keys assigned by having only one script. I had some problems with syntax when trying to create this, but fortunately I solved it quite easily by creating a variable of type KeyCode and then just putting this variable name in GetKey statement.

Now I also created 3 spotlights each of different colour, and each assigns value true to one of the variables in the script to recognise which colour is the spotlight. now I will create more code to make sure only one spotlight will follow a player at the time, then I will create function that will change spotlights following a player.

In the end if I will have time I will create random movement for unused spotlights...

Saturday, 1 February 2014

Game Jam :D

I am taking part in a 24 hour Game Jam, if you want take a look at my team's blog  :)

Monday, 27 January 2014

Terrain project finished!

My second project in Unity is finished! The aim of the game is to get to the volcano(which can be recognized by smoke), it is not visible at all at the beginnig on purpose. One of the problems I had were to create water in the way it will be perfectly fit into the terrain which I achieved by setting the default value for terrain to be about 20, and then by lowering the terrain in places I wanted to have water, which gave nice lake/river effect sometimes only by using basic water tool.

Here are some screenshots of the final version:

Start! :)
Project view-map









Volcano
I also started creating a cave but I didn't have enough time to finish it...But I will create it next time, I wont give up on it so easily :)

Terrain project

When I started creating this project I didn't have any original idea for it, and I still don't have it...So for the start I got simple waterfall and mountain canyon. Here is first screenshot from the beginning of my work:

Saturday, 25 January 2014

Second project in Unity-attempt to make a cave...

I came up with idea of creating  cave in Unity 3D which may be quite challenging as there is none built in tool that would enable me to create a cave easily, therefore one option is to create it as an external file in 3D modelling programme like 3DS Max or Blender, or to try using two terrains and model them in a way to form a cave.

For now it seems a bit easier to create it as an external file, and I will probably use Blender to do so, as i have used it for quite a while in the past projects in my High School.

I may need this to create a project for final assignment for one of my modules, but it can be a good practice for the work we need to have done this week in Unity, as I have done a bit of terrains last week so I was looking for something more challenging than creating a simple terrain, that anybody can do...

Tuesday, 21 January 2014

Maze game screenshots

Here I will post some screenshots from my maze game to show the general look and feel of the game. Also I forgot to write that the objective of this game is to find fireworks.


Maze view
 Maze view



Maze view from one mountain
Looks like the end, but are you sure?...
Entering mountain maze
Mountain maze



WIN! :D
View to other mountains

Monday, 20 January 2014

Maze game

Today I have finished my maze game for tomorrow. Although there is a lot i could have done more to make it look better I am quite happy with what I achieved for my first Unity project.Creating terrain was quite challenging as I didn't use any tutorials at all just build in assets.

The game may be quite long but it is beacause I wanted to make a maze on different terrains: mountains and plane. It may be quite tricky sometimes but as I checked it should be fully playable.

Start game view

Saturday, 18 January 2014

First project in Unity 3D

As our first project we were asked to create simple maze game in Unity. At the beginning I started playing around with other Unity functions and assets that we were told about during last week workshop. Which led me to creating mountains terrain and adding some textures to it:
Mountain terrain

Then I started creating walls for a maze game which looks as follows:

Project view
Game view











While trying to create mountains terraian I encountered some problems with creating materials for it and in the end I discovered that in order to change the look of my terrain I need to add texture to it in Inspector, therefore I used one of textures provided with Unity assets and the material I created I used for wallls. I had couple other problems with using textures and materials as for some reason it didnt work in any way, but I guess I just put it in the wrong place....Fortunately  it works well now :)

I have just added some trees to the terrain that won't be used for the labirynth to make the game itself look better.



Sunday, 12 January 2014

New Year, New Term, New Project...

This term I have to create a game in Unity 3D for one of my modules.

I have already developed an idea for this project throughout Christmas holidays, but after exploring Unity I am not sure if I will be able to implement it, but it surely will be a great challenge. :)

I have already completed couple basic tutorials in order to learn how to use Unity, although I should probably read litlle more on that topic as soon as possible so that I could start working on graphics and main aims for my game.

Hopefully I will post progress of my work every week, as well as problems I encountered, solutions and screenshots if needed.