Games Development :)
This blog is about creating simple games, and has been set up to show progress of my first games.
Wednesday, 30 December 2015
New Blog
Recently I've been interested in Artificial Intelligence and therefore I started a new blog, which can be found here.
Thursday, 23 April 2015
Gameplay! :D
Since all my animations are finished I have done quite a lot of work today on a gameplay. I have implemented basic general logic for the game so now adding more levels won't be a problem.
So what's the gameplay like?
Well, the player is chased by 'little green guys' but only when he turns away from them and don't look at them-be careful if they get too close to you when you don't watch them it may be game over if this is the last level :P There is also a chest somewhere in the room(rotate it around to find it before little guys get you!) :D
For now that's it. Since I still have some time before submission I will now finish main menu screen, instructions screen, game over screen, win screen and credits screen, after that I will make sure all documentations is done and will do a gameplay video and then if there's still some time I will build some more levels.. ^.^
In this iteration I have also added a treasure chest I have made myself along with animations in Blender during one of the workshops for Game Development Society.
So what's the gameplay like?
Well, the player is chased by 'little green guys' but only when he turns away from them and don't look at them-be careful if they get too close to you when you don't watch them it may be game over if this is the last level :P There is also a chest somewhere in the room(rotate it around to find it before little guys get you!) :D
For now that's it. Since I still have some time before submission I will now finish main menu screen, instructions screen, game over screen, win screen and credits screen, after that I will make sure all documentations is done and will do a gameplay video and then if there's still some time I will build some more levels.. ^.^
In this iteration I have also added a treasure chest I have made myself along with animations in Blender during one of the workshops for Game Development Society.
Enemies-starting on gameplay.. :)
So I have started working on enemies for my game so that I could have at least some basic gameplay done. I wanted to reuse the script from last year I used for weeping angels but having more experience now I ended up completely rewriting it and getting rid of stuff I didn't need as well as adding other things and some changes. The script seems to work at the moment so now it will just be the case of creating animations for enemies. This way I will have to biped characters with humanoid animations. I have also changed enemies material colour to red to make them a bit different from the player.
Wednesday, 22 April 2015
Character animations in Unity using Mecanim (continued)
Since last time I have finished creating the transitions between animations, now I moved on to applying movement script to the main character. This appeared to be more tricky than I though it would be. The problem I had because of the object set up I couldn't figure out why even when the position is changed the animation would snap back after looping. Eventually after experimenting with animation's options, blend trees, animations states and sub-states and after trying to ask around if anyone encountered similar problem, I have managed to get it working by enabling looping the pose instead of the whole animation. I may have to do the same thing for other animations such as crouch walking, running(if I will decide to have it in my game). Now i will work on the rest of movement mechanics and then adding more elements to the game.
Working with new UI System in Unity to create a main menu
If it comes to creating buttons and functionality with the new Unity 4.6 UI System it is not as complicated as one can think it is. The only tricky thing at the beginning may be linking everything together as well as playing around with layout to get it exactly as you want it. I have downloaded sci-fi interface textures so to be able to start working on main menu screen. So far there is only one button-Play, which I will be working on later to simply make it look better. But most important thing is that I got it exactly where I wanted it to be and it is working, when the button is clicked it launches intro animation scene. Later I will add more buttons such as Instructions and Credits and maybe some more if needed. I have created simple UI Manager object that will handle all scene changes which means I'm always going to be using the same code- nothing here is hard coded. This is thanks to how new UI system works in Unity each button can have the same functionality attached but it will still link to different scenes.
Main menu also contains simple glow animations made within Unity by using Mecanim.
Below you can see the current state of my main menu-it will be updated soon- the black area will probably be used to display some images from gameplay/animation scenes.
Main menu also contains simple glow animations made within Unity by using Mecanim.
Below you can see the current state of my main menu-it will be updated soon- the black area will probably be used to display some images from gameplay/animation scenes.
Fade Out and Intro Animations- Done!
As the last element for my cinematographic animation I have been working on scene fade out effect and then switching to the main game scene. According to the Unity tutorial for Fade Scene Out/In is seemed very easy to do, but unfortunately this method is outdated in Unity 4.6, which meant I had to figure this out with the new GUI system. Although there are now two methods that enable alpha and/or color fade function, none of those seemed to work.. I ended up using the solution where I created a new color and then just assigned the alpha of it and then assign it back to the canvas image component. I have also disabled some objects to prevent them from being rendered after the scene was fade out.
Now I will move on to working on basic game mechanics so that I can have some gameplay in place for tomorrow's demo session. That will include working on movement script first and then maybe adding some objects player can interact with and/or enemies.
Now I will move on to working on basic game mechanics so that I can have some gameplay in place for tomorrow's demo session. That will include working on movement script first and then maybe adding some objects player can interact with and/or enemies.
Tuesday, 21 April 2015
Level design and animations: Part 4..
I have fixed camera movement for the cinematographic animation by deleting some key frames and therefore having more smooth camera movement. I have also corrected shake animation so now it should look much more natural.
Then I have moved on to playing around with particles and particle animations. I found those quite tricky to get the effects I wanted through animations, but I have managed to create a smoke that builds up as the city 'will be' collapsing.
More cars and trees has also been added to the level design. Now moving on to more work on animations-this time collapsing city. Let the fun of 48 hours of work for this project begin! :)
Sunday, 19 April 2015
Environment rotation finally fixed! :D
Going through a lot of websites that were not helpful at all with trying to solve my problem, took me a lot of time. Today after browsing of one questions on StackOverflow I decided to open Unity documentation links that were mentioned there. The same ones I read a lot of times.. What I didn't realise was that a function transform.Rotate() takes x,y,z parameters in order: z,x,y...Noticing that little change I have decided to try this again (even though that was the first function I've tried using but it didn't work). This time I've used the parameters in suggested order...It seems that everything works correctly now and I am really happy finally having this done, as this is one of the most important features I will need in my game.
Level design and animations: Part 3..
Today I have finished level design for cinematic intro animations for my projects. Therefore now I am adding details like cars, trees, banners etc to bring the grey city to life. After that I will move on to creating collapsing animations for the building I may also work a little bit on smoke particle emitter in order to make collapsing animations a bit more 'real'. As well as this I will have to smooth out the shaking camera animations.
Tuesday, 14 April 2015
Level design and initial camera animations: Part 2..
I am slowly progressing on the level design for short introductory animation scene- so far I have created couple building from assets I got and a short camera intro and shake animations. Now I will move on to create "sinking" buildings animation and then the animations for the cube walls as well as turning the light on and off animation. This will be everything I wanted to have for the intro scene. I will also have to disable players movement in this scene as I want it to be a bit cinematographic. Then it will just be the case of adding GUI at the very beginning so that there is a bit of story before the game begins.
Intro animation and a bit of level design-Part 1..
Today I have started creating Intro scene that will consist of a short introduction animation with a bit of GUI to tell the story and show the city is collapsing, locking the player in a small area at the same time. All this in order to create a little background story to my project. After this is finished I will work on game mechanics and after that implementing GUI for menu, instructions and credits screen.
For this purpose I used assets I've been given some time ago :)
For this purpose I used assets I've been given some time ago :)
Thursday, 9 April 2015
Humanoid animations in Unity! :)
So we were given a model with some basic set up for animations. Today I have been working on implementing those into my project. Setting up an animator with all the transitions is quite easy to do in Unity. So setting up the transitions itself didn't take up much time. Figuring out all needed connections between animator and the script that would enable playing those animations on specific button presses was more tricky to set up. I set couple triggers so that button presses will trigger appropriate animations and connected them in hopefully reasonable way.
I have also set random number generation(using .NET library instead of Unity random number generation as I found it not accurate enough) so that whenever player stops walking stand animation or stand idle animation is chosen randomly. I did that in order to use as many provided animations for the character as possible and also because I wanted to make it a bit more various.
Here is the screenshot of my animator window in Unity:
I have also set random number generation(using .NET library instead of Unity random number generation as I found it not accurate enough) so that whenever player stops walking stand animation or stand idle animation is chosen randomly. I did that in order to use as many provided animations for the character as possible and also because I wanted to make it a bit more various.
Here is the screenshot of my animator window in Unity:
Sunday, 5 April 2015
Environment rotation issues...
Before the first demo session I have started working on environment rotation mechanics. I started with easiest solution which would be to rotate the parent of all child wall objects with transform.Rotate() function. Unfortunately it didn't seem to work properly. Then I tried couple other solutions including changing object rotation through transform.rotation by creating a quaternion to change it to. This included using Euler angles to set the values of the quaternion. I have also tried out RotateAround() method and it also didn't seem to be accurate enough.. I am yet to find a working solution to that problem and since animations are most important in this project I will focus on those for now and get back to this problem later.
Saturday, 21 March 2015
Animations in Unity and new project idea..
Recently we have learned about creating animations in Unity. Next project will have to include animations, so far I have only just started thinking about an idea for that project, as we got only one week for that and for creating something in Unity to show off our base idea at the demo session.
My idea is inspired by Inception. To make use of animations I wanted to have a short cut scene at the beginning that would show collapsing city and would trap the player in the sci-fi styled box/cube. The main idea is to give player the ability to control the environment on his advantage, therefore I will first focus on enabling environment rotation by pressing specific keys (after I implement character movement animations).
Current scene set up:
My idea is inspired by Inception. To make use of animations I wanted to have a short cut scene at the beginning that would show collapsing city and would trap the player in the sci-fi styled box/cube. The main idea is to give player the ability to control the environment on his advantage, therefore I will first focus on enabling environment rotation by pressing specific keys (after I implement character movement animations).
Current scene set up:
Friday, 13 March 2015
An introduction to animations in Unity
So far we looked at different animation techniques in Unity that included generic and legacy animation systems. As well as this Unity has its own built-in system for creating animations, unfortunately it is very limited to simple transformations like rotation or position change.
Monday, 16 February 2015
Main character
I have finally changed the main character model in my game and to do that I have used a bit of a trick so that I won't have to worry about game mechanics changing a lot and adding all the same components to the next object. So now main character is a butterfly as this was the best 3d model I could find for free with all animations.
Coroutines experiments
I have tried to find the idea for what I could use a coroutine in my game. I have decided to use it in a simple script that rotates collectable items. So at first when I have written a coroutine it didn't work. I added yield wait for fixed update method as it is a rigidbody and I have read it may need to be used in coroutines for rigidbodies. It still didn't work properly, but I have added FixedUpdate method to be called after start method and inside it starting the coroutine as well. Now the script finally works and rotates the rigidbody after waiting for 13 seconds.
Sunday, 15 February 2015
Editor Scripts or Context Menu?
I have tried the second way to implement resetting variables for the script. Using property drawers it is definitely easier and faster way of implementing this particular functionality but the only drawback is that it is using context menu so you have to click on a specific value to reset the appropriate values. having a button that is enabled through writing an Editor script is much easier to find to know that this script actually has default values assigned for the developer to use. This way, though is faster and therefore may be efficient when working in small teams or individually when time is crucial.
Character and script edition
I have added a test model of a butterfly to the test scene and I may use it as a main character as I haven't found anything better in asset store that would be free. I have also cleaned up my code a little and changed the names of all private variables to contain m_ before private variable name so that it would be very easy to distinguish public variables from private ones.
Unity Editor Scripts
Based on the one of the recent lectures I have decided to implement a Unity Editor Script to reset the variables for the scripts in the Inspector. I wanted to start with making all my variables private and using Serialized Fields to make them show up in Inspector but at the first try I have noticed there was a major problem with it.. Whenever those were changed it reset the variables to its initial state. So before I changed all of the fields I decided to write an Editor Script to enable resetting values to the defaults I want. When doing that I also used finding object in hierarchy function that I think was mention in one of the very first lectures. I had problems with setting variables to privates again as it needed getters and setters that would not be static(otherwise serialization doesn't work in Unity-issue which I have encountered). I resolved all these problems and now I have reset button for main character movement script that rests all values to what I want to be default. Then I moved on to making those fields finally Serialized Fields so that they can be displayed in Inspector despite being private.
Before I attempted creating Editor Script for this functionality I have done some research and I have discovered there is an easier way of resetting values in Unity 4.5 or higher by using property drawers, which I will try to do for another script.
At this point I have also use GameObjec.Find() method and therefore implemented some of the material covered in the second lecture in this series.
At this point I have also use GameObjec.Find() method and therefore implemented some of the material covered in the second lecture in this series.
Saturday, 14 February 2015
Unity Engine
The last lecture in this series was about Unity engine and other game engines in general. Because there are many changes coming up in next Unity versions it would be very useful to start adapting those changes to current projects before the Unity will change diametrically. UI system is already different in Unity 4.6, even though it still supports older UI versions. It may worth starting to think about using the new UI system and learning it as soon as possible as in Unity 5 there will be no way of using the old system. There are more changes coming up such as Scene layers which may be very useful for managing all scenes in the project.
Thursday, 12 February 2015
More on Shaders
After attending couple workshops on creating shaders at university I have decided to implement one in my current project. I decided to build on the last shader from the workshop we were given and then trying to experiment a little with it as well. I have also use the material created during one of the other Game Development Society workshops with ISS artist and combining it with a shader has given really nice effect to update the visual feels of the collectable ufo's as now they look more like an actual UFO! :)
In order to achieve the effect I wanted I played around with mathematical expressions to get the appropriate level of emission in a shader.
In order to achieve the effect I wanted I played around with mathematical expressions to get the appropriate level of emission in a shader.
Saturday, 7 February 2015
Pooling Lists
Object Pooling is a very useful feature to implement in games. It enables reusing objects instead of throwing them away. I did start writing a simple pooling script some time ago when it was first mentioned during one of the lectures, but I can't see where I could actually use it in my current project as i'm not creating objects during runtime yet. As well as this I have a specific amount of objects player can interact with and therefore those do not need to be thrown away during the game, this way collectable ufo's create the effect of flying away and since they are kept in the scene they become a part of scenery.
Saturday, 31 January 2015
Unity Custom Editor lecture
Custom Unity Editor Scripts look very useful to learn. And therefore are a very powerful tool for developers who want to adjust the default Inspector. Those help in various situations depending on what is needed, I have decided to implement SerializeField attribute so that I can keep most of my variables private but in order to do that I may need Unity Editor script that will allow resetting variables to make it easy afterwards to recover default values I want for specific variables.
Friday, 30 January 2015
Project feedback and implementation
Generally I got really good feedback for this project, and over the next couple weeks I will hopefully find the time to implement it. I still have no idea how to balance my game properly but I may just play around with values and see what is working best. I already had a bit of search through Unity asset store to replace the cube as a main character for my game- the problem with that is I haven't found anything particularly good that would fir my game theme and therefore I may just use some kind of animal model etc. I will also make sure to change variable names so that private and public variables will be easily recognizable.
Friday, 23 January 2015
Rendering and Shaders
Writing shaders is very broad and interesting topic. At this point I start to understand how shaders actually work and hopefully in short future I will be able to write one on my own without looking at others work or experimenting with already made shaders. There are a lot of different types of shaders each of which is unique for the purpose they are used for. I will definitely at least try to implement a shader into my current project.
Friday, 16 January 2015
First lecture second term
First lecture in the second term was about Structs and Classes. Nowadays structs are used for block of data that hold only public variables. It may be useful for creating items that have to be accessible through the whole program. As well as this we learned more about the differences between lists and arrays.
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.
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.
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.
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.
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.
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.
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.
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.
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 |
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! :)
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.
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 :)
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:
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 |
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..:)
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).
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.
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.
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.
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... :)
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:
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..
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)\
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...
{
}
}
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)
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).
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):
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:
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...
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...
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...
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
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:
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 :)
Here are some screenshots of the final version:
Start! :) |
Project view-map |
Volcano |
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...
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 |
Subscribe to:
Posts (Atom)