Skip to content

Introduction

Leopold A-C edited this page Oct 19, 2020 · 7 revisions

What is this Add-On?

The Logic Node Add-On adds a large variety of logic nodes to the UPBGE build of Blender. With these nodes, you will be able to assemble your game logic visually, just like in the Unreal Engine or Armory3D.

Why use logic nodes when there's logic bricks?

Basically, there's two ways to get logic into your game.

  1. Logic Bricks
  2. Python scripts.

That's it.

Using the addon's logic nodes is effectively scripting in python, only visually (more on that below). They have the advantage of being a lot more versatile than logic bricks. Nodes can be placed freely, trees can be nested and eventually, the code contained by each node will be accessible.

Some things to consider when adding logic to your game

Logic bricks are fastest

This is because they are using Blenders native C++ API, which makes them simply creepy fast. Second fastest is custom python code, logic nodes are the slowest.

Only execute code when needed

You always want to avoid the On Update node, which basically executes something every frame. Only use this when it's necessary, otherwise try to get some kind of condition. Logic trees can also be linked to every sensor the logic bricks can offer, make good use of that.

Understanding the main loop

The main loop is the most basic calculation the engine has to go through effectively 60 times a second, keep that in mind. In that loop, every sensor logic brick on every object is checked for its status (whether it is active or not), which is incredibly fast.

If any of these sensors is active, the linked controller will be executed. A controller can be either a logic gate, in which case it fires up the linked actuators, or the can be python controllers, in which case the referenced python code is evaluated.

This is where you need to be careful what you do. You don't want to run a lot of unnecessary code each frame, so put in breaking conditions as often as you can to avoid overhead in the main loop.

How does it work?

Quick explanation

Each logic node houses some lines of python code. That code is executed when the condition for the node is met. If a node has no condition, it is executed each time the sensor logic brick connected to it is active.

A bit more technical explanation

When pressing "Update Code" in the logic node tree editor, a .py file is generated. The file defines a reference class for each node in a particular order so that every node is executed only when all values needed for it are computed.

Then, whenever the connected sensor is active, the evaluate() function for each node is called.

This is where the magic happens. The evaluate() function collects all the input values from its sockets before waltzing though the lines of code that make something happen in-game.