Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Max

#166
I don't know if anyone's done it already, but doing a rod of seasons using dynamic tiles and map:set_tileset() it should be relatively easy, compared to other main, game-wide mechanics at least. All the aesthetic changes would be done using matched tilesets, and then whatever dynamic elements you'd want on each map, you could define on a map-by-map basis. I don't think it'd be one script you could copy and paste though, so you'd definitely want some experience with the engine first.

For masks, I can see how you'd do a few of them fairly simply, the most labor intensive thing would be the graphics of your hero in each mask. The Solarus engine is a lot more flexible than project Zelda, but it requires more front-end investment in learning how to use the engine and writing scripts.
#167
So, if you just use whatever art or music you find on the internet, that's considered stealing if you don't have permission. Also, then anyone whose art you stole could technically force you to stop working on your project and sue you in court (unlikely to actually happen, but technically possible). Also, it's impolite to take someone's hard work without asking them, and let's all just be nice.

It's not hard to know whether an artist wants you to be able to use their hard work for yourself- especially in pixel art like you're probably dealing with, usually people will write the rules right on the piece of art.

Sometimes (especially here) you'll see licenses on art. It might look something like CC-BY-SA. The CC means "Creative Commons", which is a type of license, then the others roughly mean "if you use this, you have the give credit to the artist" and "if you alter this, the new thing you create also has to give credit to the original artist." If you see a license on art, it's usually easy to look it up and figure it out, but if you're confused I bet people here would be willing to help you understand the license, just ask : )

The other things you'll see on a lot of pixel art is saying something about credit. Like "give credit" or "credit please". These are like the CC-BY license, because what it means is the artist wants you to let everyone know they created the art you're using. In the case of a game you're making, a readme file in the folder with credits would work temporarily, and then actual credits at the end ought to include them.

An artist might also write "no credit needed", which means you don't have to say who made the art. However it's very rude, at the least, to say you did it yourself because that's lying obviously. And nobody lies on the internet so don't be the first (lol).

The thing about writing "please give credit" or something is that unlike CC licenses, that has no legal standing. Perhaps you could argue in court that they intended to allow others to use their art, but if they changed their mind and wanted you to stop using their art, you'd probably have to, so it's better if someone has put an actual license on their art.

Finally, you'll also find a lot of art that has no rules written on it. This is harder if you really want to use it, but there are some things you can do. If you found the art somewhere where you can ask the artist to use it, start by asking them. They're allow to say no though, because they've probably spent many, many hours learning to create this art and then more hours making the particular thing, so if you just want to use it for free, without having done all that work, why should they let you? But maybe they're really nice and they will just let you, so ask, and follow any rules they might give you (like 'give credit' or 'don't use this in a violent game' or whatever they want.)

If you don't know who the artist is, try looking for them. Use Google for a reverse image search, which can show you who was the first person to put the image on the internet- that will usually be the artist, so maybe you can ask them. If you can't find the original artist, or if they aren't around anymore, or if they won't answer you, you're out of luck. Please don't use their hard work anyway just because you want to. There are a lot of other options- use art from someone else who will let you, or learn yourself.



Finally, a few other things you should know about on this topic- there is lots of art where the artist has explicitly given permission for anyone to use it. Try opengameart.org, it's a whole website of the stuff. It's awesome, even if a lot of it is just okay.

Another option is buying the art from an artist. Websites like gamedevmarket.net allow artists to sell assets like tilesets, characters, etc. for pretty inexpensive prices. For example, maybe instead of stealing Nintendo's art, there's a brilliant pixel artist who I think uses the Zelda Classic engine, and she's released an entire overworld tileset for just $10. If you can save up to spend a bit on that, not only would you be following the law, not stealing from Nintendo, and immune from any cease and desist notes from them, but you'd also be supporting an artist. Link



And one final note that's not about what's legal to do, but just from me personally as an artist. I learned just about everything I know about pixel art from stealing graphics from Nintendo's games and adding more to make my areas customized. It started with basic edits to Zelda the Minish Cap's tilesets, like making a door wider, or combining two things poorly, then I was adding my own little touches that didn't look that great, and now I'm making all my own graphics. I've still got a long way to go, but I did start learning by stealing. Many great artists admit they've stolen ideas, although before digital art this meant they'd see something they liked and reproduce it as best they could, which is a great way to learn. Try to reproduce Nintendo's art- maybe have a graphic open on one side of the screen and try to re-draw it on the other side. Make a few changes. That's how we learn. But please don't just take some poor artists work because you want to.



Oh, and sorry, "matter" and "better" don't rhyme in English XD
Let me know if anything I said wasn't clear.

#168
Because the engine already knows exactly what map entity the collision is with (we're calling it target in this situation), you can do target:get_name() to get the name you have the map entitiy.
#169
I don't know if I completely understand what you're asking- for one thing, switches automatically activate only themselves when you hit them, is this some kind of custom item? Maybe provide more details?

If this is like, a custom arrow or something, you probably have like, a custom entity collision test? In which case you're gonna have something like
Arrow:add_collision_test("touching", function(arrow, target)
Code
end)

Right?

Then you'd need code like, if target:get_type() == switch the target:set_activated(), I think? This is all if I'm right about what you're asking.
#170
This might be something simple- when you're selecting an animated tile in a tileset, you select all 3 frames, not just the first one. It looks like you've selected just the first frame in your screenshot.

That said, good luck trying to force Solarus to work well with anything besides 16x16 pixels. I don't know if the 16x16 built in logic will be changed in future releases, but it's hard coded into the engine in many places right now from what I understand. Your SNES styled reworking looks great, by the way. Very true to ALTTP's 1991 art, haha.
#171
Bugs & Feature requests / Re: Complex movements
June 25, 2018, 06:59:12 PM
Quote from: Christopho on June 24, 2018, 08:10:02 PM
stdgregwar made an experimental script to make this kind of custscenes more easily: https://gitlab.com/solarus-games/zelda-mercuris-chest/blob/dev/data/scripts/maps/cutscene.lua
You can chain movements but also dialogs, pauses, etc.

This is a really cool script! it seems like it might make cutscenes easier to debug. Does anyone know what actions this can be used to preform? It gives the example of .wait(length of pause), and .dialog(dialog)

Would any method work if you use the right syntax? There's also an example of .hero_start_treasure(), would something like .map_create_enemy(enemy info) work? Or .game_set_ability("swim", 1)?
#172
I agree with Diarandor, it's very hard to give you feedback without seeing your code. Remember to post it using the words "code=Lua" at the beginning, inside brackets like this [ ], and at the end write "/code", also inside square brackets. When you call map:has_entity("clone") is your custom entity named clone?

Also, you asked for our opinion, and it's my opinion too that resetting the keyboard binding is an error-prone way to do this. It's like turning off your whole house's power instead of using a lightswitch.
#173
Alright. Well give me like a month or two and maybe a reminder and I'll look into it at least.
#174
What's your timeframe for this? I'm currently moving and my studio is in total disarray, but I've been meaning to look into getting a soundfont player working. Do you have the ALTTP soundfont?
#175
So, what you've done will work- but it does seem like it may cause problems down the line, it's maybe not the best way to do what you want. For example, what happens if someone makes a clone of themselves, then saves and quits the game before it's been removed? I think the item binding would still be nil. Does this cause problems when you create a clone and move immediately to another map?

I think a better way to do it would be before the animation of the item starts, just have it check map:has_entity("clone"), (or whatever unique name your code assigns the entity it creates) and if there is already a clone on the map, don't let it continue. This way, you can't create multiple clones on the same map, but it'd avoid a lot of potentially tricky situations.

Also, because I'm curious, how do you create the duplicate? Is it a custom entity or a block entity?
#176
Development / Re: How to make a debug mode?
June 21, 2018, 04:58:22 AM
Maybe post the code you have to make it easier to understand what you've done and where it isn't working. I also think the Solarus team has a debug mode code in some of their games, maybe look through their GitHub.

I think, even if you're not using game manager, the code sol.get_game = game might work to give you that data. But the main idea is to use game:on_key_pressed(key), and then if key == m, do your code. It might be quicker to code one key that adds a heart, then one key that subtracts a heart, rather than using the number keys. Plus then you could go above 9 hearts this way.
#177
Something else I thought of- there's a few games I've played (Metroid, Hollow Knight) that when transitioning between areas, have a room with no music. The rooms also visually transition between the spaces, and you could use map:on_started() in the transition room to get the music that was playing from a savegame variable, and fade it out, then in the first room of each area use map:on_opening_transition_finished to fade in music that you start silently on map:on_started.
#178
I've tackled similar problems this way:

I create a variable, "using_item", for example. This should probably be a variable local to the item's script, set it to false when the item is created. For the item:on_using() event, or the on_key_pressed, start it with the condition of if using_item ~= true. Then set the variable using_item to true first thing, and once you're done using the item (after a timer, or on_item_finished or whatever) set using_item back to false.

I think I might have some of the events referred to improperly here, but does the idea make sense?
#179
Quote from: CrookiNari on June 14, 2018, 01:26:03 PM
Holy hell how did I not even make a walking animation I feel so dumb
He still doesn't move like he should, kinda sliding upwards a bit before stopping, but there's no error messages this time.

I don't see any issues with your most recent code, so I'm guessing that sliding up a bit is caused by your walking and stopped animation sets having different origins. Origin is a value you set for every direction of a sprite, and for something simple like an NPC, I think the best practice is to set the origin's x value to half the sprite's width (right in the middle) and the y value to 3 px above the bottom of the sprite (generally, height - 3). I'm guessing that might be the problem because I've done that kind of mistake plenty of times.

In general, NPC sprites need a "stopped" and a "walking" animation, you can get away with just stopped if you know they'll never move. I'm pretty sure the engine wants those exact names if it's applying a movement to an NPC entity.

It's also important to make sure in a case like this where the NPC entity is a person, to have the option in the NPC's settings set to "someone", so the engine knows to apply special rules for how people move- for example, automatically calling the "walking" animation when they move, and making them face toward you when the hero speaks to them.


Finally, when you post code on the forums, it's helpful for us helping you if you do the first tag as "["code=Lua"]", with no quotation marks. For one thing, this adds line numbers, which are important for error messages.
#180
You've done more of a typo than a failure.

Code (Lua) Select

function map:on_started()
local movement = sol.movement.create("path")
  movement:set_path{4,4,4,4,4,0,0,0,0,0}
  movement:set_speed(20)
  movement:start(traveller_2)
end


If you understand Phoenixll54's commenents, the parentheses are just for something else, that's all. Once you've done some more practice, you'll understand the notation and won't make many more of these mistakes. You'll move onto bigger and harder to fix mistakes, like me, haha.


If you really don't want to do much coding though, maybe take that into consideration when you're designing what kind of game you want to make. If you're going to limit yourself to basic gameplay like walking and using the sword (I don't know if you'll have items if you aren't going to program), think about how you can make that interesting.

One approach is games like Firewatch, where because of a really interesting, intimate, and human story, the game is fun to play even though all you do is walk around, really. The beautiful art helps too. There are lots of ways to create and interesting game where you wouldn't have to program as much as a typical Zelda game, but you won't have anything like a typical Zelda game at the end. If you don't want to spend a long, possibly frustrating time teaching yourself to code, then you'll have to accept the limits of what you can do, and try to use those to your advantage to still create an interesting game.