Zetu's Noob Guide to Scripting in RPG Maker

Zetu

Level 99 Stabomancer
Veteran
Joined
Apr 28, 2012
Messages
247
Reaction score
99
First Language
English
Primarily Uses
N/A
Zetu’s Noob Guide to Scripting in RPG Maker
 
 
Introduction:
Welcome to Zetu’s Noob Guide to Scripting. For this tutorial, I will be using RPG Maker VX Ace. You may be using older versions of RPG Maker, which is fine until we get into the specifics of RGSS3. Open up a fresh new project and make sure that "Game" -> "Show Console" is checked. Open up Script Editor (F11) and insert a new line under "Materials". This will be where you will be adding code for testing.
 
The simplest command in Ruby is the "puts" command. It simply puts out a line of text, as you indicate. Copy and Paste the following line in the Script Editor and run the project.

puts "Hello World"If you did everything correctly, you should see a window, which should look like the following.
 

 
Variables and Types:
Numbers:
Ruby supports two types of numbers, Integers and Floating Point Numbers. These are not the only two types, but these will be the ones we will be using for this tutorial, as they are the ones used 99.9% of the time. To define an integer, using the following syntax:

myinteger = 3To define a float, you may use one of the following...

myfloat = 3.0myfloat = 3.to_f # to_f converts a value to a float 
Strings:
Strings are defined either by being encased in single quotes or double quotes.

mystring = 'hello'mystring = "hello"There are a few differences between the two declarations. For example, if you have a string in single quotes, you may easily and double quotes within the string, and vise versa...

"my 'string' here"'my "string" here'"This don't break the string" #String is not broken'Don't this break the string?" #String IS broken 
Operators:
An operator is a expression or function. For example...

one = 1two = 2puts one#=> 1puts two#=> 2puts one + two#=> 3If you copy and paste the above code into your project, you can see that the "+" operator performed a simple addition, getting 3 from 1+2. Make sure you using matching types when adding together. Try running the following code...

puts 1 + "A"#=> Script line 1: TypeError occurred. String can't be coerced into Fixnum.Arithmetic Operators:
Addition "+"
Subtraction "-"
Mutliplication "*"
Division "/"
Exponential "**"
Modulo "%"
 
Arrays:
An array is a collection of variables. Arrays are used when you need more than one value stored in a single space. For example...

myinteger = 3myintegers = [1, 2, 3]The 'myinteger' variable has a single number 3, whereas 'myintegers' variable has three numbers, 1, 2, and 3. In order to obtain a number at a particular position in the array, use the "[]" method, putting the position in the braces, starting with 0 being the first.

array = [1, 4, 9]puts array[0]#=> 1puts array[1]#=> 4puts array[2]#=> 9puts array[3] #Note, this is outside of the limit of the array#=> Note that the addition operator can be used to combine arrays.

evens_digets = [0, 2,4,6,8]odd_digets = [1,3,5,7,9]all_digets = even_digets + odd_digetsputs all_digets#=> 0 2 4 6 8 1 3 5 7 9String Formatting:
The "%" operator is used to format variables enclosed in a list into a string. Two of the common operators for this are the %s and %d, which represents string and number respectively. Here is an example, before we break down how to use this operator.

# The following puts "Hello, Zetu!"name = "Zetu"puts "Hello, %s!" % name # The following puts "Zetu is 26 years old."age = 26print "%s is %d years old." % [name, age]Here are a few basics you should review...

%s - String (or any object with a string representation, like numbers)%d - Integers%f - Floating point numbersString Operations:
As you have learned above, a String is a series of characters. There are a few operations that are useful for strings...

astring = "Hello!"# The following gives the character length of the Stringputs astring.length#=> 6# The position, or index of the character (0 being the first.)puts astring.index("o")#=> 4# The amount of times a substring occurs in the given string.puts astring.count("l")#=> 2# Gives a substring, from index to index.puts astring[3,5]#=> lo!# An all caps or all lowercase version of a string.puts astring.upcase#=> HELLO!puts astring.downcase#=> hello!Conditions:
Boolean has two different values... TRUE or FALSE. Each one is a different class (TrueClass, FalseClass). There are operators that return a boolean value. Here are a few examples...

x = 2# The == operator checks if a value is an exact match.puts x == 1#=> falseputs x == 2#=> trueputs x == 3#=> false# The > operator checks if a value is greater than.puts x > 1#=> trueputs x > 2#=> falseputs x > 3#=> false# The < operator checks if a value is less than.puts x < 1#=> falseputs x < 2#=> falseputs x < 3#=> true# The >= operator checks if a value is greater than or equal to.puts x >= 1#=> trueputs x >= 2#=> trueputs x >= 3#=> false# The <= operator checks if a value is less than or equal to.puts x <= 1#=> falseputs x <= 2#=> trueputs x <= 3#=> true# The == can be used with data types other than numbers.puts "ABC" == "ABC"#=> true# The include? method checks if an array includes any match.puts [1,2].include?(3)#=> falseputs [1,2,3].include(3)#=> trueIndentation:
Just as a side note: when programming. This is to indicate how some lines of code are grouped together. Each indentation is considere a block of code. Most blocks are ended with "end".x = 

if a line starts with "if, def, class, while, until, begin, module, ect..." it will indent the next lineelse you may notice some lines indent inwards in theendThe "if" operator checks a condition, creating a new block of code that only runs if the condition is met.

x = 3if x == 3 puts "This string will appear in the console."endif x != 3 puts "This string will not appear in the console."endThe "else" statement checks for when the condition was not met.

x = 3if x == 3 puts "This string will appear in the console."else puts "This string will not appear in the console."end Loops:
Loops is a method that iterates give code in sequence.

odd_digets = [1,3,5,7,9]odd_digets.each do |n| puts n #=> 1 3 5 7 9endEach type of loop creates a block indentation. Here is a few more examples.

# The "times" operator creates a loop, where it iterates itself that many# times, counting up from 0 each time.5.times do |n| puts n #=> 0 1 2 3 4end# A range is defined by two numbers. (X..Y) is each number, from X to Y,# including themselves.(3..6).each do |n| puts n #=> 3 4 5 6end# A range defined by (X...Y) is the same as (X..Y), except that it does# not include Y itself.(3...6).each do |n| puts n #=> 3 4 5endA while loop will repeat itself as long as a condition is true.

puts x = 12while x != 1 # Run as long as X is not if x % 2 == 0 # If X is an even number puts x = x / 2 else # If X is an odd number puts x = x*3 + 1 end #=> 12 6 3 10 5 16 8 4 2 1endFrom inside loops, the "break" and "next" statements will alter the flow of the code. Next causes the loop to start the next iteration, while Break cancels it completely.

Code:
x = 10while true  x = x - 1  if x % 2 == 0 # If X is an even number    next # Skip the rest can continue  end  puts x  #=> 9 7 5 3 1  if x == 1 # If X is equal to 1    break # Exit the loop.  endend
 
Last edited by a moderator:

Zetu

Level 99 Stabomancer
Veteran
Joined
Apr 28, 2012
Messages
247
Reaction score
99
First Language
English
Primarily Uses
N/A
Part One of my series to introduce scripting for RPG Makers. Please let me know if you have any questions or want me to expand on a particular section.
 

cabfe

Cool Cat
Veteran
Joined
Jun 13, 2013
Messages
2,353
Reaction score
2,549
First Language
French
Primarily Uses
RMVXA
I already knew about the "super" method, but maybe you could precise that it is using the original method set in the parent class?

I guess people reading your example script would eventually understand, but some may be puzzled by this method (I remember that I was the first time I saw this in a script).
 

Nirwanda

Procrastimancer
Veteran
Joined
Nov 2, 2012
Messages
1,285
Reaction score
604
First Language
Spanish
Primarily Uses
RMMV
This seems pretty interesting and I like your general approach but, just like cabfe said, I fear your casual use of "technical" terms might be a little confusing and overwhelming to the complete noob. Maybe you could add a little dictionary at the end of you post to explain them? Or are you going to elaborate on this in a later post?
 

Lemur

Crazed Ruby Hacker
Veteran
Joined
Dec 1, 2014
Messages
106
Reaction score
124
First Language
English
Primarily Uses
I'll just go through piece by piece. I'll underline sections I'll mention after the tutorial segment, and put my comments in red (apparently I've exceeded the quote limit. I guess that's a thing.

Introduction:

Welcome to Zetu’s Noob Guide to Scripting. I know you’re excited to immediately turn on RPG Maker and hack away, but there are some concepts that you need to be aware of first. You cannot start programming before you know the concepts of programming. Then, you must learn the basics of the language used, in this case, being Ruby.

I'd reword that one, as is it has some redundancy and sentence fragments. Really, cut down any extraneous details or prose, which would be most of the above section.

Object Oriented Programming:

The first thing you need to know about Object Oriented Programming is, of course, objects. Take a look around you, and see what you see. A chair? A Bookcase? A Bed? These are all real life objects.

Careful there, Objects aren't often taught until your second semester of university programming in the states. It's not a concept you want to start with. Instead start with basics such as strings, arithmetic, arrays, methods, blocks, and basic IO. You should really consider reading a few introductory ruby tutorials to get a grasp on what beginner means, this is way too advanced for a proclaimed 'n00b.'

In the same sense, objects in programming are the same. Each object has both Methods and Fields.

They don't know what a method is, I can guarantee you that. What in the world is a field? You probably mean attribute, but that entire sentence is extremely misleading.

Let us consider a Bicycle as an object. A method can be Changing Gears, Applying the Brakes, Turning the handle, ect. A field could be the Bike’s current speed, the wheel’s rotations per minute, what gear the bike is in, ect. Methods can alter fields. For example, Applying the Brakes can reduce the Bike’s current speed until it is reduced to 0 mph.

Again, field isn't in the vernacular of OO programming. This feels run on as well. (Do note it's etc, not ect.)

A class is the blueprints of an object. Each class contains predefined methods that affect an object. Let’s create a Bicycle, as explained above. Do not worry about understanding everything that is being done in the following example, just the core concept.

Except they will worry about it. You basically skiffed over the concept of inheritance as well, even if you did defer it til later, which is definitely too advanced for newbies. In this next section I'll add comments to the code you wrote as well.

class Bicycle # Why do you need constants here? They don't make sense. Instead, add default values to # your constructor, which I'll detail below FRAME_RATE = 60 TOP_SPEED  = 15.0 # You really should be using accessor methods here, which again would # make this more advanced. # Instead of the constants, add arguments to this: # def initialize(gear = 1, speed = 0.0, acceleration = 0.0, distance_traveled = 0.0, frame_rate = 60, top_speed = 15.0) # @gear = gear # @speed = speed # @acceleration = acceleration # @distance_traveled = distance_traveled # @frame_rate = frame_rate # @top_speed = top_speed # end def initialize  @gear = 1  @speed = 0.0  @acceleration = 0.0  @distance_traveled = 0.0 end def update  @speed += @acceleration / FRAME_RATE  @speed = [@speed, TOP_SPEED].max  @distance_traveled = @speed / FRAME_RATE # You mean +=? Otherwise they're not getting too far. end # spelling here, and wouldn't it be better to allow variable increases? def pedtal_harder  @acceleration += 1.0 end # No no, use ``attr_accessor :gear`` up top, this method isn't necessary and looks like Java def set_gear(g)  @gear = g endendAfter you are familiar with classes, the next thing you need to learn is inheritance.They're not, you skiffed over it too fast and didn't even explain instantiation of objects using new.

In practical terms, not all objects are independently unique. Let us take Apples, Oranges, and Bananas, for instance. Each of these are different, but have a very important similarity—they are all fruit. For this reason, you may call Fruit an object, and each type of Fruit can inherit traits from the Fruit class. Let’s show an example of an Apple and Banana class being extended from the Fruit class.

Abstract classes and extensions are moving way too fast.

# Put spaces between your methods, they're hard to read like that.class Fruit def initialize(bites_left)  @bites_left = bites_left # No validation? What if they give you a string? A number less than 0?  @pealed = false end # You don't need return in ruby, this can be rewritten much simpler: # @bites_left -= 1 unless @bites_left - 1 < 0 def bite  if can_eat?   @bites_left -= 1   return true  end  return false end def can_eat?  !done_eating? end def done_eating?  @bites_left == 0 end def peal # Spelling again, it's peel  @pealed = true endend# I have a bad feeling that super will be defined very vaguely belowclass Apple < Fruit def initialize  super(24) endendclass Banana < Fruit def initialize  super(16) end def can_eat?  super and @pealed # Don't use english operators, they're flow control and will bite you later endendAs you can see, when you create the Fruit object, it shows how many bites are left to finish eating and it shows the state of being pealed (which starts false).It knows, but it doesn't show. You have no accessors, so no one can see that information.

When you bite the fruit, if you are able to eat it, there is one less bite left to eat. You can only eat if you are not done eating, which is when there is no bites left. When you peal a fruit, the state of being pealed is set to true.

When we create the Apple, we initialize it, setting the amount of bites to 24.

Except you just threw a big scary word, initialize, which you haven't shown yet.

The “super” method is the method of the superclass, or the Fruit class. Now, let’s create a banana, with 16 bites. Unlike apples most normal people only eat bananas when they are pealed. Therefore, let’s change the can_eat? method to check the Fruit’s super condition of being able to be eaten, and also check if it is pealed.

They'll be heavily confused by that. You have to explain how they call through and inherit the methods, not just say inheritance above and expect them to catch on. Remember, newbies here.

Now, let me show you how to create a new instance of a class…

Fruit.new(16)That took too long to mention, it should be far up higher in the tutorial
This creates a new fruit, with 16 bites. The Fruit class is an abstract class, however, meaning it is not meant to be an object in itself, but to define the properties of the classes that supersede it.

Welcome to second year programming in university

apple1 = Apple.newapple2 = Apple.newbanana1 = Banana.newapple1.bite# Returns true, @bites_left == 23# Not going to explain blocks at all? That's cold. Oh, and you haven't told them what# a comment is either.22.times {|i| apple1.bite }# Bite the apple 22 times. @bites_left == 1apple1.bite# Returns true. @bites_left == 0apple1.bite# Returns false. No bites left on the apple.apple2.bite# Returns true. @bites_left == 23banana1.bite# Returns false. You have not pealed the banana.banana1.pealbanana1.bite# Returns true. Bites left == 15Overall you need to realize that this is way way too advanced for newbies. You need to read through tutorials and figure out what would make a better starting point. You assume far too much and gloss over very complicated terms without properly explaining any of them. Remember, these are people new to programming, and you're throwing around words like superclass and inheritance. They have no idea what that is.Slow down, and proofread.
 

Zetu

Level 99 Stabomancer
Veteran
Joined
Apr 28, 2012
Messages
247
Reaction score
99
First Language
English
Primarily Uses
N/A
I took the advice. I stowed away the previous tutorial and started from a different point.
 

Lemur

Crazed Ruby Hacker
Veteran
Joined
Dec 1, 2014
Messages
106
Reaction score
124
First Language
English
Primarily Uses
Honestly it would have been better to leave the original for a reference, and posted a new version separately.

Zetu’s Noob Guide to Scripting in RPG Maker

Introduction:

Welcome to Zetu’s Noob Guide to Scripting. For this tutorial, I will be using RPG Maker VX Ace. You may be using older versions of RPG Maker, which is fine until we get into the specifics of RGSS3. Open up a fresh new project and make sure that "Game" -> "Show Console" is checked. Open up Script Editor (F11) and insert a new line under "Materials". This will be where you will be adding code for testing.

The simplest command in Ruby is the "puts" command. It simply puts out a line of text, as you indicate. Copy and Paste the following line in the Script Editor and run the project.

puts "Hello World"If you did everything correctly, you should see a window, which should look like the following.


Variables and Types:

Numbers:

Ruby supports two types of numbers, Integers and Floating Point Numbers. These are not the only two types, but these will be the ones we will be using for this tutorial, as they are the ones used 99.9% of the time. To define an integer, using the following syntax:

myinteger = 3 # Please use underscores, like my_integer. Easier to readTo define a float, you may use one of the following...
Code:
myfloat = 3.0myfloat = 3.to_i # You mean to_f, and you want to add a comment to explain that
 Strings:

Strings are defined either by being encased in single quotes or double quotes.

Explain that one allows interpolation, such as:

mystring = 'hello'mystring = "hello"# This:name = 'Zetu'my_string = "hello #{name}!"There are a few differences between the two declarations. For example, if you have a string in single quotes, you may easily and double quotes within the string, and vise versa...
Code:
"my 'string' here"'my "string" here'"This don't break the string" #String is not broken'Don't this break the string?" #String IS broken
 Operators:

An operator is a expression or statement. (No they're not, they're functions.)For example...

one = 1two = 2puts one#=> 1puts two#=> 2puts one + two#=> 3If you copy and paste the above code into your project, you can see that the "+" operator performed a simple addition, getting 3 from 1+2. Make sure you using matching types when adding together. Try running the following code...
Code:
puts 1 + "A"#=> Script line 1: TypeError occurred. String can't be coerced into Fixnum.
On that function point, they're defined as syntactic sugar to Fixnum / other classes for overriding later on (think array)
Code:
# Something like this: class Fixnum  def +(other)    self + other  endend# See the source: [URL="http://www.ruby-doc.org/core-2.2.0/Fixnum.html#method-i-2B"]http://www.ruby-doc.org/core-2.2.0/Fixnum.html#method-i-2B[/URL]
Arithmetic Operators:Addition "+"

Subtraction "-"

Mutliplication "*"

Division "/"

Exponential "**"

Modulo "%"

Big scary list is big and scary. What is it?

Arrays:

An array is a collection of variables. Arrays are used when you need more than one value stored in a single space (Redundant). For example...

myinteger = 3myintegers = [1, 2, 3]The 'myinteger' variable has a single number 3, whereas 'myintegers' variable has three numbers, 1, 2, and 3. In order to obtain a number at a particular position in the array, use the "[]" method, putting the position in the braces, starting with 0 being the first. explain what an index is
Code:
array = [1, 4, 9]puts array[0]#=> 1puts array[1]#=> 4puts array[2]#=> 9puts array[3] #Note, this is outside of the limit of the array (so it returns nothing)#=>
Note that the addition operator can be used to combine arrays.
Code:
evens_digets = [0, 2,4,6,8] # Spelling on all of these. Digits odd_digets = [1,3,5,7,9]all_digets = even_digets + odd_digetsputs all_digets# Get the real output, that's not it.#=> 0 2 4 6 8 1 3 5 7 9
String Formatting:The "%" operator is used to format variables enclosed in a list into a string. Two of the common operators for this are the %s and %d, which represents string and number respectively. Here is an example, before we break down how to use this operator. (We're not in C, we have interpolation, use it.)

# The following puts "Hello, Zetu!"name = "Zetu"puts "Hello, %s!" % name # The following puts "Zetu is 26 years old."age = 26print "%s is %d years old." % [name, age]Here are a few basics you should review...
Code:
%s - String (or any object with a string representation, like numbers)%d - Integers%f - Floating point numbers
String Operations:As you have learned above, a String is a series of characters. There are a few operations that are useful for strings...

astring = "Hello!"# The following gives the character length of the Stringputs astring.length#=> 6# The position, or index of the character (0 being the first.)puts astring.index("o")#=> 4# The amount of times a substring occurs in the given string.puts astring.count("l")#=> 2# Gives a substring, from index to index.puts astring[3,5]#=> lo!# An all caps or all lowercase version of a string.puts astring.upcase#=> HELLO!puts astring.downcase#=> hello!Conditions:False. There's a True type and a False type. There is no boolean in Ruby.

http://www.ruby-doc.org/core-2.2.0/TrueClass.html

http://www.ruby-doc.org/core-2.2.0/FalseClass.html

Boolean is a datatype that is one of two different values... TRUE or FALSE. There are operators that return a boolean value. Here are a few examples...

x = 2# The == operator checks if a value is an exact match.puts x == 1#=> falseputs x == 2#=> trueputs x == 3#=> false# The > operator checks if a value is greater than.puts x > 1#=> trueputs x > 2#=> falseputs x > 3#=> false# The < operator checks if a value is less than.puts x < 1#=> falseputs x < 2#=> falseputs x < 3#=> true# The >= operator checks if a value is greater than or equal to.puts x >= 1#=> trueputs x >= 2#=> trueputs x >= 3#=> false# The <= operator checks if a value is less than or equal to.puts x <= 1#=> falseputs x <= 2#=> trueputs x <= 3#=> true# The == can be used with data types other than numbers.puts "ABC" == "ABC"#=> true# The include? method checks if an array includes any match.puts [1,2].include?(3)#=> falseputs [1,2,3].include(3)#=> trueIndentation:Just as a side note: when programming. This is to indicate how some lines of code are grouped together. Each indentation is considere a block of code. Most blocks are ended with "end".x = 

if a line starts with "if, def, class, while, until, begin, module, ect..." it will indent the next lineelse you may notice some lines indent inwards in theendThe "if" operator checks a condition, creating a new block of code that only runs if the condition is met.
Code:
x = 3if x == 3  puts "This string will appear in the console."endif x != 3 # unless  puts "This string will not appear in the console."end
Loops:Loops (or enumerables in Ruby) (false, enumerable is a module that's included. It produces an interator, and that iterator is what is iterated over) is a method that iterates give code in sequence.

Code:
odd_digets = [1,3,5,7,9]odd_digets.each do |n|  puts n  #=> 1 3 5 7 9end
Each type of loop creates a block indentation. Here is a few more examples.
Code:
# The "times" operator creates a loop, where it iterates itself that many# times, counting up from 0 each time.5.times do |n|  puts n  #=> 0 1 2 3 4end# A range is defined by two numbers. (X..Y) is each number, from X to Y,# including themselves.(3..6).each do |n|  puts n  #=> 3 4 5 6end# A range defined by (X...Y) is the same as (X..Y), except that it does# not include Y itself.(3...6).each do |n|  puts n  #=> 3 4 5end
A while loop will repeat itself as long as a condition is true.
Code:
puts x = 12while x != 1 # Run as long as X is not   if x % 2 == 0 # If X is an even number    puts x = x / 2  else # If X is an odd number    puts x = x*3 + 1  end  #=> 12 6 3 10 5 16 8 4 2 1end
From inside loops, the "break" and "next" statements will alter the flow of the code. Next causes the loop to start the next iteration, while Break cancels it completely.
Code:
x = 10while true  x = x - 1  if x % 2 == 0 # If X is an even number    next # Skip the rest can continue  end  puts x  #=> 9 7 5 3 1  if x == 1 # If X is equal to 1    break # Exit the loop.  endend
It would be better to do it like this:
Code:
(1..10).select(&:odd?)
 
Last edited by a moderator:

Zetu

Level 99 Stabomancer
Veteran
Joined
Apr 28, 2012
Messages
247
Reaction score
99
First Language
English
Primarily Uses
N/A
It would be better to do it like this:

(1..10).select(&:odd?)
Just because that's better doesn't mean I should use that there. The example shown was to show 'next' and 'break' statements.

Could you compress your posts in spoilers or something? It takes up a lot of room and is a quote.
 
Last edited by a moderator:

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,682
Reaction score
3,003
First Language
Tagalog
Primarily Uses
RMVXA
You could also just use p instead of puts... That's shorter to use. XD
 

??????

Diabolical Codemaster
Veteran
Joined
May 11, 2012
Messages
6,513
Reaction score
3,203
First Language
Binary
Primarily Uses
RMMZ
just to state, 'puts' and 'p' have different functionality...

'p' allows for zero escape characters to be shown, where as 'puts' does not. For example

Code:
to_print = "Dekita\0" p to_print#=> "Dekita\u0000" puts to_print#=> Dekita# Notice the lack of quotation and also, no escape character(s).
 

Balrogic

Veteran
Veteran
Joined
Dec 19, 2014
Messages
40
Reaction score
17
First Language
English
Primarily Uses
Also...
 

You may find the function p to be a useful alternative to puts. Not only is it shorter to type, but it converts objects to strings with the inspect method, which sometimes returns more programmer-friendly representations than to_s does. When printing an array, for example, p outputs it using array literal notation, whereas puts simply prints each element of the array on a line by itself.

Flanagan, David; Matsumoto, Yukihiro (2008-01-25). The Ruby Programming Language (Kindle Locations 395-399). O'Reilly Media. Kindle Edition.
Code:
irb(main):001:0> a = [1, 2, 3, 4, 5]=> [1, 2, 3, 4, 5]irb(main):002:0> puts a12345=> nilirb(main):003:0> p a[1, 2, 3, 4, 5]=> [1, 2, 3, 4, 5]irb(main):004:0> print a[1, 2, 3, 4, 5]=> nil
 
Last edited by a moderator:

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

Latest Threads

Latest Posts

Latest Profile Posts

Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
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'??

Forum statistics

Threads
105,857
Messages
1,017,019
Members
137,564
Latest member
McFinnaPants
Top