Search Unity

  1. We are migrating the Unity Forums to Unity Discussions by the end of July. Read our announcement for more information and let us know if you have any questions.
    Dismiss Notice
  2. Dismiss Notice

Games (Devlog) Clash of the Cubes (2.5D fighting game) (Working title)

Discussion in 'Works In Progress - Archive' started by RavenOfCode, Apr 15, 2017.

  1. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Edit: [
    Skip to the bottom if you want to see the most updated version of the game. Since it's a devlog format the oldest stuff is first and starts with this post.
    ]

    When I first started making games I used a software called Alice (2.2 and 2.4). I spent both my middle school years and part of freshman year using it on and off. I made a whole host of projects in it including my favorite: a 2.5D fighting game called Clash of the Cubes.
    Here is a quick video of the game:

    It really didn't look that good, but I loved that game and spent a load of time playing it and adding to it.

    That's why this week (and some last week) as I will be on easter break I decided to give a remake in Unity a go.

    I will be hoping to update this thread with progress and hopefully release it next Saturday (April 22).

    My goal for the game will be to have 4-8 working characters (much less than the original game's 19) but still a decent amount. I'm also hoping to add 4 player support and a much smoother art style as well.

    I will post the last 2 days bit of work later tonight.
     
    Last edited: Jun 8, 2017
  2. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Days 1 and 2:

    I really want to make a game that plays very similar to the quirky physics of the first. This means I couldn't use many of the standard physics equations built into Unity. I also wanted the game to be able to be code as similar as possible to the original game. So I decided to write my own engine to handle physics in a way that was similar to how Alice did it. The results ended up being quite nice, I simply call:
    Code (CSharp):
    1. public static void Move(GameObject toMove, Vector2 movementVector)
    And it moves the object with physics in the targeted direction.
    With this I also added a function to find the nearest enemy player, as many of the moves are auto targeting. I also added a few functions that return specific collides and collisions with objects of a specific tag.

    Once my physics engine was complete I started work on a PlayerController. This will control damage, movement, and the main player stats. This was relatively simple and the result was pretty close to what the Alice version had:
    ClashOfCubesMovementGif.gif

    With that done I went on and added very customizable Hitbox class that allows for me to simple input a few parameters and I have a working Hitbox:
    ClashOfCubesHitbox.png
    Here is the Hitbox in action:
    ClashOfCubesPlayerHitbox.gif

    This is all for now, I have started work on the moveset controllers and will post about them tomorrow.
     
    00Fant and Master-Frog like this.
  3. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Day 3:

    First off Happy Easter Everyone!! :)

    Between last night and some time this morning I got quite a good amount done. I did some art and got 1 of the characters done. First off I would like to explain how combat works, and how the players attacks are controlled.
    So each player has 5 abilities. The idea here is to keep them simple as I want this game to be accessible to anyone without a huge learning curve. I want to be able to take a 5 yr old and teach them the basics in a few minutes. Here are the basics of them and the controls:

    Move left/right (left/right): moves you left and right
    Jump (up): jumps you up, also does double jump
    Movement Ability (down): this is one of 4 different generic abilities (Quickfall (2x gravity while held), Cling (lets you cling onto walls), Shield (blocks 50% of an incoming attack, you can only use this while grounded), Heal (heal 1 hp per 1.5 seconds)).
    Attack (X): this is you basic attack, different for each character
    Special (A): this is a special attack or other useful move, again different for each character
    Up Smash (up + down): this is generally an attack, again different for each character
    Passive: this is a passive ability that is always active, again different for each character

    Here are also the basics of the player stats:
    Health: generally ranging from 20-40, there is no armor in the game so all attacks will deal the same damage on every character (this helps keep it simple).
    Speed: generally ranging from 3-5, this only controls movement speed
    Jump Height: generally ranging from 3-7, this controls how high the characters jump is
    Size: this controls how much knockback you take, 1 = 100%, 2 = 50%, 0.5 = 200%

    First Character Flame:
    ClashOfCubesFlameCharacter.png
    He is a pretty moderate character, focused on melee attacks, he is also able to take a bit of a beating.
    Stats:
    Health: 30
    Speed: 4
    Jump Height: 6
    Size: 1

    Moveset:
    Attack: Flame Burst, this creates a quick burst of flames around him dealing 3 damage to anyone caught in his path.
    ClashOfCubesFlameAttack.gif
    Special: Ignite, this lights him on fire (which deals any character he touches Fire 1 (more on this in a moment) damage) it also gives him bonus health (equal to nearest enemies health / 4) and 5 seconds of boosted speed as well as 1/2 knockback on Flame Burst and drastically decreased knockback taken. (Edit: the health doesn't update in the gif, I fixed that in the game, so next time it will be easy to see).
    ClashOfCubesFlameSpecial.gif
    Up Smash: Flame Smash, this moves smashes him down in a fury of flames, dealing 1/4 of enemies heal in damage, as well as dealing Fire 3. This move also deals large knockback upwards.
    ClashOfCubesFlameUpSmash.gif
    Passive: Fire Immune, this ability allows flame to not take any Fire damage.

    I also added Debuffs to the game, the first three are Fire, Freeze, and Slow. These can be given by Hitboxes and can be given a specific level. The level accounts for how long the debuff will last, so a level 1 will last for 1 second, a level 2 will last for 2 seconds, ect.

    Fire: deals 1 damage per second and lights the player in a fury of flames.
    Freeze: stops all movement and control of player for specified time.
    Slow: lows the players speed to 1/2 of the normal, lasts for specified time.

    Thats all for now, the next post will be on the newest character (still WIP) called Frost!

    Again, Happy Easter!! :)
     
    00Fant and Master-Frog like this.
  4. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    Looks like a solid start on a fighting game. I don't think I could ever get past different coloured cubes being the characters, myself, but I like expression of motion and color, has a good solid feel to it.
     
    RavenOfCode likes this.
  5. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    I'm going to try and make the characters are interesting as I can, yet I don't really want to have to do any animations for it. I'm thinking of maybe adding armor/hair and stuff as well as more eye variation and maybe a mouth or something. Any ideas?
     
    Last edited: Apr 16, 2017
  6. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    Code (CSharp):
    1. CanOfWorms.Open();
    upload_2017-4-16_14-23-48.png

    Here's one idea.
     
    Last edited: Apr 16, 2017
    alexanderameye and RavenOfCode like this.
  7. hitmanchoi

    hitmanchoi

    Joined:
    Apr 10, 2015
    Posts:
    17
    This is very good work (although i think more should be done before releasing)

    I have a couple of questions. 1 how did you do the flame effects? 2 hows its performance on mobile?
     
  8. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    I will probably continue working on the game after I release it, the main reason I want to do I so soon is I want to get back and finish another project I was previously working on. Also my last month of junior year will start and I really want to keep my grades as high as possible, to keep my college options open, so my time will be heavily limited.

    The flame effects are done using a particles system that renders little triangle meshes. There is some shader tweaking and the particle systems settings are changed for different types of effects. As I will be making a lot of different particle effects I might go ahead and put them on the asset store once I finish.

    As far as mobile performance goes, I'm not too sure, I haven't ported the game over yet but I suspect if I tune the settings it should work fine. Ill see if I can get this done sometime soon.

    The problem here is adding limbs will give me a lot of animation to do. I really want to keep time down and focus on gameplay (hence the simple low poly art style as well). Ill keep thinking on it, as changing it down the road shouldn't be too hard.
     
  9. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Day 4:

    The first thing I did today was add something of a map. Its called "Altar of the Gods." The reason I named it this is because it's basically a giant altar in the sky. The map takes inspiration from the classic map "Final Destination" in Super Smash Bros Brawl. I will be adding a few more maps (hopefully 3 to start), with this one being the most basic of them.
    Here it is:
    ClashOfCubesMapAltarOfTheGods.png
    The next thing I did was add a new input system so switching between 4 controls schemes is very easy.
    ClashOfCubesPlayerController.png
    I also added a new character called Darkwand (I was going to add Frost, but got hung up on what his Up Smash should be, so I will add that tomorrow once I figure it out). He is another melee fighter with some pretty assassin like abilities. He uses Magic to do all his moves.
    Stats:
    Health: 25
    Speed: 5
    Jump Height: 5
    Size: 1

    Abilities:
    Attack: Magic Punch, his basic attack is a simple magic attack that deals 3 damage and auto targets the nearest visible enemy.
    ClashOfCubesDarkwandAttack.gif
    Special: Strengthening Warp, this move warps him to the nearest enemy and gives him Attack +7 damage for 3 seconds. Recharge 15 seconds.
    ClashOfCubesDarkwandSpecial.gif
    Up Smash: Dark Dash, this moves dashes him towards the nearest enemy and deals 3 damage upon collision.
    ClashOfCubesDarkwandUpSmash.gif
    Passive: Fade Out, after 1 second of not moving DarkWand disappears from view.

    Thats all for today, I'll be back tomorrow with another update.
     
    Master-Frog likes this.
  10. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    Give them Goku/Akira style hair and texture faces onto them.
     
    RavenOfCode likes this.
  11. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    I gave the hair a go, it looks pretty good with the eyes.
    ClashOfCubesFlameHair.png
     
    Master-Frog likes this.
  12. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    Clash of the Cubes: Cubes with 'tude

    Now hire epic voice actors.
     
    RavenOfCode likes this.
  13. PhilippG

    PhilippG

    Joined:
    Jan 7, 2014
    Posts:
    257
    I just saw this thread, love it :)
    I like the limbs idea. Maybe you could just let the body/limbs flap/ragdoll around ^_^
     
    RavenOfCode and Master-Frog like this.
  14. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    That would be hilarious, weight the hands and just let the magic happen.

    Give 'em tails and various appendages. Good idea man.
     
    RavenOfCode and PhilippG like this.
  15. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Day 5:

    Today was pretty successful. I got a decent amount of work done. However, I was unable to add any sort of good looking ragdoll movement for the limbs. I will try again tomorrow and see how it turns out.

    I added a new map today, it's called Hall Of The King:
    ClashOfCubesMapHallOfKings.png
    I also added a new character today called Frost:

    The goal here is a character that is relatively easy to play and requires skill to counter. The moveset is designed to make dealing damage pretty easy and to take down melee characters. Frost is all ranged and has sweeping attacks that deal decent amount of damage.

    Stats:
    Health: 25
    Speed: 3
    Jump Height: 7
    Size: 1

    Abilities:
    Attack: Icy Tornado, this is Frost's move iconic move from the original game; Frost shoots a powerful tornado that picks any unlucky enemy up in its grasp and drags it along dealing damage the Freeze.
    ClashOfCubesFrostAttack.gif
    Special: Surround Chill, this move gives Freeze 3 to any enemies in a small radius of Frost, recharge 10 seconds.
    ClashOfCubesFrostSpecial.gif
    Up Smash: Icy Spike Smash, this move fires 5 ice spikes in an array down and to the sides of Frost. Each spike deals 2 damage and Freeze, as well as get's stuck in the terrain and will deal damage for a few seconds from there to any enemy that comes in contact with it.
    ClashOfCubesFrostUpSmash.gif
    Passive: Freeze Immune, Frost is immune to the Freeze effect.

    This is all for today, tomorrow I will try to add Brave (or some other character). I will also be attempting to add the menu for the game, so character selection as well as a game manager to handle respawning and lives. If I have time I will also add the health pickup to the game as well.
     
    alexanderameye and Master-Frog like this.
  16. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    If you build it right, using Unity's built-in networking stuff, a fighting game that can be played over the network is ultra-feasible. It's almost perfect for this type of game.Your environments are oddly good-looking considering how low-poly they are. You're good with the little touches.

    Frost should be able to jump on his ice spikes, then he could even use them to climb up higher places.

    upload_2017-4-18_21-25-11.png

    LIMBS ARE SO MAINSTREAM!!!
     

    Attached Files:

    Last edited: Apr 19, 2017
  17. alexanderameye

    alexanderameye

    Joined:
    Nov 27, 2013
    Posts:
    1,384
    Love the idea of loose limbs. And capes, add capes!
     
    RavenOfCode likes this.
  18. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Lol, that meme is on point! :p And thanks for the compliment! I try my best to make the environments look as good as I can! :)

    Anyways, as far as online play I do have a decent bit of experience with Photon. So I might use that, or go ahead and learn Unet (as I kinda would like to learn it). I definitely want to add an online mode as I feel a lot of local coop games don't do it very well I would want to spend some time getting it right, which means it will be one of the later features I will add.

    Also that idea with Frost: golden! Since the original game didn't have a very interesting map the game wasn't really about climbing things, but with the new map that can definitely be added. I'll be sure to keep that in mind in the future as well.

    Capes is a great idea, I was thinking of having little to no unlocking in the game, but capes/hair/skins could be a great bit of unlockables! I will have to look into seeing how physics enabled cloth works so I will most likely do that after I finish the core of the game, but it definitely will go on the to-do list.
     
    Last edited: Apr 19, 2017
    alexanderameye likes this.
  19. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Day 6:

    Today I was really busy with other things and my time to work on the game was very minimal. Most of what I did was behind the scenes work, adding small things here and there. The big thing I did today was finish the menu:
    ClashOfCubesMenu.png

    There where some other small improvements to many of the systems, as well as optimizations to scenes, and improvements to all of the characters.

    Hopefully tomorrow will be much more productive and I'm hoping to add 2 new characters then and if I have time another map.
     
    alexanderameye and PhilippG like this.
  20. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    Gifs or it didn't happen.
     
    alexanderameye and RavenOfCode like this.
  21. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Day 7:

    It's been 1 week of work on this game and it's really starting to take shape. I did a lot of things today, but I haven't had time to polish them for the initial release tomorrow. So tomorrow will just be a bit of polishing a release and then I will be starting my Ludum Dare 38 game!

    I added a new map, it's not fully finished and I'm not a huge fan of how it turned out, but hopefully with some polish it will look cool.
    Here is the initial version:
    ClashOfCubesMapTreeOfLife.png

    The next thing I added is two new characters: Brave and Ironstrike. Due to lack of time, I wasn't able to finish either of them fully. Once I get the fully completed versions done I will post gifs that show each move individually, but for now a basic idea of how they play has been given.

    Brave: A ranged archer that is pretty slow yet is quite good at healing and keeping enemies away.
    Stats:
    Health: 20
    Speed: 3
    Jump Height: 5
    Size: 1

    Movement ability: Cling

    Attack: Shortbow, this is a charge attack, meaning the more you hold down the more power the attack has. In this case the power increases the speed of the arrow and the knockback the arrow gives. The arrow deals 3 damage regardless.
    Special: Quickknife, this is a very quick attack, about 10 can be used per second (most probably can't spam that fast though), this attack deals very little kb and 2 damage.
    Up Smash: Healing Aura, this ability allows you to regen 1 hp per 2 seconds and stops regening if you take damage.
    Passive: I haven't decided on this ability yet.


    (if the image doesn't load its here on imgur: http://imgur.com/ke5poBn)

    Ironstrike: A slow and high hp character that is good at using a sword. Very good at using a sword.
    (I'm actually planning on changing some of his moves, he feels a bit to repetitive and boring, but I'll see where it goes)
    Stats:
    Health: 40
    Speed: 3.5
    Jump Height: 5
    Size: 1.5

    Movement Ability: Heal

    Attack: Sword Swing, this is a hard to hit attack that is pretty slow, yet deals large kb and 5 damage.
    Special: Sword Throw, this attack throws a sword projectile dealing large kb and 5 damage.
    Up Smash: Sword Smash, this attack smashes you to the ground dealing large kb and 5 damage.
    Passive: Slow Immune.


    (if the image doesn't load its here on imgur: http://imgur.com/EQEMECP)

    That's all for today, it definitely needs a lot of polish, but it's getting closer.
     
    Last edited: Apr 21, 2017
  22. alexanderameye

    alexanderameye

    Joined:
    Nov 27, 2013
    Posts:
    1,384
    Are you going to develop it any further after release?
     
  23. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Yes, just not nearly at the current pace. I will probably post updates on a weekly basis after I release it. Here's a dumbed down version of my to-do list that is going to be completed after the first release:
    -AI
    -Online Multiplayer
    -Pickups
    -More characters
    -More maps
    -Cosmetics (capes, arms, legs, ect.)
    -UI overhaul

    So yeah, a lot of stuff. I'm mainly releasing it so soon as to be able to push myself to have something completed so soon. I really don't want to end up with another unfinished project, so this is my way of forcing myself to complete a project.
     
    alexanderameye and PhilippG like this.
  24. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    I have decided I'm going to wait till next week to release the game. The game in its current state while playable is definitely not as polished as I want it to be. The game also lacks any AI so single player (right now) is not an option, which is something I really would like to have before I release it. The next thing is the characters are not balanced very well at all. The main issue here is just a lack of play testers, so my feedback is limited to myself and my little brother. However, I'm sure I can get a few friends of mine to test it over the weekend or sometime next week (this week everyones schedules are messed up due to either spring break or just finishing spring break). So hopefully the balance issues will be solved then. Also I will have time to fix the current (quite boring) UI as well as provide a proper tutorial.

    If everything goes somewhat according to plan I will be able to release the game next Sunday April 30th. I'll post a few updates on my progress, but as of know I'm going to study for the SAT which I have to take soon and prep (ie. do outsidy stuff) for Ludum Dare that starts tonight.

    Best of luck to anyone doing LD this weekend!

    Also, anyone got any ideas for a better name? My 13-14 year old self came up with the current one and my current self would like something a bit more interesting. :p
     
  25. alexanderameye

    alexanderameye

    Joined:
    Nov 27, 2013
    Posts:
    1,384
    Are you 13/14 now? Postponing the release is a good idea!
     
  26. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    Now I'm 17 lol, I first made the game in Alice like 3/4 years ago thats why I said I dont like the 13/14 yr olds idea of a name.
     
  27. RavenOfCode

    RavenOfCode

    Joined:
    Apr 5, 2015
    Posts:
    869
    It's summer!! For me anyway...
    So the last few weeks have been super hectic, a load of school stuff, college prep stuff, work stuff, and swim stuff all have filled up my schedule to a point where I had pretty much no time to work on this project. However, now that all that has passed and I only have to focus on my easy job as well as a laid back summer swim program I'm a lot more free.

    Life aside I've done a decent amount of stuff in the last couple of days.

    Firstly, I made a list of all the things that still need to be done.
    -Finish UI. -Code Finished-
    -Rework a Brave, way too op.
    -Rework Ironstrike, gameplay is boring.
    -Update my physics engine Alice to allow for sliding.
    -Add Tutorial.
    -Finish third map.
    -Add AI.
    -Add Health Pickups.
    -Polish.

    So the last couple of days I did work on a new UI system that is a lot better, nicer, and easier to control. Basically I use a custom mouse system with a Id system to get button presses working and another class to handle all the input. I've always been curious on the best way to do UI's, so I figured sharing mine might be helpful to someone or get some feedback on how I messed up horribly. ;) So here goes my best explanation:

    Classes:
    -UIManager (takes all input from the mice and does anything needed with that input, also controls when the game ends, loading the UI, and respawning players, it does have a helper PlayerManager class when it deals with the players, but it does connect all the PlayerManagers)
    -UIMouseController (the "mice")
    -UIHitId (stores the data on the button that is going to get pressed..

    Since I want multiple mice on screen at once (think super smash bros) I went with using the UI Images instead of buttons and raycasting from another image (the "cursor") when a player presses the "click" button. I did the mouses fake clicks like this:
    Code (CSharp):
    1.  
    2. private void Click () //simulates a click
    3.     {
    4.         PointerEventData cursor = new PointerEventData(EventSystem.current); //creates a fake cursor
    5.         cursor.position = rectTransform.position; //sets its position to the mouses position
    6.         List<RaycastResult> objectsHit = new List<RaycastResult>(); //creates a list of hit results
    7.         EventSystem.current.RaycastAll(cursor, objectsHit); //raycasts from the cursor and fills [objectsHit] with the hits
    8.         foreach(RaycastResult i in objectsHit) //goes through all the hits
    9.         {
    10.             UIHitID hitID = i.gameObject.GetComponent<UIHitID>(); //gets the hitID
    11.             if (hitID != null) //makes sure there is a hitID
    12.             {
    13.                 if (hitID.classID == "Player") //gets if we want to send control data or not
    14.                 {
    15.                     Alice.uIManager.OnClick(hitID, controls); //sends the hitID and control data
    16.                 } else
    17.                 {
    18.                     Alice.uIManager.OnClick(hitID); //sends the hitID
    19.                 }
    20.             }
    21.         }
    22.         if (gameObject.activeSelf) //checks if the object is active
    23.         {
    24.             StartCoroutine("ClickAnimation"); //does the click animation
    25.         }
    26.     }
    27.  
    From there I simpled hooked that up with the UIManager class, which handles all the UI screen changes and player loadouts. The UIManager does this changing of the player by communicating with the PlayerManager scripts that each player has (this allows spawning a player object, changing the character, removing the player, ect.).

    I hope that sorta made some sense, I still need to work on explaining things. :confused:

    Anyways after I did that I got a functioning menu that only needs the art side to be added. Here are some screenshots of the menu being used (the little red/blue dots are the mice):
    UIMainScreenWIP.png
    UISelectiongScreenWIP.png (The reason only those three characters are available is because the others are still WIP, these 3 only need balance changes).

    Anyways that is all for today, I'll be posting new updates in the future most likely on a weekly basis. :)
     
    alexanderameye likes this.