Balls
My attempt at making popular mobile game Ballz. I have got the game to a state that I am happy with. It has a game loop with some cool visuals and audio.
Things that I am proud of in this project are:
- Creating the ‘aiming’ effect, the large red triangular thing, without any outside help. By that I mean I was able to do the math and the effect all by myself!
- Setting up the grid for the boxes and triangles, I went through a lot of iterations for this. It began with a list of all the objects and iterating through them to update their position. Then it moved to a much more intelligent grid system where each object is aware of its own position and where it will be moving in the next round.
- The cool bloom effects and the materials used by all the objects in the game I made. Which you can probably tell by how janky it looks haha. But it was a good first attempt using Gimp as I have never called myself an artist:
I kind of like the effect of the triangle not being perfect. - Used some simple inheritance for the spawnable objects. This made it easy to add the triangle which increased the total amount of balls.
Some things I still want to improve upon:
- How the balls move once the hit the base.
- Displaying the ‘balls to shoot’ and ‘returned balls’. It is very spammy and massively inaccurate.
- Add some background images to give the idea of progressing levels.
- Do more with the audio as the levels get higher.
- There is one issue I need to resolve: Public Reviews #1
You can play the game right now!
Ballz
GitHub Actions
The cool thing that I was able to set up with this project was a GitHub action (following game.ci) to build the Unity project for me, then using another action to upload the build to to my Itch page (following Creating a free build pipeline for Unity games using GitHub Actions)!
The major advantage of this would be the ability to distribute test builds QA, testers or your audience without having to do much yourself. Although there is a lot in the set up. Once everything it done, it should continue to work without much up keep!
Hopefully, I will be able to use this knowledge for a larger scale project in the future.
Commits | Message |
---|---|
1 | Initial commit |
2 | Uploading project and fixing ignore |
3 | Spawning the grid I can spawn a grid with boxes and numbers No other functionality yet |
4 | Might continue to work on this? |
5 | Added ball spawning, input interaction and an indicator for the direction and force of the shot. Things are not colliding which is the next thing to fix |
6 | Implemented a round counter and rounds. Current issue is the boxes are not moving down correctly. |
7 | Something was not being clean up properly. So, I destroy every object in both lists then clean them. For reasons? |
8 | Base game working. Lots of bugs. Could add a lot of polish. Fixed spawning heavily on the left had side. Need to implement: Main menu Pause menu End screen Audio Modifiers More balls Colors |
9 | Included in the last commit just forgot to stage |
10 | Balls are no longer colliding with each other. |
11 | Unity Save |
12 | Massive refactor. Created BaseSpawnable: - This is the base for any object that is spawned at the start of a game round. Currently includes boxes and stars. - This means that I can add more objects to spawn in new rounds which is cool. Box refactor: - Will now change colour depending on value. Currently only green when less then 5 and red when more than. |
13 | The first ball to hit the base will set the ballSpawn position. Adding a new angle when starting the round. |
14 | Cleaning up an error with resetting the ball spawn position. Now working on setting a minimum speed for the balls. |
15 | Added min speed which can be set in the game manager. |
16 | Made good progress. Currently working on scaling the gravity depending on the round duration. |
17 | Closing Unity |
18 | Scaling gravity value with round length. It is currently just a magic number so that could be better implemented at some point. To do: Main menu End screen Sound |
19 | Moving the Unity project to the right place. |
20 | Issues with balls amount display and how it is set |
21 | Unity close |
22 | Checking I haven’t broken the repo |
23 | Create activation.yml |
24 | Testing workflow |
25 | Update TestLicense.yml |
26 | Update TestLicense.yml |
27 | Create main.yml |
28 | Delete .github/workflows/TestLicense.yml |
29 | Update main.yml |
30 | Testing work action |
31 | Removing project path |
32 | Update activation.yml |
33 | Update activation.yml |
34 | Delete .github/workflows/main.yml |
35 | Update and rename activation.yml to main.yml |
36 | Moving into a folder |
37 | Correcting git ignore |
38 | Update main.yml |
39 | Merge branch ‘master’ of https://ConnorY97@github.com/ConnorY97/Ballz.git |
40 | Work .yml |
41 | Adding activate |
42 | Update main.yml |
43 | Update main.yml |
44 | Update main.yml |
45 | Update main.yml |
46 | Update main.yml |
47 | Update main.yml |
48 | Update main.yml |
49 | Update main.yml |
50 | Update main.yml |
51 | Update main.yml |
52 | Update GameManager.cs and UnityConnectSettings.asset |
53 | Update main.yml |
54 | Testing build to Itch |
55 | Changing the channel name |
56 | Following git example rather than blog. Attempt at fixing caching issue as well, now building to both WebGL and Win64 |
57 | Email has been verified and testing new caching values |
58 | I think I still need to upload the project to github cause it currently cant find it. But I think I am getting close |
59 | Captilization? |
60 | Adding download action |
61 | I messed with the upload artifact path which caused it to fail. Which in turn caused the downlaod the fail Fixed that change |
62 | Updating path the artifact |
63 | Didn’t save :( |
64 | Changing build to WebGL |
65 | Updating path and bringing back the download checker to see where the files are exactly |
66 | Fixing a syntax error |
67 | Trying to find the right download path |
68 | Putting the upload runner and download runner in the same job. This would make sense why nothing was being found since the files weren’t there anymore |
69 | Trying to find the right window size |
70 | Close Unity |
71 | Updating action to only build on specific branch: ‘Build |
72 | Update main.yml |
73 | To do: |
74 | Adding FMOD integration and project. |
75 | Closing Unity |
76 | Changing the BGM. Creating the build branch |
77 | Finally got post processing to work. I will work on adding bloom now. |
78 | Managed to make an emission map for the box. Next ball and triangle. |
79 | Created triangle emission map |
80 | Thinking of adding a grid rather than just having a list of current spawnitems. This will allow for nicer movement of the objects at round end. Hopefully. |
81 | Started looking into a new spawning function which will use the grid. |
82 | Implemented the grid with spawnable objects being spawned and using it. Need to implement lerping function and sizing correctly. Going good |
83 | Lots of stuff! |
84 | Closing Unity |
85 | Stopped DoNotDestroy objects doubling up |
86 | Update DoNotDestroy.cs |
87 | Going to move the project over to a mobile 2d project to aid in getting the sizing correct on Itch. |
88 | Closing Unity |
89 | That was a mistake, so I have gotten rid of it |
90 | Figured out the correct resolution but manually building. Now going to pass it to the action to test. |
91 | Re-implementing the scaling gravity |
92 | Finally happy with the sizing on Phone, will have to fix it for pc. But it is a phone game so oh well |
93 | Adding Volume slider Josh made a good observation that there is no way to control the volume, so I added an options screen with a volume slider. Thanks Josh |
94 | Updating actions as suggested |