/agdg/ + /vm/

Don't make the spells objects that make effects themselves. Instead, make them lists of effects (give every effect an enum) with position coordinates and a direction attached (and any other relevant information), and have a 'spell coordinator' object that has a list of spells to cast. To have a character cast a spell, have them make a spell object, give it all the data it needs, and then shove it on to the back of the spell coordinator's list/vector of to-be-cast spells. Every loop, the coordinator goes through the list and applies all the spell effects to the world, then clears the list.

This way, spellcasting isn't limited to characters- anything that has access to the spell coordinator can invoke one.

You could go a step further and make spells just be vectors of enums. That way, you could have dynamic, user-made spells that string a bunch of effects together.

Are you saying do away with making the effects objects, too? So should I make the effects enum and then run a loop to see which effects are triggered and execute based on the effect ID?

Like so:

foreach(Effect e in mEffects){
if(e == fireball) CastFireball;
if(e== heal) HealPlayer();
if(e == fly) Fly();

In that case would it still be a smart idea to make the spells their own instantiated-per-character objects?
also I'm using Unity, so I have C# limits and a component system I can take advantage of

I know a lot of you fags recommended Godot for 2D platformers and shit.
So, as a complete "ideas guy" I have started to grasp the basics. Barely. But I guess my question is, considering you can make fuckhuge levels with low memory with tile-mapping, what would constitute good level design? I don't just wanna copy-paste shit straight from Castlevania: aria of sorrow, but I'm looking for that same kind of replayability, and a good control scheme.

Depends on your game's mechanics. There's no definite answer for "good level design," if you had to ask this question maybe you weren't quite ready to make your own game.

Just make your level and make it fun.

Different ways of overcoming the obstacles and enemies.

Good levels make good use of the tools given to the player. Mario is about jumping, so the way you kill enemies, destroy blocks, collect coins, and get past obstacles all require good control over jumping. Refine the movement of the player first, then build levels that cater to that movement.
Once you have that down, you can start giving the player other tools and building levels around those tools.

I'd rather have all the basic shit out of the way and then decide how progress from there.


Thanks.

F-Zero Mars Edition when

I'm working on expanding movement for my FPS and I want to add in wall sliding, wall jumping, and ledge climbing, but I'm not sure exactly how controlling this should work. Sorry if I seem to ramble on but there's a lot going on and I want to get it right.

For ledge climbing I have it so that when the jump button is pressed in air, a ray trace goes down in front of the player, and so long as there is a ledge there it will kill all the players momentum then give the player an extra jump that puts them high enough to get on that ledge the ray trace hit. This feels fine. If your wondering why I kill the momentum, it's because
1) I want it so that the people who like going fast will use more creative ways of gaining height, like hitting steep slope at high speed.
2) If I don't kill momentum it feels way too slidy.

For wall sliding it's a similar detection method, but on each side of the player. If the player is moving above a certain speed while next to a wall, and they are in the air, they press space to wall slide. Vertical momentum is completely replaced by a mini-jump (but horizontal momentum is preserved) and gravity is reduced as long as the player doesn't start falling too fast, land, or move away from the wall.

Here's where I start running into issues. I have wall jumping, as in, jumping away from the wall, handled by the jump key again. If the character is wall-sliding and jump is pressed, you jump away from the wall you are wall-sliding along. I feel like I'm crowding too much contextual functionality into this one key. I'm wondering if there are any other games that did this well. Should I just copy Unreal Tournament and add in dodging with a double tap of the directional key, then let the player dodge against a wall? Only allow double-tap wall jumping when against a wall? Change other parts of the movement to make room for something else?

You may want to look at other games that implemented similar things, such as Red Eclipse and Titanfall.