Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Competition! Best GameSalad tips!

ArmellineArmelline Member, PRO Posts: 4,851
edited May 2019 in Working with GS (Mac)

It's Humble Bundle time again, and I've been itching to play Day of the Tentacle Remastered for a while, so I just snapped the latest bundle up. There are several games in the bundle that I have no desire to play, though, so I thought I'd give them away on the forums for free!

To enter, write a comment with your best GameSalad tip. It can be a bit of logic you think is useful, or a way of better managing your workflow, or promoting your game - anything related to making games with GameSalad!

The three best responses will be chosen and given a key to one of the following games (entirely at my discretion - first place winner will get first pick etc.)

  • Grim Fandango Remastered
  • Worms Clan Wars
  • Borderlands: The Pre-Sequel
  • 80 Days

To be eligible to enter you must have a GameSalad account at least 1 week old (at time of posting). You do not require a subscription to enter. GameSalad is in no way associated with this giveaway.

This thread will be open for entries for 1 week, or until the thread drops off the front page, whichever comes sooner.

Removed the Steam Code bit from the title since the contest is long over!



  • Two.ETwo.E Member, BASIC Posts: 580
    • You can make any actor Invisible by changing the self.Alpha Attribute to 0 (zero).
  • tatiangtatiang Member, Sous Chef, PRO, Senior Sous-Chef Posts: 11,915

    Don't unlock actors in a scene unless you have a good reason for doing so. Unlocking an actor creates an "instance" that can have different rules (and even attribute values) than the original "prototype" actor. While sometimes useful, if unintentional this can make troubleshooting rules tricky because actors that appear the same can have unique rules.

    New to GameSalad? (FAQs)   |   Tutorials   |   Templates   |   Greenleaf Games   |   Educator & Certified GameSalad User

  • Braydon_SFXBraydon_SFX Member, Sous Chef, PRO, Bowlboy Sidekick Posts: 8,992 GameSalad Employee
    edited May 2017

    Tables. :#;)

  • gingagaminggingagaming FREELANCE GS DEV Member, PRO Posts: 1,610

    Name every rule or group in your actor in relevance to its job so when making changes or bug fixing, you know what it does!

    Already mentioned above but unlocking of actors in a scene unless needed is a massive no no as this always causes issues so if you do need to create an instance (an unlocked actor) then leave yourself a note stating why you unlocked it! For example to access scene layers or camera attributes. Always handy when tidying up.

    Finally if you experience a freeze, check you are not referencing a table row or column equal to 0. This is normally caused by using an attribute to locate a certain row or column and having it set or reset to zero.

  • pHghostpHghost London, UKMember Posts: 2,301
    edited May 2017

    @tatiang said:
    Don't unlock actors in a scene unless you have a good reason for doing so.

    I would add to this that you can vastly expand the flexibility and functionality of your actors through self.attributes

    This way, you can have only one enemy actor, with all the necessary rules, with references to self.attributes as needed. You do NOT need to unlock an instance of an actor to change its self.attributes! So you can easily change the power, animation, etc. of each instance without breaking stuff by unlocking it. And you will only need to edit one master actor to update behaviours of the whole group!

  • fmakawafmakawa Member Posts: 559

    Ask and ye shall receive. The forums are a great resource, ask clearly and you will receive an answer, even ones you dont like but you will get an answer.

  • fmakawafmakawa Member Posts: 559

    With tables, make sure you add as many rows or columns as you will ever need. Especially important for saved level data. If not, you data will be rewritten when you make updated tables and you will lose your progress.

  • NklrcadeNklrcade Member, PRO Posts: 87

    Sometimes I had many commands overlapping when I only wanted them to happen at certain times, so I added a game.Action attribute. Imagine making a slot machine...

    For instance when game.Action = 1, then Spin button can be pressed. Once pressed, then set game.Action = 2.

    If game.Action = 2, then wheels will spin and stop. Once all wheels stop, then game.Action = 3

    If game.Action = 3, then check for win. If win then payout. If payout is complete, then game.Action = 1

    Thats the basic idea... Before I had many True/False statements, but for me this is easier to see how things work in the order they're supposed to happen.

  • JSprojectJSproject Member Posts: 730

    @Armelline Good idea :)
    I need nothing for myself but instead I'll now pm you with gift links for "Her Story" and "80 Days", you are free to give them to whoever you want that contributes in this thread.

  • SEMASEMA Member Posts: 161

    Make sure you create your tags before adding the actors to the game. If you don't do it the engine won't detect the tags and you will have to delete EVERTHING and make it again.

  • ArmellineArmelline Member, PRO Posts: 4,851

    @JSproject said:
    @Armelline Good idea :)
    I need nothing for myself but instead I'll now pm you with gift links for "Her Story" and "80 Days", you are free to give them to whoever you want that contributes in this thread.

    Thanks @JSproject! That makes for five prizes to be given away!

  • SocksSocks London, UK.Member Posts: 12,822
    edited May 2017

    Great idea @Armelline ! . . . . not only is it a nice idea for a competition, but you also create a thread full of really useful tips ! (Why on earth are GameSalad not engaged like this ?)

  • CasualEvolutionCasualEvolution Member, PRO Posts: 438

    @Armelline very useful idea! :)
    When spawning to many instances of one object and you need "identify" each instance:
    Create a global variable "counter" as integer, to number and counting these instances and in object a local variable "whoiam" as Id for this instance.
    Then at the beginning of rules of this object:
    counter= counter +1
    whoiam = counter

    You can use "whoiam" has Id for this instance, to index parameters in table, etc

  • IceboxIcebox Member Posts: 1,483
    edited May 2017

    Here is a general tip (more like a mistake i used to make alot).Putting a rule inside a rule can save you alot of time. I used to complicate things when i started gamesalad. For example , If I wanted to do something like this

    ( if AAA or BBB is true and x is true play animation1)
    ( if AAA or BBB is true and x is false play animation2)

    I would create 4 different rules

    If AAA is true and x is true
    do Animation 1

    if BBB is true and x is true
    do Animation 1

    if AAA is true and x is false
    do Animation 2

    if BBB is true and x is false
    do Animation 2

    Then few months later i realised i can just put a rule inside a rule , this made alot of things much easier and allowed me to use "or" & "and" together in a rule.

    When any AAA is true , BBB is true
    then do
    If x is true
    do Animation 1
    do Animation 2

    2 different ways to do the same thing, but you will have less code to handle and it will be easier to change and organise.

  • HopscotchHopscotch Member, PRO Posts: 2,782

    My favorite way of picking a random left/right movement

    Direction = random(0,1)*2-1
    Movement = SomeSpeed * Direction

  • ElemetAppsElemetApps Member, PRO Posts: 55
    edited May 2017

    Every 5 minutes click that save button or after being successful with a difficult logic. Also duplicating your gamesalad file before opening a just updated gamesalad software is a great idea.

  • jonmulcahyjonmulcahy Member, Sous Chef, PRO Posts: 10,385

    You can use your own sql server to send and receive anything you can think of:
    Sending and Receiving data using your own SQL Server

    You can also generate your own Unique Identifier for your game to track how often people play, how far they get, etc... It does reset if they delete and re download the game however.

  • ArmellineArmelline Member, PRO Posts: 4,851

    One day left for submissions!

  • fmakawafmakawa Member Posts: 559

    @Hopscotch said:
    Use inline LUA functions to perform string operations in the expression editor:


    Convert a string to Uppercase

    self.UppercaseText = self.LowercaseText:upper()

    Convert a string to Lowercase

    self.LowercaseText = self.UppercaseText:lower()

    Reverse a string

    self.BackwardText = self.ForwardText:reverse()

    An example, struggling to implement this.

  • CasualEvolutionCasualEvolution Member, PRO Posts: 438
    edited May 2017

    You can open 2 projects in 2 instances of GS and copy rules from one actor from project 1 and paste in other actor of project 2 :)

Sign In or Register to comment.