Solarus features ?

Started by fosamax, September 24, 2014, 04:20:16 PM

Previous topic - Next topic
Hi,

I'm quite interested into making my own game but I don't want it to be a Zelda Alttp clone. Could you tell me if the following features seems achievable with the current version on the engine or if some changes in the c++ core would need to be done.

Here's some of the features I'm interested in :

- I would like some rogue like features or a mix between A-RPG and rogue like : I don't need true ramdomly generated dungeons but I guess I may need a way to ramdomly load maps that can be created by hand.
- I may need several playable characters (only one at a time) with different abilities (let's say warrior, archer, mage, thief...)
- Idealy, I may need the amount of gold to be shared between characters
- each character may have different strong, max health, max magic and so on...
- I would like to have for each character :
* normal attack
* special attack by long pressing the attack button
* two special abilities (assigned on two more butons) : like throwing axes, using shield, magical attack...
special events (assignable through menu on a fourth button) like health potion, invincibility, temporary rising attack power...
*ability should be character specific

- breakable treasures and gold magnet
- ability to choose equipment through menu with visual effect (more than 3 tunic)
- maybe light and particle effect (through lua ?)
- some kind of simple achievements (time to beat a dungeon, time to defeat a boss, number of ennemies killed...)

Ramdomly generated dungeon is not mandatory (some games like cladun : this is a rpg could be used as a reference where dungeons are not ramdomly done and yet it can be seen as a mix between A-RPG and rogue like).

I'm still learning the making with the engine so I'm way back before missing features may be problematic.

I guess I will start with a small project like a zelda sokoban.


In first sight, I would say all is possible except maybe the particle effect (but I know some tests are made to simulate this, so maybe I'm wrong).

The random generation of maps are also tested, but I don't know if it's effective or not. I know it's "theorically" possible, but maybe in fact it's still a little complicated.

Several playable characters : if it's only one at a time, I think it's no problem (a least in term of code, don't know if there will not be problems with sprites if some are still "hardcoded"...). The different abilities of hero can be set when you select this one so no problem at all.

I don't know for the special attack if it is not hardcoded. In my memories, it is so you may have problem with it, but I think you can hack that in some ways if it's still the case.

Gold magnet, don't know how to do it but I think it's possible, with a check of the distance between the treasure and the hero like each 20ms and if the distance is close enough, start a movement on the treasure thru the hero.

Choose equipment : It's possible (maybe with some constraints on the name of the sprite, I know tunic had problem with the hardcoding of it), you just have to do the hero:set_tunic_sprite_id (no matter how many there is). But as I said, you maybe will get in trouble if the characters have specific tunics (if many tunic1 exists, etc)...

Achievements can also be coded in Lua side, but can easily be hacked by a player because of the nature of the games (a folder "data" easily accessible, and the savegames are also easily accessibles).

Hope it helps and I didn't say b******t x)

As Renkineko said, most of this is possible, yes. Of course, it will require a lot of Lua scripting.

Simulating several characters is possible. There is only one playable hero. If you want other characters to appear on the screen, they can be NPCs or custom entities. And when you need to change the controlled character (like in Secret of Mana?), you can swap the position of the hero with the NPC to control, and change their sprites. It will look like the hero has changed.
(The bug of tunic sprites names is fixed: now the tunic sprite of the hero can have any name).

There is no particle engine, but I don't see why we could not make one in pure Lua scripting.

Generating maps dynamically is possible because there is a file API. You can create new files in the savegames directory, and if they are valid map data files, they can be played. You just have to respect the syntax of a map file, which is properly documented: http://www.solarus-games.org/doc/latest/quest_map_data_file.html
There is only one issue: any map needs to be declared in the resource list, and the resource list cannot be modified dynamically for now (is it loaded from project_db.dat and remains fixed then). I will solve this problem, however, in the meantime, a workaround is to pre-declare a lot of maps in project_db.dat even if they don't exist yet.

I'm more thinking about something like Wayward Souls so I guess I should use custom entities to handle attacks and items.
Wayward Souls uses only one character at a time but their attack differs greatly.

https://play.google.com/store/apps/details?id=com.noodlecake.waywardsouls&hl=fr



The game is on sales on google play (en France) for 1,40 € and it worth it.

BTW could you add support for more buttons (or keyboard keys) so that we can map those (I would like to be able to use L and R on GCW Zero)
For example I would like to be able to switch menu pages on Zelda Solarus DX with L/R (could be mapped on pageup/pagedown on PC)

Anyway thanks for the answer. Since I am way from being able to faithfully recreate such a game, I guess solarus engine will see many improvements meanwhile. It's already great currently.

Thanks

You can already react to any key pressed, not only the high-level built-in game commands: http://www.solarus-games.org/doc/latest/lua_api_game.html#lua_api_game_on_key_pressed

Thanks for pointing it !

I'm still in the very early process of learning how to use the engine so I guess I still have lots to discover.

Anyway, the video tutorial are really a great way to lean the engine. I'm french so it's easier.

Thanks

My attempt at a particle engine in pure Lua under Solarus: http://forum.solarus-games.org/index.php/topic,52.0.html

Needs a lot of work still, but could be a start if you need it.