The Blocks Engine 2 is a template project for creating games with a runtime visual block coding interface, enabling the players to code inside your game/app using blocks.
It comes with 🚀 40+ blocks, interface for selecting blocks by category, variable viewer and creator, blocks code serializer (save/load), events manager and a 3D environment for playing with the codes.
🌟 Support for All Canvas Render Modes
Expansion Templates:
The engine expands the game possibilities with a creative mechanic. Gives the players the possibility to code their own way through the game and learn valuable programming concepts by playing with a friendly tool.
By combining the powerful capabilities of Unity with the utilization of Blocks Engine 2, you can create immersive, engaging, and enjoyable coding games that foster creativity and critical thinking in players of all ages.
Blocks Engine 2 introduces a runtime blocks coding feature, enabling players to dynamically engage with coding within the game. With Blocks Engine 2, you have the flexibility to create custom blocks tailored to your game's requirements, allowing for endless possibilities in gameplay design.
The result is a coding game that educates and entertains, providing an interactive and rewarding experience. Unleash your creativity and create coding games that captivate and inspire players.
The project can be used to create educational, code learning games, puzzles or automation games where players need to build their own code to control objects in the scene using visual blocks coding.
The Blocks Engine 2, is an upgrade from the former Play Mode Blocks Engine. It is more powerful, faster, easily customizable and built to allow even more block possibilities, keeping the layout and rules similar to the most popular block coding languages.
The engine makes the integration between visual block coding and the power of the Unity engine, including the possibility to deploy for multiple platforms.
v2.13.4
- fix error on trigger block added manually
- fix break loop block
v2.13.3
- wrap EditorApplication call in conditional compile
- fix error on dragging horizontal trigger blocks from blocks selection
- Fix horizontal drag
- fix selection function block not being deleted when panel is disabled
v2.13.2
- fix missing namespaces detected
- fix outerArea onvalidate warning
v2.13.1
-dorp improvements
-blocks can be drop on non-trigger blocks, on top or bottom
-dragging blocks will drag the block on the bottom of it
-ctrl + drag will drag only the single block
v2.13
- implementation of the group drag and outer area features, making it possible to drag a block along with all the blocks under it and the possibility of dropping blocks unde non-trigger blocks
- disableGroupDrag variable added to the darg drop manager, it allows the user to do a group drag or a single drag by grag + press left ctrl
- Added class OuterArea to enable drop under non trigger blocks and dragging blocks as a group
- OnDragStart event added and OnDragStart method added to the I_BE2_Drag interface
- block xml model, serializable block and serializer refactored to include the OuterArea
v2.12.1
# Warning: This version has considerable changes from the previous version, make sure to have a BACKUP of your project before updating
- new event BE2_BlocksStack.OnFunctionStart
- added localVariables to Function Blocks to hold the input values and enable recursive functions
- added counter variable in the serializer to chech end of serialization of all inputs
- Block layout update, BE2_DragBlock.DetectSpotOnEndOfFrame and BE2_DragDropManager.OnPointerDown made non coroutine
- bugfix: null exception on draggin operation blocks with other operations as input
- bugfix: instantiation position of Define Block not relative to ProgrammingEnv
- bugfix: find object in list with negative index value not being avoided
- bugfix: Function Block being counted during the step by step play
- bugfix: loading more than one Function Blocks not recognizing the correct Define Block
- bugfix: Function Blocks not being rebuild right after being loaded
- tmp text not being found when Function Block A was set with local variable inside Define Block B
v2.12
# Warning: This version has considerable changes from the previous version, make sure to have a BACKUP of your project before updating
- listen to event moved to OnEnable in Block class
- added shadow component null check to BE2_Block.SetShadowActive
- vertical block headers now have settable width and padding right
- dropping blocks in the ProgrammingEnv now can be done if part of the block is outside of the Env but the pointer is inside
- added check for the selection viwer before stopping the container scrollrect
- removed unused blocks stack variable from the DragTrigger class
- new general OnBlockDrop event added
- new drag block and function blocks events added
- added keycode list to the input manager to improve performance of blocks that use key input
- null check added to instructions that use specific components as inputs so its input can be replaced by a ReferenceInput
- replace the use of the dropdown directly by the header input FloatValue to enable the substituion of the block input by a ReferenceInput
- dropdown input now returns the index of the selected item as FloatValue
- use of BE2_Dropdown replaced by TMP_Dropdown in key classes
- BE2_DropdownDynamicResize.Resize method refactored to resize based on the actual current value
- use of BE2_InputField replaced by TMP_InputField in key classes
- BE2_InputFieldDynamicResize.Resize method refactored to resize based on the actual current value
- BE2_BlocksSerializer refactored to enable Function Blocks
- all Function Block Instructions are initialized after being loaded to make sure it has a definition set (DefineFunction Instruction)
- added xml elements to the BE2_BlockXML to enable the serialization of Function Blocks
- added new variables to the BE2_SerializableBlock to enable the serialization of Function Blocks
- serializable DefineItem type added to record header details of Function Blocks
- added option "noDuplicate" for blocks in the context menu
- added method LoadPrefabBlock to the BlockUtils to better separate the serialization actions
- added method to the BlockUtils to check if a block's instruction is of type FunctionBlock
- added method to the BlockUtils to instantiate "noView" blocks adding only the needed components excluding the visual components
- added helper class for UI actions
- added new block Type "define" to be used by Define Function Blocks
- Initialize method added to the InstructionBase class to enable blocks with "noView" layout to initialize needed variables after it is fully constructed by Function Blocks
- added Reset method to the instructions to enable reuse by Function Blocks
- new DefineFunction instruction
- new FunctionBlock instruction
- new ReferenceFunctionBlock instruction to enable recursive functions
- new FunctionLocalVariable instruction
- new header item BE2_BlockSectionHeader_Custom added to enable custom blocks to use different types of items as headers. By default it is used for Horizontal Function Blocks
- new header input BE2_BlockSectionHeader_LocalVariable added to enable Function Blocks
- new header input BE2_BlockSectionHeader_ReferenceInput added to enable Function Blocks
- added class to amange the UI that directs the creation of Function Blocks
- added class to idintify labels for the creation of Function Blocks
- added layout classes for blocks without visual components to enable Function Blocks
- added new Drag class for the Define Function Blocks
- added new Drag class for the Function Blocks
- added Function Blocks manager component
- new Divide operation instruction
- bugfix: header not updating size after it is disabled and reenabled
- bugfix: drop events not being called correctly, events handler refactored
- bugfix: variables and function blocks not being loaded if the corresponding selectino blocks was not active
Read the full Changelog at:
https://meadowgames.com/documentation.html?Blocks_Engine_2_Changelog