Rollcore was one of my very first games that I have made and was created as part of one of my assignmrnts during my studies on creative media and production (Games Development). This game consists of a singular ball that the player controls and explores a vast world filled with landmarks, enemies, healthpacks and more!
During the development of this game, I didnt think nor know too much about how "good" the game works nor looks, I just wanted to practise and create however the outcome was more satisfying and celebratory that I have anticipated, making me proud of my first game I created and motivating more to explore this career and what kind of amazing new ideas and titles I could either make myself or help make within a team.
I do eventually intend to "remaster" and recreate this game in a more appealing and optimised fashion with a debut to more abilities and possible areas/landmarks. (Keep your eye out for that!)
Gravikinesis was created as part of one of my assignments to create an ideas generation for a portfolio (which is this website!), its a basic platformer with a twist where the character can be able to manipulate gravity to help traverse levels set in a sci-fi context. However there are some areas that can hault the freedom of control such as areas that can force a gravity switch, spikes can also be an obstacle to player, restting their progress in a level if the player touches it, painful I know!
The main objective of any level is really simple, reach the end which is marked by a yellow hexagonal sprite (which is bound to change once i have time to improve these projects and develop them into a more professional state). Reaching the end point of the level will allow the player to proceed to the next level until there are no levels left in the game and complete the game!
Gravity Switching- The player will be bale to switch how the gravity effects either them or other objects (an idea for future development), I felt that this mechanic was an intresting mechanic to persue and was more simple than i thought, it was really intresting for me to delve into the physics modules and engine that unity provides and really gives me various more ideas that I could either increase the content and mechanical implementation for this game as well as others!
Force areas of Gravity (FGA) - I thought that the more I am able to restrict the freedom of gravity control, the more thinking and brain muscle one would have to use, this made me think of ways that I could add to this mini protype to make it more challenging and fun, my idea was to introduce certain areas within levels that block the freedom of control of the gravity.
Spikes - Spikes are a common obstacle and hazard found in various platformers so I thought, why not add these, it increases the challenging aspect of the game and could be used in more ways, for example in the second section of the levels, the floor and ceiling and some sides of the platforms are covered by spikes, making the player has to rely on accurate precision while also utilising the main mechanic for this game.
I didnt have much time to think about the actual "setting" I was more focused on creating the prototype and making it work however I did think about setting the levels in some type of sci-fi setting that can be suggested by the background of the levels, I guess that gravity, space and science have a close connection which could be where my idea stemmed from however more content on setting and possible "story" could be introduced in later updates during future development
MAIN MECHANIC
The flow chart above shows my rough plan on how I would plan out the implemntation of the main mechanic for Gravikinesis, that being the alteration of gravity that the player will be able to control. First of all I needed to make sure that I could identify when the player is currently within an area that forces the gravity, I thought of using the 2D OnTrigger methods that Unity includes and changing a boolean whenever the player enters and leave that certain areas. If that boolean was to be false, it would mean that the player is not in a forced area of gravity and therefore allows the player to use the mechanic where they can manually control the gravity with no restrictions. I had the idea to be able to make the gravity pull objects in a certain ways (up, down left and right) with the use of the 2DPhysics.Physics = new Vector2(x,y).
public class GravitySwitch : MonoBehaviour
{
private Vector3 _gravityChange;
private bool _inForceArea;
private bool _rotating;
private Vector3 current;
private Vector3 target;
private float Step;
private float MaxRadiain;
void Start()
{
_gravityChange = new Vector3(0f, -9.81f, 0f);
Physics2D.gravity = _gravityChange;
}
void Update()
{
if(_inForceArea)
{
return;
}
if (Input.GetKeyDown(KeyCode.UpArrow))
{
_gravityChange = new Vector3(0, 9.81f, 0);
Physics2D.gravity = _gravityChange;
}
if (Input.GetKeyDown(KeyCode.DownArrow))
{
_gravityChange = new Vector3(0, -9.81f, 0);
Physics2D.gravity = _gravityChange;
}
Debug.Log(_gravityChange);
}
private void OnTriggerStay2D(Collider2D other)
{
if (other.CompareTag("GravSwitchUp"))
{
Physics2D.gravity = new Vector3(0f, 9.81f, 0f);
_inForceArea = true;
return;
}
if (other.CompareTag("GravSwitchDown"))
{
Physics2D.gravity = new Vector3(0f, -9.81f, 0f);
_inForceArea = true;
return;
}
}
private void OnTriggerExit2D(Collider2D collision)
{
_inForceArea = false;
Physics2D.gravity = _gravityChange;
}
public void ResetGravity()
{
_gravityChange = new Vector3(0,-9.81f,0);
}
}
public class Spikes : MonoBehaviour
{
private Vector2 _startPos;
private GravitySwitch _gravitySwitch;
[SerializeField] CinemachineCamera _startCamera;
void Start()
{
_startPos = transform.position;
_gravitySwitch = GetComponent();
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (!collision.gameObject.CompareTag("Spike"))
{
return;
}
transform.position = _startPos;
Physics2D.gravity = new Vector3(0, -9.81f, 0);
_gravitySwitch.ResetGravity();
_startCamera.Priority = 2;
}
}
public class Goal : MonoBehaviour
{
[SerializeField] GameObject _levelComplete;
private CharacterController2D _characterController;
void Start()
{
_characterController = GetComponent();
}
// Update is called once per frame
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Goal"))
{
_levelComplete.SetActive(true);
_characterController.enabled = false;
}
}
}
This is a simple sci-fi texture that I have found on Adobe Stocks, from Hybrid graphics. I feel its a good inspiration of what kind of texture and context I want Gravikinesis to be set in when I continue to develop this title further with adding more context to the game and the levels.
This is a standard 2D character controller that I have used help with my movement capabilities with this game, although I did want to remove some of the features the asset includes such as wall jumping and sliding as I wanted the movements to be simple. This controller was created and found on the unity asset store made by AisuKaze Studios