The intention of this document is to be an easy to read and find document that shares information regarding how to best work with Playmaker and Unity.
Currently this information comes from the Playmaker Forums and was originally written by Jean Fabre. I’ve done some slight grammar editing to make it more readable and will be providing some screen shots as well.
Don't over use global variables for everything and anything.
This is bad design practice, look up 'Metadata' on the forum.
I explain one way of dealing with common variables used throughout a big feature and many fsm.
A typical project may have 2-3 global variables tops.
Above 10 and you should use a dedicated MetaData FSM’s hosting just local variables and have other FSM’s getting that value using getFsmXXX()
Never fear using several FSMs for a single feature.
I (Jean Fabre) often resort to three FSMs just for a simple character controller.
One to move, one to rotate, one to jump.
For more complex designs, this will naturally increase and this is a good thing.
Remember, divide and conquer allows your project to grow better and stay sane.
Design first, optimize later :
Make it work, then worry about performance - the other way around is to painful.
Try to think in direct and simple terms of logic.
ALWAYS NAME ALL YOUR EVENTS, VARIABLES STATES, FSMs, GAMEOBJECTS.
it's critical, describe as much as you can, use colors ( I always use red for error state landing, with a breakpoint, so any error I catch will trigger the debugger).
Use '/’ in your names for events.
Because it helps organizing them in the drop down menus.
Don't attempt your dream project on your first try.
Set yourself achievable goals, and reach them patiently.
Start with small and simple mechanics.
If you’re new to Unity and Playmaker, don’t attempt huge projects, think in smaller, learnable modular blocks of learning that is easily built upon.
You’ll go crazy and lose sight of your goals if you start too big without enough experience to back it up.
Cut down your project into small chunks.
These chunks must work individually; think of your project as a modular humanoid.
This modular humanoid is made out of very distinct organs but, each could be replaceable.
The heart can be swapped with a mechanical pump, brain with a computer, the skeleton with carbon fiber.
Apply this modular thought pattern to your project because this is how best to think about complex systems and, it’s actually based on nature.
The parts that make up a tree. The parts make up an ecosystem. 'Object Oriented Programming' actually was an attempt at simulating Nature when it was designed.
Use the Playmaker forums!
They are there to help you out. Sharing your issues and struggles is beneficial for everyone because you get a chance to solve your issues and others will be able to benefit from your struggle and the solution.
This is also helpful for the folks answering the questions because it’s a chance for them to sharpen their skills as well.
Do not fear starting from scratch a feature.
It's a lot more productive than trying to fix something badly started.
It took me (Jean Fabre) many years to realize this, now I am ok with removing and heavily refactoring entire blocks of code because I know a better way and often it’s necessary for the sanity of the project.
Trying to fix the unfixable is a waste of time. Plus, you will gain experience because you already know what you want and you'll be faster and sharpen your development skills. (Tutorials are great, but at sometime the training wheels have to come off).
Scripting and Playmaker
Higher level project handling will likely require scripting and it's a good thing.
You can write Unity Editor scripts that increase your workflow and speed up your projects.
As you want to increase the complexity of projects you will need to prepare yourself for learning c#.
A great way to do this by simply looking at PlayMaker actions and reading them over..
At first, don't try to do one, just try to understand how it's done.
In time, you'll have a need for a custom action, ask us (the Playmaker forums) and we'll likely provide it for you.
Take this as an opportunity to learn something and even try to rebuild it yourself, or do a series of custom actions around the one provided ( to cover more of the features you want to control).
However, remember that you’re learning programming and this is a huge topic.
This process can take one or two years, but you’ll end up with simple coding skills, and Unity will reward you with the best possible solution to realize your dream projects.
Learning c# in parallel with Playmaker and speed up absorption and understanding of these complex systems.
I (stvbabb) first learned Playmaker hoping to avoid coding altogether, but after some time realized it’s also quite fun and necessary in the world of Unity.
It’s daunting at first, but it’s doable, even for artist or designers.
The best part is, the understanding you will gain from code and from Playmaker can really sharpen your skills quickly.
You will get a sort of double understanding of logic and programming.
Use Version Control
Use Github or bitbucket (coupled with SourceTree) to host your project,
it's never a good thing to rely on zips for backups... also dropbox is not advisable as well as Collaborate (for now).
Best is to use a proper code repository.
Below is a version control .gitignore file to make versioning easy with playmaker while not including any of DLL’s or instal files
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
[Ll]ibrary/ emp/ [Oo]bj/ [Bb]uild/ # Autogenerated VS/MD solution and project files /*.csproj /*.unityproj /*.sln /*.suo /*.user /*.userprefs /*.pidb /*.booproj #Unity3D Generated File On Crash Reports sysinfo.txt Temp/ /Assets/PlayMaker/ /Assets/Plugins/PlayMaker /Assets/PlayMaker/PlayMaker.meta