I haven’t made an actual game and Help topic in a while.
I’ve been making a Dungeon Crawler and I need mechanic ideas, enemy design ideas and special attacks and lastly, game modifiers for certain difficulties chosen.
I’ll go in-depth with the ideas I need help with and the current notable mechanics I have.
I’d also like ideas on how to optimize and make my device system/s more efficient and use less memory because I’m at ~14-15% memory with just the main mechanics of the game.
I’m also planning on creating this map FULLY on mobile. (on an iPad)
It’s gonna be a challenge, but definitely not impossible.
PS (please read)
PS: If you think this is a showcase, look at this:
Difficulty Selector
Difficulty Selector:
These pictures are connected, by the way.
This would’ve just been two pictures but the FOV on mobile is quite small compared to a computer, that’s been holding me off.
![:sweat_smile: :sweat_smile:](https://forum.creative.gimkit.com/images/emoji/twitter/sweat_smile.png?v=12)
Other picture: not part of the difficulty system, but still has actions (blockcode) corresponding to it.
Picture 1: How this works is that when a player presses the button, it opens a popup.
If the player clicks Call-To-Action 1 (select difficulty), it Triggers the Trigger and runs blockcode simjlar to this but it differs on the difficulty chosen. I’ll talk about the channels first, the property will be explained with the third picture.
Channel 1: (showoverlaylivesleft)
Pretty self-explanatory, it shows the Game Overlay that displays how much lives you have left.
Channel 2: ([insertdifficultyhere]difficultychosen])
This activates sentries with higher health/lower health corresponding to the difficulty chosen.
This also applies with vending machines but instead of health, price.
Okay, now let’s talk about the two properties.
Let’s go back to the third picture.
Property 1: (LivesLeft)
Sets the LivesLeft property’s value to 5.
This is the same property used to update the Game Overlay’s text.
Property 2:
Sets the 5lives property’s value to true.
Okay, this is kinda confusing.
I’ll explain it.
When a Player is knocked out, it triggers the four triggers and runs some blockcode. (If you’re confused why there’s only three triggers in the picture, it’s because I added one)
Here is the blockcode:
If the Gimpossible difficulty is chosen, the trigger sets the 5lives property’s value to a “true” one.
When the player is knocked out and the 5lives property is true (meaning the 5lives difficulty is chosen), a counter gets incremented on the “increment5livesleft” channel.
Also, the counter has a target of 5 but it differs on the difficulty chosen.
The counter is then connected to a Team Switcher that switches the player’s team when the target value is reached which means the player used up all their lives. (target is 5 for the gimpossible difficulty)
By the way, I forgot to mention that there’s a trigger different from all the other triggers in picture 3.
It’s the InfiniteLives trigger.
It runs this blockcode:
If the VeryEasy difficulty is chosen and the player gets knocked out, it checks if the InfiniteLives property’s value is true, it deactivates the 10lives and 5lives trigger (also the 15livestrigger but I didn’t add it at the time of creating the picture) which disrupts the counter’s signal preventing the trigger from being triggered and then so incremening the counter which stops the player from switching to spectator.
It broadcasts on the “InfiniteLives” channel which is then sent to change the text of a Game Overlay:
I did not use the InfiniteLives Trigger with a Counter for the exact same reason.
Simplified Version
When the player selects a difficulty, it sets a property that corresponds to the amount of lives you get for that difficulty to a true value. [the formatt is as follows: #lives] Then, it sets the LivesLeft property to said # value. The only exception is for choosing the “Very Easy” difficulty, which only sets the “InfiniteLives” property to a true/false value. This it to avoid the Game Overlay saying “999999999999999 Lives Left” as it causes screen clutter and it isn’t the best thing we could do.
Instead, when receiving on the “infinitelives” channel (which is triggered when the player chooses the “Very Easy” difficulty, it runs this code:
Set Text | Create Text With "Lives Left:"
"Infinite ∞"
[I just realized that I could’ve just used one text string but hey, it doesn’t affect it that much.]
When the player gets knocked out, it Triggers 4 Triggers that check if these true/falss properties have a “true” value: InfiniteLives (which is set to a true value when the player chooses the ‘very easy’ difficulty), 15lives (which is set to a true value when the player chooses the ‘easy’ difficulty), 10lives, (which is set to a true value when the player chooses the ‘normal’ difficulty) and finally, ‘5lives’ which is set to a true value when the player chooses the ‘hard’ or ‘gimpossible’ difficulty.
Let’s cover what happens when the player chooses any difficulty other than the ‘very easy’ difficulty which sets the InfiniteLives property to a true value.
Let’s start with 5lives which is set to a true value when the player chooses the ‘hard’ or ‘gimpossible’ difficulty.
When the player gets knocked out, the triggers check if one of the four true/false properties are set to a ‘true’ value.
Now, the trigger detects that the ‘5lives’ property is true.
It decrements a counter.
When the counter, reaches zero, the player switches to a spectator.
This is the case for all the other difficulties, except the ‘very easy’ difficulty, which gives you infinite lives.
I have explained it above.
Okay, now let’s move onto
Difficulty Selector and Game Modifiers Optimization
When you select a difficulty, it modifies the game.
Here are what certain difficulties do to modify the game’s difficulty when chosen:
Let’s go back to the first and second picture.
The “VeryEasy” difficulty activates a 1.5x Damage Boost (for 30 seconds) and gives you a sped boost lasting for 30 second as well.
It gives you an Epic Zapper to start with.
The “Easy” difficulty is almost just as same, just subtract 0.25x from both the Damage Boost and Speed Modifier ans now you have a 1.25x Damage and Speed Boost!
Then, things get a little bit more boring.
Choosing the Normal difficulty starts you off with a Rare Zapper and the Hard and Gimpossible ones start you off with an Uncommon Zapper.
I’d also like some ideas on what modifiers to add to each difficulty individually, and they can be anything, more speed, more damage, a better starting weapon and more buffs.
I’m also working on a seperate ‘game-modifying’ system where the host can enable or disable critical hits, achievements, map selection, disabling lore and other things to modify the game.
Memory Optimization ideas with the Difficulty Selector, Game Modifiers and LivesLeft system
Okay, now before anyone says, “Use number properties instead of true/false ones!
You could make property value 1 stand for VeryEasy, 2 stand for Easy, 3 stands for Normal and so on and use a Checker to check those properties.
That would save a lot of memory without using blocks.”
Yes, I have been thinking of that and it would probably save ~2-3% memory and that would put me at a lower memory count for more mechanics.
It’d put me at 11-12% 17-18 memory more or less compared to the 15% I’m at now using true/false properties. I crossed out some stuff because I’m now at 20% emory.
Any other tips to make my system/s more efficient and use less memory/just general tips?
Also, yes I have read The Ultimate Guide to saving memory along with some of the replies in the topic.
I’ve also added a lot more stuff to this, which puts me at 20% memory.
Edit: while reading back, i just realized i could do all the code in one trigger instead for checking for every (true/false) property in a seperate trigger and the part where the triggers deactivate all triggers but itself when they run isn’t that important because they’ll only run if the true/false property is true IN THE FIRST PLACE.
This would save me about 4-5 memory including this not far above:
Okay, now before anyone says, “Use number properties instead of true/false ones!
You could make property value 1 stand for VeryEasy, 2 stand for Easy, 3 stands for Normal and so on and use a Checker to check those properties.
That would save a lot of memory without using blocks.”
Yes, I have been thinking of that and it would probably save ~2-3% memory and that would put me at a lower memory count for more mechanics.
It’d put me at11-12%17-18 memory more or less compared to the 15% I’m at now using true/false properties. I crossed out some stuff because I’m now at 20% emory.
Enemies, Bosses and Art Ideas
I made a spaceship-like thing using plant canisters, space beds (including the vertical variation of it) and space containers.
Does anyone have ideas to improve it?
If you also have better spaceship art designs, I’d like to hear them.
For the bosses and enemies, I’m thinking of having each level have a theme (the main theme will always be space though) and then the boss’ main gimmick/special ability revolving around that mechanic using boss special attacks.
Also, I’ve looked in the Custom Bosses guide but none of those really interested me would fit in my map , so I’m asking for ideas.
I’m also planning on making multiple ‘stages’ to each boss using multiple sentries which adds new abilities or strengthens the boss.
Here are some of my ideas for boss special attacks/abilities (that you can also add onto in the comments)
Knockback
-activates zones around the boss and teleports the player behind the zone the player entered
Stun
-pretty self-explanatory, stops the player from moving for a few seconds
Posion / Oxygen Deplete
-i have an oxygen system in my map, what this would do is deplete the oxygen faster than usual for a few seconds or just take away a large portion of oxygen
Curse
-adds a debuff to the player, gives them an evil eye with a debuffed damage booster or disables health regeneration for a few seconds
[Insert Suggested Ability Idea Here]
-blah, blah, blah. Special Ability Description
If you could give me ideas for the themes and/or the boss to go with that theme, that’ll be very appreciated.
(I have no idea on why I posted this so late for most people)