Questions about the combat engine and customizability.

Started by Courier, June 18, 2015, 07:56:32 AM

Previous topic - Next topic
Hey there everybody! Been poking around Solarus here and there since last year, I've been wanting to try and make a very NES Zelda inspired action game for a while now. The combat system would be very simple, the only major additions to the classic zelda shield+sword set up would be a button that locks your direction but slows your movement when held (You would attack and block in the direction you're facing, but you could strafe as well). As well as a dash button that would get you out of situations quickly, and a somewhat shmup-like upgrade system.

How hard would these kinds of things be to integrate into Solarus? I've been considering using GameMaker Studio, but I thought having a Zelda based system as a baseline would be easier since there isn't a whole lot I want to change, and the map editing system feels much more natural to me in Solarus. Are there editable attacks and variables for the hero in the engine itself? or would I have to edit the source?

Currently, Solarus does support the "block the direction you're facing" shield setup of early Zeldas right? I ask because when I played MOSDX I honestly couldn't ever get the shield to work... I feel like I must be missing something stupid, so any help in that regard would be great too.

I imagine if you have the time and energy to program all of this stuff into your project, It could happen.
But if your going for a more nes feel rather than snes. I try to use a program called zelda classic.

Don't let that misdirection you though. Solarus can get the job done. It just will take some time and patience to get it to all work.
The odds are you game play will feel a bit more snes than nes. but feel free to go ahead.
This signature was way too long before, but now it's short!
Also, I am Still Alive!
On ad Off I go!

Do you ever get the feeling that the fandom of a product(s) ruin the potential that you could have had to enjoy the product?

Everything can be done about the combat system in my opinion, thanks to the methods enemy:set_attack_consequence ( http://www.solarus-games.org/doc/latest/lua_api_enemy.html#lua_api_enemy_get_attack_consequence ) and the enemy:on_custom_attack_received ( http://www.solarus-games.org/doc/latest/lua_api_enemy.html#lua_api_enemy_on_custom_attack_received ), the hero:on_taking_damage ( http://www.solarus-games.org/doc/latest/lua_api_hero.html#lua_api_hero_on_taking_damage ) and the custom entities, you can do pretty much what you want.

About the dash, you can set the hero invincible when dashing and change his speed to *10 during a defined time, then come back to a normal speed and disable the invincible : this way, the player as full control of the dash. If you want the dash to only go in one direction, instead of changing his speed you can freeze the hero, set an animation of dash and calculate the next place where he will be to after the dash, and set a movement straight to this place.

About the shield, I had no problem in zmosdx to use it. The first one is pretty useless, but when you have the mirror shield, you have to face laser to stop them or, if you have the sword charging, you have to be on the side (where your shield is when you charge your sword) to stop the damage. But I don't know how this particularity is set in the quest (I'm pretty sure it's in the quest, else it's an unwanted behaviour and an issue should be open on github :) ).

June 24, 2015, 03:21:51 PM #3 Last Edit: June 24, 2015, 03:25:52 PM by ZoriaRPG
If you want the NES screen transitions, ZC would be the easiest as a start, but to accomplish all of you ideas, you'd need to become used to some very unusual scripting APIs. (I have, over a few years, but it takes some doing.)

I have most of the code you;d need to do this in ZC, but it's very different to Solarus, in almost every way. Some things are easier, some harder, some dead simple, others obtuse. You should certainly try playing with it, but watch the how-to videos (by TeamUDF) first.

I would love to see something like this for Solarus though, as a proof of concept.

As to shields, the general rules from Z3 are:

Base (blue) shield: Blocks arrows, and stones.
Red (magic) shield: Bloocks wizrobe spells, and fireballs, plus cumulative from blue shield.
Mirror shield: Blocks lasers, and cumulative from red shield.

Those should all work in Solarus.

If you're curious, in ZC, shields (class item), block attacks in the direction the player is facing, based on a flag. (Each type of attack that you want to block, is added into the integer flag, and you may have many shields, and use fancy tricks to allow a player to shift between them, and do other things.)