Pause a script while player chooses key item

omnikeith

Veteran
Veteran
Joined
Jan 7, 2015
Messages
34
Reaction score
1
First Language
English
Primarily Uses
I'm making a farming script because the few I can find don't fit my needs and aren't very elegant or flexible. I was working on this script a long time ago but I put it down because I was having a bunch of problems. I've asked for help on this site before but I'm always met with a bunch of irrelevant information. I need an expert because if I can't figure it out it's either a very simple mistake or a huge hole that takes a professional to fix. I'm working with RPG Maker VX Ace. The code I'm working with is supposed to work as follows: You activate an event with the name 'farmland', it prompts you to select a key item, you select an item and it checks to see if that item has a note that looks like <seed 1> where the number can represent an array of seeds corresponding to the number, if the item you selected has the <seed> tag return the number after it and use that as the seed parameter, check some of the seed's parameters against the player such as level and required items, I have a timer running in the background that keeps track of days, hours, seasons, ect. after a set amount of time it updates all events 'event_timer' and 'anim_stages' functions. Once the timer (hours_until_full) equals the seed :timer param mark the crop as grown and allow the player to harvest the appropriate items from the event with another event activation.

Right now I'm having a problem where the script doesn't wait until the player selects the key item. It just continues on with the code and throws a bunch of errors.
Also there appears to be a problem where the item isn't being read as a seed even though it has the note <seed 1>

the code I have so far is as follows:

Code:
module FARM_PARAMS
 
  VARIABLE = 21
 
end

FARMING_OBTAINED_STRING = '"Obtained \\\i[#{item.icon_index}] #{item.name} x#{amount}."'
FARMING_GATHERFAIL_STRING = "Failed to gather resource."
FARMING_LOWLEVEL_STRING = '"Level #{node_data[:level]} required."'
FARMING_TOOLREQ_STRING = '"Tool \\\i[#{item.icon_index}] #{item.name} required."'

Plant = {
  #turnip
  1 => {:name => "Turnip",
        :item => [:item,17,[1,4]],
        :level => 1,
        :timer => 1,                      #in-game hours until grown
        :base_chance => 75,
        :max_chance => 100,
        :chance_mod => 5,
        :graphic => ["$Turnip",0],
        :sound => ["Jump1",75,1,3]},
        :persist => "false",
        
}



class Game_Event
  alias farm_update update
  alias gather_start start
  alias farm_init setup_page
  def setup_page(*args)
    farm_init(*args)
    @empty_plot = true
    @days_to_grow = 0
    @hours_until_full = 0
    @plant_id = 0
  end
 
  def event_timer(rate)
    if farm_data != nil
      @hours_until_full += rate if @hours_until_full < farm_data[:timer].to_i
      return farm_data[:timer].to_i - @hours_until_full
    else
      return 0
    end
  end
 
  def farmland
    @event.name.include?("Farmland")
  end
 
  def farm_data
    Plant[@plant_id]
  end
 
  def start
    farmland ? farm_start : gather_start
  end
 
  def grown?
    if event_timer(0) <= 0 && @empty_plot == false
      return true
    else
      return false
    end
  end
 
  def anim_stages
    if farm_data != nil
      if @days_to_grow < farm_data[:timer].to_i / 4
        @days_to_grow = 0
        if @dir < 8
          @dir += 2
        end
        @direction = dir
      end
    end
  end
 
  def farm_start
    if @empty_plot == true
      $game_message.add("What would I like to plant?")
      $game_message.item_choice_variable_id = FARM_PARAMS::VARIABLE
      return false if !Check_Seed?
    end
    if grown?
      $game_party.gathering = true
      if gather_success
        item_d = farm_data[:item]
        item = $data_items[item_d[1]] if item_d[0] == :item
        item = $data_weapons[item_d[1]] if item_d[0] == :weapon
        item = $data_armors[item_d[1]] if item_d[0] == :armor
        msgbox("Invalid item category") unless item
        amount = rand(item_d[2][1] - item_d[2][0]) + item_d[2][0]
        $game_party.gain_item(item,amount)
        $game_message.add(eval(FARMING_OBTAINED_STRING))
      end
      if farm_data[:sound]
        farm_data[:sound][2].times do |i|
          Audio.se_play("Audio/SE/" + farm_data[:sound][0],farm_data[:sound][1])
          node_data[:sound][3].times do |i|
            Graphics.update
            SceneManager.scene.update
          end
        end
      end
      $game_party.gathering = false
    end
  end
  def Check_Seed?
    item = $data_items[$game_variables[FARM_PARAMS::VARIABLE]]
    if item != nil
      tag, id = item.note =~ /^<(seed) (\n)>/ ? [true, $1] : [false, nil]
      if tag
        @plant_id = id
        if @plant_id != 0
          return no_tool if !carrying_tool?
          return no_level if farm_data[:level] > $game_party.highest_level
          #persist = farm_data[:persist].to_s == 'true' ? true : false
          graphic = farm_data[:graphic]
          @character_name = graphic[0]
          @character_index = graphic[1]
          @days_to_grow = 0
          @dir = 8
          @direction = dir
          @empty_plot == false
          $game_message.add(farm_data[:name].to_string + " planted.")
        end
        return true
      else
        $game_message.add("This item isn't a seed")
        @plant_id = 0
      end
    else
      $game_message.add("No seed selected.")
      return false
    end
  end
  def carrying_tool?
    if plant_id != nil
      item_d = farm_data[:tool]
      return true if item_d.nil?
      item = $data_items[item_d[1]] if item_d[0] == :item
      item = $data_weapons[item_d[1]] if item_d[0] == :weapon
      item = $data_armors[item_d[1]] if item_d[0] == :armor
      return $game_party.has_item?(item)
    end
  end
  def unerase
    @erased = false
    refresh
  end
  def erased?; @erased == true; end
  def event_id; @id; end
  def no_level
    $game_message.add(eval(FARMING_LOWLEVEL_STRING))
  end
  def no_tool
    if plant_id != nil
      item_d = farm_data[:tool]
      item = $data_items[item_d[1]] if item_d[0] == :item
      item = $data_weapons[item_d[1]] if item_d[0] == :weapon
      item = $data_armors[item_d[1]] if item_d[0] == :armor
      $game_message.add(eval(FARMING_TOOLREQ_STRING))
    end
  end
  def gather_success
    if plant_id != nil
      empty_plot = true
      chance = farm_data[:base_chance]
      chance += farm_data[:chance_mod] * ($game_party.highest_level - farm_data[:level])
      chance = [chance,farm_data[:max_chance]].min
      if rand(100) < chance
        return true
      else
        $game_message.add(FARMING_GATHERFAIL_STRING)
        return false
      end
    end
  end
end

class Game_Map
  alias farm_set setup_events
  alias farm_up update_events
  def setup_events
    farm_set
    @events.each_value do |event|
      next unless event.farmland
      event.erase if event.event_timer(0) > 0
    end
  end
  def update_events
    farm_up
    @events.each_value do |event|
      next unless event.farmland && event.erased?
      event.unerase if event.event_timer(0) == 0
    end
  end
end

class RPG::BaseItem
  def ==(object)
    return false if object.nil?
    self.name == object.name && self.id == object.id && self.note == object.note
  end
end
 

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
40,098
Reaction score
13,704
First Language
English
Primarily Uses
RMMV
I haven't had a good look through your script (not a lot of time), but I suspect a lot of it would be better off done with event commands.

You've got a lot of messages being added, but you have no waiting for those messages to be displayed. Choices and selection of key items are the same - Game Interpreter (and Game Message) have code that waits for the user input, so if you're bypassing the event commands that trigger that waiting, you need to add it yourself.
 

omnikeith

Veteran
Veteran
Joined
Jan 7, 2015
Messages
34
Reaction score
1
First Language
English
Primarily Uses
I'm not bypassing any wait commands, I'm simply calling a
$game_message.item_choice_variable_id and assigning it to a
$game_variables. Unfortunately you can't be of much help unless you read the script. Please anyone willing to help: Read my post in it's entirety including the script. If it needs explaining I can help you figure out what a part of the code does and I am aware that some of the code I've written isn't necessary.
 

omnikeith

Veteran
Veteran
Joined
Jan 7, 2015
Messages
34
Reaction score
1
First Language
English
Primarily Uses
Okay, first thing's first. I need to have the script wait for input from the player. I've used the code as follows when the player activates the event:

Code:
$game_message.add("What would I like to plant?")
$game_message.item_choice_variable_id = 21
My problem is the game continues running the script and it checks if an item is selected before the player has a chance to select an item.

I need the script to wait until the player selects an item but it should already do that because I traced back the code tree and it has a bit of code in the $game_message script that yields until a player makes a selection. I've tried making a loop do function to check for the item selection and halt the code until the game variable has a value but that just freezes the game. could someone please tell me how to stop the code from progressing but still allow the player to make their choice and continue one a choice or no choice has been made.
 

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
40,098
Reaction score
13,704
First Language
English
Primarily Uses
RMMV
I'm not bypassing any wait commands
I need to have the script wait for input from the player
So you ARE bypassing wait commands, just as I said. You're adding messages and choices, outside of the interpreter, but you're not doing what the interpreter does to wait for a response to those choices.

Unfortunately you can't be of much help unless you read the script. Please anyone willing to help
wow!

1. I did say I didn't have a lot of time, yet I was spending the little time I did have helping you. I could have spent it doing something else.
2. I am the ONLY one who has helped you in this thread to this point.
3. I DID help you, because your latest post is specifically asking for help with the one thing I said was missing from your script (so apparently it's NOT necessary to read the entire script).

The correct response would have been "thank you".

I'm sorry that my leading you straight to what was missing wasn't good enough for you. I hope someone else comes along who can assist you correctly, and I hope you show a bit more appreciation for their time and effort. I will go look elsewhere for people needing assistance.
 
Last edited:

omnikeith

Veteran
Veteran
Joined
Jan 7, 2015
Messages
34
Reaction score
1
First Language
English
Primarily Uses
Okay, 1: I didn't know that by calling the $game_message.item_choice_variable_id it bypassed the yield commands because I thought they were hard coded in. I knew the entire time it wasn't waiting for the command to resolve. I just don't know how to make it wait.
2: What I want to do obviously can't be done without script. If I were to use the built in logic buttons it would be completely inflexible and take forever to make just one event and every time you left the map it would reset the event.
3: I'm new to ruby so I don't know all the lingo. I'm not sure what you mean by event commands, or Game Interpreter. I think you mean the logic buttons they give you in the gui.
4: I didn't mean to be rude I'm just frustrated because all the post I make just get responded to with vague comments that don't help at all.
5: I'm looking for a specific fix not a general nudge in a direction. I'm posting on this site because I've exhausted all my other resources and need a specific answer to an exact question.

I know you said you didn't have time to read my post but if that is truly the case then what's the point of responding. Thank you for talking to me but I would really like someone to read my post and give me an answer. I know exactly what's wrong, I just don't know how to fix it and I can't find it in my books or online.
 

omnikeith

Veteran
Veteran
Joined
Jan 7, 2015
Messages
34
Reaction score
1
First Language
English
Primarily Uses
So, I figured out with some research that I need to call Fiber.yield but i can't call it from an event. is there a way around this?

I saw this script but I'm not sure how it works and how to implement it to my script.

Code:
class MyObj
  def call_yield
    print "Prepare to Yield"
    Fiber.yield
    print "Resumed"
    @fiber = nil #Destroy the fiber when done
  end
  def create_fiber
    @fiber = Fiber.new { call_yield }
  end
  def update
    @fiber.resume
  end
end

obj = MyObj.new
obj.call_yield #=> Cannot yield from root fiber
obj.create_fiber #=> @fiber is created, nothing happens.
obj.update #=> "Prepare to Yield"
obj.update #=> "Resumed"
 

Another Fen

Veteran
Veteran
Joined
Jan 23, 2013
Messages
564
Reaction score
275
First Language
German
Primarily Uses
Hey there,

First, I haven't really looked into your script either, so I can't tell exactly how it's supposed to work right now. But from what I understand your main concern is how to make a process run parallel to the rest of the game, and if that's the case you probably don't need Fiber.yield.

In general, the game works in update cycles. Each frame the display, input and all objects relevant to the current scene are updated. To fit your process into that you probably have to do two steps: Split your process into one-frame-chunks. Ideally you end up with an update method that processes one frame worth of stuff each time it is called. If you have to wait for the players input or another condition, your update method would just do nothing if the condition is not yet fulfilled.
After that you can call your new method from the update method of the respective scene.


Fibers are indeed a comfortable method to split your process up. As in your example above, a fiber holds a block of instructions that it can execute in multiple steps (in your case that block just consists of call_yield ).
Each time you resume a fiber, it will execute its block until it is paused by Fiber.yield . The next time you resume the fiber, it will have remembered where it last stopped and continue from there. In your example you'd have to resume the fiber twice to complete the block.

You can only use Fiber.yield to split up the block the fiber executes, you can't use it to remotely stop a fiber that isn't even running.

Even though fibers are comfortable, they have the downside that you can't save them (or their current state) in a savefile, which unfortunately makes them unfit for many applications. In this case you probably have to rely on instance variables to remember the current state of your process between each upate.


To add your update method to the update cycle, you have to figure out where it would fit best. If you want your process to be updated with the rest of the events, Game_Map#update would probably be a fitting place. In general there are multiple scenes for different locations of your game, mainly for the map screen, the battle screen and different menus, and often you want your process to be paused and not be updated during most of them.

This post might be a bit rushed, hope this still helps a bit.
 
Last edited:

omnikeith

Veteran
Veteran
Joined
Jan 7, 2015
Messages
34
Reaction score
1
First Language
English
Primarily Uses
Thanks for trying. But you have what I want wrong. I have a key items choice menu appear in my script but i need a way to wait until the player makes a selection before processing the decision. I had the same thought about an update call that checks for the decision to be made every frame but it still isnt functioning the way I want it. I tried to set a variable in the update if the player makes a choice but for some reason the variable never changes. I've tried a couple different ways but as far as I can tell a local event variable set in the update doesnt register in the event triggered code.
 

Another Fen

Veteran
Veteran
Joined
Jan 23, 2013
Messages
564
Reaction score
275
First Language
German
Primarily Uses
Sorry for the late response.

As already mentioned, if you want to script anything that is not supposed to be completely executed in a single frame you usually need separate method calls. Unless you want to pause the rest of the game while the player is choosing, you have to give the control back in order to let the rest of the game update. Calling SceneManager.scene.update does not work here as this would probably end up in both update methods continuously calling each other without any invocation ever finishing.

(Apart from that you should be careful too when actively using SceneManager.scene in your script. Keep in mind that when switching scenes this might already return the new, yet uninitialized scene that the game will switch to after the current update cycle is completed.)


Another note about Fiber.yield , in case I got you wrong:
You should be able to call it through an event script command, since event execution is handled in a Fiber. However, if you are executing the event from within your own fiber this also means that Fiber.yield will probably only yield the "inner" fiber controlling the event, not the fiber surrounding it.


I can't tell why your attempts using the update method haven't worked so far of course, but something like this would be supposed to work for example:
Code:
class Game_Event
 
  def farm_start
    if @empty_plot
      $game_message.add("What would I like to plant?")
      $game_message.item_choice_variable_id = FARM_PARAMS::VARIABLE
      # <<< Wait for Player Input here >>>
      return false  if !Check_Seed?
    end
    # ...
  end
end
Original code. You probably cannot stay in the method while waiting for the player, so the method could be split:
Code:
class Game_Event
 
  def farm_start
    if @empty_plot
      $game_message.add("What would I like to plant?")
      $game_message.item_choice_variable_id = FARM_PARAMS::VARIABLE
      @wait_for_item = true  # Start waiting for Player Input
      return                 # Can't tell if successful at this point
    end
    # ...
  end
 
  alias_method(:update_with_some_alias_name, :update)
  def update
    update_with_some_alias_name
    # Update waiting for Player Input:
    if @wait_for_item && !$game_message.busy?
      @wait_for_item = false
      if Check_Seed?
        # ...
      end
    end
  end
end
Depending on how you use the script, it might be a good idea to also wait for the message window to become available before setting your message up.

Hope this helps.
 

TheoAllen

Self-proclaimed jack of all trades
Veteran
Joined
Mar 16, 2012
Messages
5,592
Reaction score
6,522
First Language
Indonesian
Primarily Uses
RMVXA
I have successfully made a "pseudo" pause by using "Graphics.update" and "Input.update" all together with some lines. I'm on the same boat as Shaz, don't have much time reading your script, and understanding the whole. But if your question is simply to ask
Code:
line of code
line of code
<--- how can I put a pause here before proceeding? --->
line of code
line of code
I probably have a solution.

First, create a pseudo wait. For example, create a new method in Scene_Map
Code:
class Scene_Map
  def waiting_for_input
    Graphics.update
    Input.update
    # Extra update here
  end
end
The extra update you could fill it with anything. But since you use game message, so what you need to put in there is @message_window.update. You could even put more like @spriteset.update and $game_map.update if you don't wish the map to be paused.

How you gonna put this as a pseudo wait? Use this
Code:
line of code
line of code
SceneManager.scene.waiting_for_input until inputted?
line of code
line of code
Where "inputted?" is a condition check to break the pause loop. Hope this give the hint.
 

omnikeith

Veteran
Veteran
Joined
Jan 7, 2015
Messages
34
Reaction score
1
First Language
English
Primarily Uses
Thank you so much TheoAllen. THe bit of code you posted worked and I got my script almost working. I have a couple more issues I need to fix like why my event local variables reset when I leave the map but I'm super sick right now so I'll work on this more when I feel better. All in all, I made a ton of progress.

The barely working code is as follows for anyone to look at:
Code:
module FARM_PARAMS
 
  VARIABLE = 21
 
end

FARMING_OBTAINED_STRING = '"Obtained \\\i[#{item.icon_index}] #{item.name} x#{amount}."'
FARMING_GATHERFAIL_STRING = "Failed to gather resource."
FARMING_LOWLEVEL_STRING = '"Level #{farm_data[:level]} required."'
FARMING_TOOLREQ_STRING = '"Tool \\\i[#{item.icon_index}] #{item.name} required."'

Plant = {
  #turnip
  1 => {:name => "Turnip",
        :item => [:item,17,[1,4]],
        :level => 0,
        :timer => 3,                      #in-game hours until grown
        :base_chance => 75,
        :max_chance => 100,
        :chance_mod => 5,
        :graphic => ["$Turnip",0],
        :sound => ["Jump1",75,1,3]},
        :persist => "false",
        :tool => nil,
        
}

class Scene_Map
  def waiting_for_input
    Graphics.update
    Input.update
    @message_window.update
    # Extra update here
  end
end

class Game_Event
  alias farm_update update
  alias reg_start start
  alias farm_init setup_page
  def setup_page(*args)
    farm_init(*args)
    @empty_plot = true
    @days_to_grow = 0
    @hours_until_full = 0
    @plant_id = 0
  end
 
  def event_timer(rate = 0, reset = false)
    if reset == true
      @hours_until_full = 0
    end
    if farm_data != nil
      @hours_until_full += rate if @hours_until_full < farm_data[:timer].to_i
      return farm_data[:timer].to_i - @hours_until_full
    else
      return 0
    end
    
  end
 
  def farmland?
    return @event.name.include?("Farmland")
  end
 
  def farm_data
    Plant[@plant_id]
  end
 
  def start
    farmland? ? farm_start : reg_start
  end
 
  def grown?
    if event_timer <= 0 && @plant_id != 0
      return true
    else
      return false
    end
  end
 
  def anim_stages
    if farm_data != nil
      @days_to_grow += 1
      if @days_to_grow >= (farm_data[:timer].to_i / 3)
        @days_to_grow = 0
        if @dir < 8
          @dir += 2
        end
        @direction = @dir
      end
    end
  end

  def farm_start
    if !@empty_plot && !grown?
      $game_message.add(farm_data[:name] + " is growing here")
    end
    if @empty_plot
      $game_message.add("What would I like to plant?")
      $game_message.item_choice_variable_id = FARM_PARAMS::VARIABLE
      
      SceneManager.scene.waiting_for_input until $game_variables[FARM_PARAMS::VARIABLE] != 0
      
      if Check_Seed?
        $game_message.add("planted")
        @empty_plot = false
      end
      $game_variables[FARM_PARAMS::VARIABLE] = 0
    end
    
    if grown?
      if gather_success
        item_d = farm_data[:item]
        item = $data_items[item_d[1]] if item_d[0] == :item
        item = $data_weapons[item_d[1]] if item_d[0] == :weapon
        item = $data_armors[item_d[1]] if item_d[0] == :armor
        msgbox("Invalid item category") unless item
        amount = rand(item_d[2][1] - item_d[2][0]) + item_d[2][0]
        $game_party.gain_item(item,amount)
        $game_message.add(eval(FARMING_OBTAINED_STRING))
      end
      if farm_data[:sound]
        farm_data[:sound][2].times do |i|
          Audio.se_play("Audio/SE/" + farm_data[:sound][0],farm_data[:sound][1])
          farm_data[:sound][3].times do |i|
            Graphics.update
            SceneManager.scene.update
          end
        end
      end
      @plant_id = 0
      @empty_plot = true
      event_timer(0, true)
    end
    
  end
 
  def Check_Seed?
    item = $data_items[$game_variables[FARM_PARAMS::VARIABLE]]
    if item != nil
      if item.note.match( /seed (\d{1})/ )
        id = item.note.match( /seed (\d{1})/ ).values_at( 1 )[0]

        @plant_id = id.to_i
        if !carrying_tool?
          item_d = farm_data[:tool]
          item = $data_items[item_d[1]] if item_d[0] == :item
          item = $data_weapons[item_d[1]] if item_d[0] == :weapon
          item = $data_armors[item_d[1]] if item_d[0] == :armor
          $game_message.add(eval(FARMING_TOOLREQ_STRING))
          return false
        elsif farm_data[:level] > $game_party.highest_level
          $game_message.add(eval(FARMING_LOWLEVEL_STRING))
          return false
        else
          #persist = farm_data[:persist].to_s == 'true' ? true : false
          @graphic = farm_data[:graphic]
          @character_name = @graphic[0]
          @character_index = @graphic[1]
          @dir = 2
          @direction = @dir
          $game_party.lose_item(item, 1)
          return true
        end
      else
        $game_message.add("This item isn't a seed")
        @plant_id = 0
        id = 0
        return false
      end
    else
      return false
    end
  end
 
  def carrying_tool?
      item_d = farm_data[:tool]
      return true if item_d.nil?
      item = $data_items[item_d[1]] if item_d[0] == :item
      item = $data_weapons[item_d[1]] if item_d[0] == :weapon
      item = $data_armors[item_d[1]] if item_d[0] == :armor
      return $game_party.has_item?(item)
  end
    
  def event_id; @id; end
    
  def no_level
    $game_message.add(eval(FARMING_LOWLEVEL_STRING))
  end
 
  def no_tool
    item_d = farm_data[:tool]
    item = $data_items[item_d[1]] if item_d[0] == :item
    item = $data_weapons[item_d[1]] if item_d[0] == :weapon
    item = $data_armors[item_d[1]] if item_d[0] == :armor
    $game_message.add(eval(FARMING_TOOLREQ_STRING))
  end
 
  def gather_success
    chance = farm_data[:base_chance]
    chance += farm_data[:chance_mod] * ($game_party.highest_level - farm_data[:level])
    chance = [chance,farm_data[:max_chance]].min
    if rand(100) < chance
      return true
    else
      $game_message.add(FARMING_GATHERFAIL_STRING)
      return false
    end
  end
end
 

TheoAllen

Self-proclaimed jack of all trades
Veteran
Joined
Mar 16, 2012
Messages
5,592
Reaction score
6,522
First Language
Indonesian
Primarily Uses
RMVXA
About that, I'm afraid that you have to change almost the entire of your script, at least, not to put inside the Game_Event, because the event object changes once you transferred to the other map.

To make your custom data persist after the transfer map, you need to put them in an object that does not change after the transfer map. Game_Map resets the event each time you transfer map, so obviously Game_Event is the worst place to store data.

Instead, you could try to store your data in other object (or create a new one) and use Map ID and event ID as the key. One of the example you could try is to look at how self switches are being handled. They obviously not stored inside the Game_Event, but they are stored separately in an object $game_self_switches, and put it in save contents (DataManager line 215)

So, if you want to keep your farming variables persist, go try to move your variables into a different object. This might need a lot of work after seeing what you've done in Game_Event though. Good luck with that
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??
Yay, now back in action Happy Christmas time, coming back!






Back in action to develop the indie game that has been long overdue... Final Fallacy. A game that keeps on giving! The development never ends as the developer thinks to be the smart cookie by coming back and beginning by saying... "Oh bother, this indie game has been long overdue..." How could one resist such? No-one c

Forum statistics

Threads
105,857
Messages
1,017,018
Members
137,563
Latest member
MinyakaAeon
Top