Arcade-Maniac/Devlog.md

125 lines
13 KiB
Markdown

# Devlogs
## 10/01/2021 (21ga1001.0)
Hey everyone! Welcome to the first devlog of october!
### 0.
I did a lot this week, and I'm pretty happy with myself. I got a little unproductive the past 3 days, but I did a lot while I had the time. I just had a bit too much schoolwork to be able to fully work on this. But, point is, I did a lot this week.
### 1.
I made the player be able to take damage and die this devlog. The health works in percentages, but usually is diminished in either quarters or halves. But, it can really be whatever. I also made a difference between the global stats and the EMD stats, since that was getting confusing. Now the stats will be saved as its own file, though I haven't made that yet (mainly since it will be a bit complicated when merged with the launcher). But you can make the player take damage, and then they will be invulnerable for a bit, and while that happens any attempts to change the player health variable will not do anything. However, you can completely kill the player at any time, invulnerable or not, by executing the `Die()` method in the player. This shouldn't be used much, and is really only supposed to be called when the player falls off the world, but it can be used. The player also can flash either red-tinted or transparently when taking damage. It is currently set to and will probably stay as red. I also made the player fall a little bit faster than they jump. This is a trick used in most platformers that makes it seem more realistic (ex. SMB), despite the fact that it definitely isn't. We just aren't used to seeing a perfectly simulated jump, where the up time is exactly the same as the down time. So the `fallSpeed` variable controls that.
### 2.
I also made spikes. They use a different tilemap than regular ground to make things easier, but that does come with its own downsides, like now the tilemap doesn't check if the block is actually a spike texture, so you can make a wall that the player can walk though, but takes damage when they do, by just putting regular tiles there. That shouldn't be used, though, and when that doesn't happen, it works fine. It has a variable for damage and a variable for extra damage, which is triggered when the player hits the spikes with a high enough velocity (also a spike variable). In vanilla AM, these values will stay as they are currently.
### 3.
I made some semisolid platforms that to be honest, were way weirder to program than I expected. I thought I could just turn the collider on when the player was above it, but that caused the player to glitch out when passing through. I did some thing where it checks above and below, and I don't love it, but it works, so I am sticking with it. The semisolid platform has some variables, but probably don't touch them since they just make it stop working and it doesn't really make sense.
### 4.
I also made a hittable block, which I am going to use for coins and health boosts (I haven't made health boosts yet). They do what you might think, they bob up when you hit them and they spawn an item. While they aren't supposed to, they can spawn any gameobject or prefab given to them, so that could be something to play with. Most of the variables are pretty self-explanatory, and so I won't be explaining them here, but if you would like to know anyway, reach out somehow and I can give a bit more detail.
### 5.
I made a falling platform, which was pretty simple to code, except I wanted different gravity levels, so I had to somehow make the player stick to the falling platform, which I did by just giving the player a lot of gravity while on it. It is a bit of a weird fix, but it works completely, so I'm keeping it and you can't make me change my mind (probably).
### 6.
Lastly, I made a tiny bit of an enemy! It is pretty inspired by the goomba, but I am making it a ball, and it will roll around (rolling the other way when it hits a wall). I'm having some trouble getting it over slopes, but I'll fix that bit later. For now, it rolls pretty weirdly, and I'm not super proud of it at the moment, but chill, I'm working on it.
### Ending
So, that's about it! I've made a lot of progress this devlog, and I hope you like how it's coming along! I think I'm due to have the game's core mechanics finished by the end of this month, but the whole 50 levels thing might slow me down, and I've been considering lowering it down to 25, but we'll see how it goes! Anyways, have a good day!
P.S. Aaand, there's a new Unity update. Of course there is. I'll update to `2021.1.23f1` after this.
P.P.S. Also, I think the Release system will be: There will be a release for every Arcade Maniac version I feel ok compiling, which is definitely not every devlog, especially none of these first few devlogs. So I'll remove the release on Github for `21ga0909.0`
### Stuff to Do:
- I have to make the arcade cabinet account for framerate like the player controller does when it angles the camera towards itself.
- Fix light flickering
- ~~Reset the HDRP default settings and make custom ones for this camera only.~~
- ~~Remodel the cabinet screen to use a well-known aspect ratio~~
- Add more details to cabinet
- Fix the camera acting weird when the player interacts with the cabinet by pressing "Space"
- ~~Add stone textures to EMD~~
- Add an ability for the EMD hittable blocks to be hit multiple times
- Make the EMD falling platforms a little less glitchy when falling onto the player from above
- Make the EMD enemy, you know, actually work
- Obviously more.
### Complete changelog:
| Date | Change |
| - | - |
| 9/25/2021 | Added an `alive` private variable to `Source/Assets/Minigames/Entity March Dream/Scripts/Player.cs` |
| 9/25/2021 | Finished the `Die()` method in the player |
| 9/25/2021 | Shuffled the order of things in the player `Update()` method |
| 9/25/2021 | Put `Collision()` and `Movement()` in an IF statement checking for being alive |
| 9/25/2021 | Moved `Source/Assets/Misc/Scripts/Object Models/` to `Source/Assets/Minigames/Entity March Dream/Scripts/` |
| 9/25/2021 | Changed the namespace of the statistics file from `That_One_Nerd.Unity.Games.ArcadeManiac.Misc.ObjectModels` to `That_One_Nerd.Unity.Games.ArcadeManiac.Minigames.EntityMarchDream.ObjectModels` |
| 9/25/2021 | Removed unrequired `using` statement to `That_One_Nerd.Unity.Games.ArcadeManiac.Minigames.EntityMarchDream` in the statistics file (line 0) |
| 9/25/2021 | Changed the `PlayerHealth` and `p_PlayerHealth` variables in `Source/Assets/Minigames/Entity March Dream/Scripts/Object Models/Statistics.cs` to floats (from integers) |
| 9/25/2021 | Removed an extra whitespace line in `Source/Assets/Arcade/Scripts/StatCanvas.cs` (line 32) |
| 9/25/2021 | Added `Source/Assets/Misc/Scripts/Object Models/GeneralStats.cs` for representing all general statistics |
| 9/25/2021 | Moved `completedGames`, `requiredGames`, `totalGames`, `CompletedPercent`, and `CompletedPercentTotal` from `Source/Assets/Minigames/Entity March Dream/Scripts/Object Models/Statistics.cs` to `Source/Assets/Misc/Scripts/Object Models/GeneralStats.cs` |
| 9/25/2021 | Replaced all references to `Statistics` with `GeneralStats` in the statcanvas |
| 9/25/2021 | Removed `Source/GlobalSuppressions.cs`, `Source/GlobalSuppressions2.cs`, and `Source/Arcade Maniac.sln` as both are not being used in any way |
| 9/25/2021 | Added using references to `That_One_Nerd.Unity.Games.ArcadeManiac.Misc` and `UnityEngine.SceneManagement` in the EMD Player |
| 9/25/2021 | Swapped the assigning of `p_PlayerHealth` from line 15 to 14 in the EMD stats |
| 9/25/2021 | Added a using reference to `That_One_Nerd.Unity.Games.ArcadeManiac.Minigames.EntityMarchDream.ObjectModels` in the EMD Player |
| 9/25/2021 | Made `IsGrounded` account for the collider being missing in the EMD Player |
| 9/25/2021 | Made the EMD coin account for the EMD Player being missing (`Source/Assets/Minigames/Entity March Dream/Scripts/Coin.cs`) |
| 9/25/2021 | Made a `ren` reference to the Renderer in the EMD Player (and assign it in the `Awake()` method) |
| 9/25/2021 | Added a `deathDrag` variable to the EMD Player (used in `Die()`) |
| 9/25/2021 | Made the EMD Player not move at all if not on screen |
| 9/25/2021 | Made the EMD Player die when their y-position drops below a given variable `deathFloor` |
| 9/25/2021 | Applied new variables `deathDraw`, `deathFloor`, and `jumpHeightDeath` to prefab EMD Player |
| 9/25/2021 | Make the EMD Player fall faster (decided by a new variable `fallSpeed`) |
| 9/25/2021 | Applied the new variable `fallSpeed` to prefab EMD Player |
| 9/26/2021 | Moved all variabled in `Source/Assets/Minigames/Entity March Dream/Scripts/Manager.cs` to the EMD stats file |
| 9/26/2021 | Removed the `static` modifier in the `coinsCollected` variable in the EMD stats file |
| 9/26/2021 | Replaced all references to the EMD Manager with the appropriate reference to the EMD stats file |
| 9/26/2021 | Added a using reference in the EMD coin to `That_One_Nerd.Unity.Games.ArcadeManiac.Minigames.EntityMarchDream.ObjectModels` |
| 9/26/2021 | Deleted the EMD manager file |
| 9/26/2021 | Added a new tilemap specifically designed for spikes in EMD |
| 9/26/2021 | Added a script to manage spike collision in EMD (`Source/Assets/Minigames/Entity March Dream/Scripts/Spikes.cs`) |
| 9/26/2021 | Added the spike textures to the EMD tile palette (`Source/Assets/Minigames/Entity March Dream/Textures/Spikes.png`) (saved assets in `Source/Assets/Minigames/Entity March Dream/Palettes/Assets/`) |
| 9/26/2021 | Modified the EMD stats to clamp the player health value between 0 and 1, and to check for duplicates |
| 9/26/2021 | Made the EMD Player `Die()` method not return after setting the player health value |
| 9/26/2021 | Added a new variable `playerInvul` in the stats |
| 9/26/2021 | Made the player tick down the invul timer or set it null if it is not null |
| 9/26/2021 | Created a variable `invulTime` and `invulFlashSpeed` in the EMD player |
| 9/26/2021 | Made the player health not decrease if invulnerable, and set the invulnerable timer to the player variable when damage is taken |
| 9/26/2021 | Applied the player invulnerability timer and flash speed to the EMD player prefab |
| 9/26/2021 | Replaced any call to `Renderer` in EMD player with `SpriteRenderer` |
| 9/26/2021 | Removed the useless `Renderer` variable in the player |
| 9/26/2021 | Added new `InvulFlashMode` enum to player |
| 9/26/2021 | Added new variable `invulFlashMode` to player |
| 9/26/2021 | Made the player flash either transparently or to red when invulnerable/taking damage based off the variable `invulFlashMode` |
| 9/26/2021 | Drew some textures for some hittable block textures (`Source/Assets/Minigames/Entity March Dream/Textures/Hittable-Blocks.png`) |
| 9/26/2021 | Made an empty object for containing all hittable blocks |
| 9/26/2021 | Made an empty object for containing all coins |
| 9/26/2021 | Created an object to represent a hittable block, and made it a prefab (`Source/Assets/Minigames/Entity March Dream/Prefabs/Hittable Block.prefab`) |
| 9/26/2021 | Gave the block a box collider 2D |
| 9/26/2021 | Created a script to manage the hittable block (`Source/Assets/Minigames/Entity March Dream/Scripts/HittableBlock.cs`) |
| 9/26/2021 | Gave the block its script |
| 9/26/2021 | Gave the hittable block a child that is used to render and animate (moved the spriterenderer over to it) |
| 9/26/2021 | Added an animation for the hittable block's child when it's hit (`Source/Assets/Minigames/Entity March Dream/Animations/Hittable Block/Block Hit.anim`) |
| 9/27/2021 | Made a texture for the semisolid platforms (`Source/Assets/Minigames/Entity March Dream/Textures/Semisolid-Platforms.png`) |
| 9/27/2021 | Made an empty object for containing all semisolid platforms |
| 9/27/2021 | Created an object to represent a semisolid platform, and made it a prefab (`Source/Assets/Minigames/Entity March Dream/Prefabs/Semisolid Platform.prefab`) |
| 9/27/2021 | Created a script to manage the semisolid platform (`Source/Assets/Minigames/Entity March Dream/Scripts/SemisolidPlatform.cs`) |
| 9/27/2021 | Gave the platform its script |
| 9/27/2021 | Created a texture for a falling platform (`Source/Assets/Minigames/Entity March Dream/Textures/Falling-Platform.png`) |
| 9/28/2021 | Created an obhect for containing all falling platforms |
| 9/28/2021 | Created an object to represent a falling platform, and made it a prefab (`Source/Assets/Minigames/Entity March Dream/Prefabs/Falling Platform.prefab`) |
| 9/28/2021 | Gave the platform a kinematic rigidbody |
| 9/28/2021 | Created a script to manage the semisolid platform (`Source/Assets/Minigames/Entity March Dream/Scripts/FallingPlatform.cs`) |
| 9/28/2021 | Gave the platform its script |
| 9/30/2021 | Gave the EMD player a `gravityScale` variable |
| 9/30/2021 | Applied the variable `gravityScale` to the prefab EMD player |
| 9/30/2021 | Made a texture for the EMD stompable enemy (`Source/Assets/Minigames/Entity March Dream/Textures/Enemy.png`) |
| 9/30/2021 | Created an object for containing all enemies |
| 9/30/2021 | Made a script for any EMD enemy to derive from (abstract) (`Source/Assets/Minigames/Entity March Dream/Scripts/Abstract/Enemy.cs`) |
| 10/01/2021 | Created an object to represent a ball enemy and made it a prefab (`Source/Assets/Minigames/Entity March Dream/Prefabs/Rolling Enemy.prefab`)
| 10/01/2021 | Made a script for the rolling enemy (`Source/Assets/Minigames/Entity March Dream/Scripts/EnemyRolling.cs`) |
| 10/01/2021 | Gave the rolling enemy it's script |
| 10/01/2021 | Gave the rolling enemy a rigidbody 2d |
| 10/01/2021 | Gave the rolling enemy a circle collider |