Recent posts

#11
Development / Re: How to Receive an Item Fro...
Last post by lefthandedhero - December 19, 2023, 11:10:41 PM
Quote from: PeterB on December 18, 2023, 07:51:48 AM
You have to do that with the map lua script.

npc:on_interaction() then do the dialog and finally give the item to the hero with hero:start_treasure(treasure_name, [treasure_variant, [treasure_savegame_variable, [callback]]])

You can have a look in the Manual for further help on these :)

Thank you; that helps a lot.

What are you referring to by the manual? Are you referring to the Lua API reference? If so, I have been reading through it.
#12
Development / Re: How to Receive an Item Fro...
Last post by PeterB - December 18, 2023, 07:51:48 AM
You have to do that with the map lua script.

npc:on_interaction() then do the dialog and finally give the item to the hero with hero:start_treasure(treasure_name, [treasure_variant, [treasure_savegame_variable, [callback]]])

You can have a look in the Manual for further help on these :)
#13
Development / How to Receive an Item From an...
Last post by lefthandedhero - December 15, 2023, 03:13:11 AM
I watched the tutorial videos on equipment items and I understand how to have an item be found in a chest or dropped when enemy is defeated. However, I was wondering how to have an item be obtained by interacting with NPC.
#14
Your projects / Re: Ocean's Heart
Last post by llamazing - December 01, 2023, 03:22:58 AM
Quote from: Wuzzy2 on November 07, 2023, 04:36:17 PM
Wait, so is this game actually proprietary in the end (or has proprietary components)? The Solarus games webpage seems to suggest this.

Some points for consideration:
* A 100% FOSS license (in particular GPLv3) does not prevent commercial use and charging money for the software.
* It would not be possible to release the game on the Switch without including proprietary code. Releasing Ocean's Heart on the Switch has been a boone to the Solarus Engine and brought it some much-needed visibility.
* The vast majority of the lua scripts for Ocean's Heart are GPLv3. And as Max said, there are improved versions of the scripts included in the Trillium resource pack anyway.

Between the free tilesets, GPLv3 scripts and switch port, Ocean's Heart has produced a number of high quality features and assets to the Solarus Engine. Moreso than any other FOSS project to date, in my opinion.

Here is the license file for Ocean's Heart. The proprietary parts are listed as "All rights reserved". :

QuoteThis file contains the license for Ocean's Heart.

- The Solarus engine is licensed under the terms of the GNU General Public License
in version 3. Information and source code can be found at https://www.solarus-games.org/

- Lua scripts are licensed under the terms of the GNU General Public License
in version 3, unless specifically licensed otherwise in the text of the script.

- Music, sound effects, scenario, level design, and graphics are created by Max Mraz.
All rights reserved.

- However, some assets in particular are licensed under the
Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)
These can be found, among other assets, at https://gitlab.com/solarus-games/solarus-free-resource-pack

This game was made by Max Mraz.

Additional programming by Llamazing

Special thanks to the Solarus Team and community for all their help.

#15
Your projects / Re: Ocean's Heart
Last post by Max - November 28, 2023, 03:59:48 PM
Quote from: Wuzzy2 on November 07, 2023, 04:36:17 PM
Wait, so is this game actually proprietary in the end (or has proprietary components)?

Hi Wuzzy! Sorry for the delayed response, I don't check the forums very often, but someone on the Solarus discord was kind enough to bring this to my attention. Yes, Ocean's Heart does have proprietary components. I appreciate your help with beta testing and I'm sorry about this misunderstanding, but it was always going to be a commercial game. I don't think I ever said otherwise, and several posts in this thread are actually regarding how there will be some assets I will freely share.

That said, the Ocean's Heart tiles that I released for free are actually included by default when you download Solarus now. Additionally, I've been working on a much bigger, more extensible, and comprehensive set of code and assets for a few years. It's designed to be used to help someone make a Zelda-like game, whereas Ocean's Heart just _is_ a game and isn't as useful.
You (and anyone else interested) can check out the free Trillium resource package here:
https://gitlab.com/maxmraz/trillium

Generally, the features of Ocean's Heart are all added as systems here, totally rewritten to be much better and more stable. Additionally there's a whole bunch more systems I've written (like a cooking system, lighting effects, entirely new enemies, etc.). I think if you wanted to use anything from Ocean's Heart, Trillium will be much more useful for you.

If there is anything specific in Ocean's Heart that you'd like to use in creating your own game, that isn't already represented in the Trillium resources, let me know!
#16
Development / Question about License and Exa...
Last post by AParticularMaker - November 22, 2023, 01:51:29 AM
Hello, long time lurker first time poster.

I have a question about the code license of the example games on the download page.
I'm currently developing my first game in Solarus and I have a dash function.
Since examples are extremely limited, I copied the dash from YarnTown and modified it heavily.

I would like to develop this game into something commercial to sell on Steam.
From what I've read on this site I think I can do that, but with the GPLv3 license, but I'm 100% sure.
Note if I ever do end publishing this game, I will be more than happy to publish a free demo that anyone can learn from and use in their games.

Thanks
#17
Development / Re: Hero Invisibilty
Last post by PeterB - November 07, 2023, 10:54:16 PM
Yes that is what I would have suggested, i.e. creating a new hero animation in each tunic variant so when using the cape item so you just see a shadow.

You could change the hero's tunic animation to just show an outline and shadow and change it back once a timer ran out if it was powered by magic for example.
#18
Development / Re: How to Change an Entity's ...
Last post by PeterB - November 07, 2023, 10:45:16 PM
Yes it would, as long as you replicate it in all the tunic variants. It can then be called with hero:set_animation(animation, [callback]) from the relevant game, item, map script etc depending on what or where the new animation was called or initiated.

If it is a permanent change then using the hero metatable may be the best way to do it :)
#19
Your projects / Re: Ocean's Heart
Last post by Wuzzy2 - November 07, 2023, 04:36:17 PM
Wait, so is this game actually proprietary in the end (or has proprietary components)? The Solarus games webpage seems to suggest this. See the attached file. Or here: https://solarus-games.org/games/oceans-heart/

If yes, then I am super mad because I helped you beta-test this game for free, assuming this game would be 100% FOSS, no strings attached. But I was NOT willing to contribute anything (not even bug reports) to proprietary software. >:-(

And to add insult to injury, I've just found this game on Steam with 1000+ reviews at a price of ca. 15$ so it looks like it has generated at least 15,000 bucks (before taxes) and I basically gave you free labor while foolishly assuming it would be a non-commercial project. And the actual profit is probably way higher because only a fraction of players leave a review.

So I feel like my labor has been successfully stolen which is just not OK. Even if the game turns out to be 100% FOSS, not revealing upfront it will go commercial is just not OK. I know, I know, commercial software is compatible with FOSS standards, not arguing against that. All I'm saying is that I think if commercial is planned, that should always be upfront, anyhting else just feels scummy. I am a developer myself and I know how valuable beta tests can be to software development.

I still hope at least this proprietary thing is just a misunderstanding (in which case I am only half as mad), so please clarify:

Does this game contain any proprietary/strictly copyrighted files? (For some reason I can't find the source code right now but I could swear I must have seen it before somewhere. It's been many years, after all.)

If Ocean's Heart IS FOSS, then please fix the Solarus games webpage (or ask who ever maintains it to do it). And the webpage should probably also link to the code repository.


And I guess I've learned the hard way to be more careful before contributing anything to random Internet projects. :-(
#20
Development / Problem with trying to overrid...
Last post by lefthandedhero - November 03, 2023, 07:40:29 PM
A while back, I created a custom entity called Follower, who exists to follow the hero. Recently, I created a function entity:swap_sprite() that replaces the Follower's current sprite with the hero's current tunic sprite. Here is that code:

function entity:swap_sprite()
  -- obtain the hero's current sprite:
  repsprite = hero:get_tunic_sprite_id()
  -- replace the current sprite with resprite:
  entity:remove_sprite()
  sprite = entity:create_sprite(repsprite)
end


I then created another function meant to override the game command "item_2"; this function will do multiple things, but right now, it just calls the entity:swap_sprite() function. I intend to store this function in a separate metatable, but right now, it is inside the Follower.lua file. Here's the code:

function game:on_command_pressed(item_2)
  entity:swap_sprite()
return true
end


However, when I try to run the quest, instead of the sprite changing on command, it occurs at the very beginning of the quest, and the hero can no longer use the sword (movement still works). What could be causing this error?


EDIT: To try to figure out what went wrong, I added two lines of code to the swap_sprite() function that changes the hero's current tunic sprite to the follower's sprite (both are using hero tunic sprites of different colours; the hero's sprite is hero/tunic1 and the follower's is hero/tunic3). The modified function is as follows:

function entity:swap_sprite()
  -- obtain the hero's current sprite:
  repsprite = hero:get_tunic_sprite_id()

  -- (For testing) replace hero's sprite with follower's
  local sprite_id = sprite:get_animation_set()
  hero:set_tunic_sprite_id(sprite_id)

  -- replace the current sprite with resprite:
  entity:remove_sprite()
  sprite = entity:create_sprite(repsprite)
end


Now, the two characters swap sprites as intended, but instead of only doing so during the item_2 game command, they do so any time any game command is called: when the hero starts moving, they swap sprites (the hero still starts moving); when the hero changes direction, they swap sprites (the hero still changes direction); When I press "c" for the hero to use their sword, they swap sprites and the sword isn't used; etc.


EDIT: I looked at some default examples of the use of similar events, such as on_key_pressed() and I realized my error; I stated "game:on_command_pressed(item_2)" when I should have stated "game:on_command_pressed(command)" and then stated: if command = "item_2"...