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 - Renkineko

#61
Your projects / Re: My first video
August 04, 2014, 07:34:48 AM
The last room O.O Wonderful ! I love it, it's a little like I imagined a steampunk game with this engine :) Some remarks : does the ground slowling you is effective when you jump (i.e. can you save time by using jump all the time on this type of ground) ? The ennemy "death cloud" seems to go in the same direction your facing when he is on this type of ground, I suppose it's a bug and will be change sooner or later.

I have a remark close to what Christopho said : I used to have difficulties to see where was the exits of the room sometimes, because there is no really separator (graphically speeking) between some of them. Sometimes, I didn't know if it was the side of the full screen, a wall or an exit (particularly true for the rooms with the slowly ground).

Anyway, really great work.
#62
Bugs & Feature requests / Re: strange bug.
July 27, 2014, 09:33:18 PM
This bug has been fixed on the 1.2.0 version of the engine and 1.8 version of the quest. About the link between all the palaces, it's not a bug, but at this point of the game you are not supposed to get here :)
#63
Of course you can, but the graphism are licensed by Nintendo so you will not be able to sell your game. But that's what is done with the french tutorial : we reuse the same graphics.
#64
General discussion / A good pixel app online
June 24, 2014, 07:50:22 AM
A was stumble upon and I found this website, allowing you to create your own sprite quite easily. The interface is quite clear and simple, you can easily add new frame to your animation and you can preview all of this. You can export online or on your computer, as gif or png and with the detailed frame (one file per frame) or a complete spritesheet of what you done. I'm seduced by this web app, my only problem is I am such a bad graphist! :p

The link : http://www.piskelapp.com/

It's totally free and I hope it will help, as it's easier to use than Gimp (in my opinion). Of course, it's less powerful than Gimp but to make quickly some sprites, it's better (and once exported, you still can modify them on gimp :p).

Enjoy!
#65
Development / Re: Enemies examples
June 16, 2014, 07:24:05 AM
Nice scripts, I like them. I will share some of my enemies when they'll become enough debugged :p
#66
The set_speed(0) in the go_random troubles me. Plus, what's the point of "go_random" in your enemy:on_restarted, if you do "check_hero" right after ? These questions don't explain why there is the alternating move only the first time, at first see I don't see mistakes in code. Did you try to debug the moves with lot of "print" informations ? :) Or do you have a repo where I could try ?

About the compiled version, no there is no bin in git, you have to compile the sources yourself (and in windows it's a pain in the ass :p). There is a big big interest in compiling yourself : you can enable solarus as a "console application", and all your print are seen in real-time in the console (and are logged in error.txt as well).
#67
Separators have events called "on_activated(direction)" and "on_activating(direction)" ( http://www.solarus-games.org/doc/1.2/lua_api_separator.html#lua_api_separator_events ). The one you want to use is the on_activating, triggered when the separator begin the movement -> the enemies should have their positions reset before you can see them. An example to reset an enigma when you cross the separator : https://github.com/Renkineko/solarus-nrfh/blob/master/data/maps/hole_clearer.lua#L49 (here I don't check if all entities are in the same region because I always reset the enigma if it is not solved yet, but the idea is the same for you...)

So you can try to use this event with the "is_in_same_region" and "exists" method to know if the enemy must be reset. How do you know the initial position of enemy ? Array initiated at the map:on_started ? If yes, you can also delete elements from this array when enemy is killed, so you don't have to do the test "exists". Only "if enemy:is_in_same_region(hero) then reset_position(enemy) else stop_movement(enemy) end"

But to stop the enemies not in the same region, you also could just do


function enemy:on_position_changed()
if not enemy:is_in_same_region(hero) then
  movement:stop()
end
end


You can initiate this function specifically in the map if you don't want to generalize this behavior.

Because you want to stop enemies not in the same region AND you want to reset position for enemy where you enter, you also can do the hard way : foreach separator:on_activating, you reset position of enemies still alive, no matter if they are in the same region. With the mini function said just above, they will stop anyway if they are not in the same region.

Hope it helps.
#68
There is not as much people playing on the android app, and lesser using a ps3 controller on it... Maybe that's why you don't have lot of answers. But insulting the game is a good way to get one, so keep going :)

You will find in attachment a file that was on the french forum of the game, contains the mapping for sixaxis controller app. As said in this message, you past it on your phone at storage/emulated/0data/com/dancingpixelstudios.sixaxiscontroller/profiles and then you choose in "active touch profile" the option "zsdx", as shown in the pic...

But because I can't try myself (I don't have a rooted device, yeah I know I suck as well as the game, or wish I could), I can't guarantee you it will work. Hope you will survive anyway, else you can also play on your computer, and you will understand how much you are false about the quality of the game.
#69
Development / Re: Help: Enemy disappearing
March 24, 2014, 07:09:40 AM
You're welcome :) and yep I was referring the difficulty of the boss, but I knew you will update it when the script works properly, you can't modify an enemy if you can't test it first :p good luck o/
#70
Development / Re: Help: Enemy disappearing
March 20, 2014, 07:46:28 AM
Ok so I cloned your repository because I did not understand where the problem was, and I did a lot of printing everywhere. With this, I saw that you never enter in the function enemy:on_animation_finished. So after checking on the documentation, this event does not exist, you have to do the "on_animation_finished" on the sprite and not on the enemy :) so the good method should be something like :



function enemy:blink()
  self:set_attack_consequence("arrow", "protected")
  local sprite = self:get_sprite()
  sprite:set_animation("blinking")
 
  function sprite:on_animation_finished(animation)
    enemy:set_attack_consequence("arrow", "protected")
    sprite:set_animation("closed")
    sol.timer.start(enemy, random(6)*1000, function() enemy:open() end)
    enemy:go(64)
  end
end

function enemy:open()
  self:set_attack_consequence("arrow", 1)
  local sprite = self:get_sprite()
  sprite:set_animation("opening")
  function sprite:on_animation_finished(animation)
    enemy:set_attack_consequence("arrow", "protected")
    sprite:set_animation("walking")
    sol.timer.start(enemy, 1000, function() enemy:check_action() end)
  end
end


With this code, your enemy exists and is hell in a cell :p As I said : doing a lot of print everywhere can help to resolve the problem. For information, here is the file I had before knowing where the problem was :


local enemy = ...

-- Gohma: Boss who has to be shot in the eye with an arrow to be hurt

function enemy:on_created()
  self:set_life(9)
  self:set_damage(2)
  self:create_sprite("enemies/gohma")
  self:set_hurt_style("boss")
  self:set_size(64, 32)
  self:set_origin(32, 29)
  self:set_attack_consequence("sword", "protected")
  self:get_sprite():set_animation("walking")
  self:set_optimization_distance(0)
end

function enemy:check_action()
  local action = math.random(10)
  print('action : ', action)
  if self:get_life() > 6 then
    print('first phase, creating son')
    -- first phase: if less than three hits then mostly just move around (slowly), and create tektites
    local son_name = self:get_name().."_son"
    self:create_enemy{
      name = son_name,
      breed = "tektite_green",
      treasure_name = "heart"
    }
    if action >= 1 and action <= 7 then
      print('go somewhere')
      self:go(96)
    else
      print('will blink')
      self:blink()
    end
  elseif self:get_life() > 3 and self:get_life() <= 6 then
    -- second phase: if more than 3 but less than 6 hits then blink a lot more, and create tektites
    if action >= 1 and action <= 7 then self:blink() else self:go(96) end
    local son_name = self:get_name().."_son"
    self:create_enemy{
      name = son_name,
      breed = "tektite_green"
    }
  elseif self:get_life() < 3 and self:get_life() > 0 then
    -- final phase: if more than 6 hits then move a lot faster, and create tektites!
    if action >= 1 and action <= 6 then self:blink() else self:go(128) end
    local son_name = self:get_name().."_son"
    self:create_enemy{
      name = son_name,
      breed = "tektite_green"
    }
  end
  sol.timer.start(self, 100, function()
    print('open what, i do not know')
    self:open()
  end)
end

function enemy:go(speed)
  print('enemy go to ',speed)
  self:get_sprite():set_animation("walking")
  self:set_attack_consequence("arrow", 1)
  local m = sol.movement.create("random")
  m:set_speed(speed)
  m:set_max_distance(24)
  m:start(self)
end

function enemy:blink()
  print('enemy is blinking')
  self:set_attack_consequence("arrow", "protected")
  self:get_sprite():set_animation("blinking")
end

function enemy:open()
  print ('enemy is opening')
  self:set_attack_consequence("arrow", 1)
  self:get_sprite():set_animation("opening")
end

function enemy:on_restarted()
  print('enemy:restarting')
  self:get_sprite():set_animation("walking")
  self:check_action()
end

function enemy:on_obstacle_reached()
  print('oh, an obstacle...')
  self:check_action()
end

function enemy:on_animation_finished(sprite, animation)
  print('animation finished : ', sprite, animation)
  self:set_attack_consequence("arrow", "protected")
  if animation == "blinking" then
    print('animation was blinking, we will close')
    self:get_sprite():set_animation("closed")
    sol.timer.start(self, random(6)*1000, function() self:open() end)
    self:go(64)
  elseif animation == "opening" then
    print('animation was opening, we will walk')
    self:get_sprite():set_animation("walking")
    sol.timer.start(self, 1000, function() self:check_action() end)
  end
end


And the game was pretty chatty, so it can be useful :] Good luck for the boss settings.
#71
Development / Re: Help: Enemy disappearing
March 19, 2014, 07:14:31 AM
I don't see anything strange in your script... Think to print a lot when you are debugging to know exactly what is wrong. Can you show us the image for the sprite ? It may be a problem with the sprite declaration of the walking animation, but I suppose you double checked it...

Not related, but in you check action, you don't need to repeat the opposite if in you elseif statement... Like "if self:get_life() > 6 then ... elseif self:get_life() > 3 then ... else ...". It's just coding style, and if you think it's easier to read after it's ok but it's not useful in a programming way (in my opinion). In the same way, the creation of the sons in the check_action seems to be always true, so maybe not repeat this code ? I'm not sure to have read it correctly but that's how I understand the check action :)

Nice boss by the way ^^
#72
Bugs & Feature requests / Re: Editor improvements
February 04, 2014, 07:24:13 AM
Christopho will prefer to have several github issue, it's how he works and it keeps a trace of the development demands.


  • In my opinion, the X on each tab is not necessary (but indeed, it should exists :p), because you can close the tab with the middle button of the mouse.
  • Second demand is already here : https://github.com/christopho/solarus/issues/393
  • Agreed with the third.
  • Agreed too with the 4th.
  • Agreed too with the 4th.
  • About the 5th, maybe a tab system in the dialog ? But I don't see how to split informations...
#73
Development / Re: Dialog boxes in 1.1
October 18, 2013, 07:38:22 AM
Have you read the whole migration guide ? The dialog box has been completely changed and you have to slightly modify some portions of code. You can watch the video (only in french but you can still look at what is done in the code and what are the actions) to have a better idea of what you have to do to make the dialog works in the 1.1 version.

The problem of the empty box has been encountered in the video, around here. If you look at your error.txt, does it say "attempt to call method 'set_custom_command_effect' (a nil value)" ? If yes, you have to search in the code of the dialog box for this function and comment it, or create on your game an empty function 'set_custom_command_effect'.

Never forget to read the error.txt or precise if it's empty, it's THE file for debug ;)

Christopho will correct me if I'm wrong :)
#74
Okay I didn't see the "on_started_dialog" event, which is explicite. The example on the doc was with a boolean, which introduced me in error because it was the way to do it on the 1.0... Anyway, thanks for the answer :)
#75
Hi,

This morning I was thinking : In the case of a multiple answers question, like a
"Choose how many
bombs you would
like to buy
> 1 bomb
> 3 bombs
> 10 bombs"
Well here it's a silly example with the shop system in the game, but if you want to extrapolate on another style, you could have an enigma with a NPC asking :
"What is my name ?


>Bob
>Ganon
>Zelda"

You have the idea. Do you think it's possible to pass some value with dialog and not only "true" or "false". In the second case, you could even pass 2 false and 1 true because there is only one good answer, but still I don't think the actual engine enable this... Is there a trick or is it impossible to make more-than-2-answers-question ? In the second case, may I open an issue to enable 3 answers (or more, all depend of the size of the dialog box and the number of lines it can contain, so let's say N-answers) questions ?

I saw the menu option and it could fit, but that's not a dialog and in my example, there could be lot of text before the question is asked... So I'm not sure menu are really the good way to do it