What is IrrRPG Builder?

IrrRPG Builder is a simple and powerful tool designed to help people new to programming and/or players who want to create RPG games without advanced knowledge in programming languages. This tool has a simple interface that enables the creation of 3D environments very quickly. The Lua scripting language is integrated into the system and assists the creation of game logic, artificial intelligence of NPCs and enemies.

Developers:

Andres Jesse Porfirio (www.andresjesse.com)

Christian Clavet (www.clavet.org)

Leonildo José Melo de Azevedo

Special Thanks:

Professor Tony Alexander Hild.

Sourceforge project page, check also the new IrrRPG Builder 2.0w at https://github.com/andresjesse/irbw


Development, contributions and bugfixes by

  • Andres Jesse Portfirio
  • Christian Clavet
  • Leebojamming
  • Fatalis (Alexander Diehl)
  • DevJipJip

News:

15/02/21 - IRB is Awakening!!

The time flies!

It has been almost 12 years since I started developing the initial IRB prototype. The little tool that served as my computer science graduate work has gained a dimension I never imagined.

I would like to thank the community that kept this project alive for so long! All these years I have been dedicating my time to build a career as a university professor, specifically, researching and working with the teaching of computer programming. Now the time has come to resume the fantastic ideas behind IrrRPG Builder.

I'm starting a new era for the IRB, modernizing the toolset, making it more accessible and simple to use, framing it as a tool to support the construction of serious games, and aiming contributions in computer programming teaching.

Again, I would like to thank everyone who was involved and who showed interest in this project. I am also grateful to the entire Irrlicht community, which has provided me with a giant learning experience over the years. However, it is time to move on and look for more modern technologies.

I invite everyone to join me in this new adventure by officializing my new project: IrrRPG Builder 2.0w, a WebGL based reborn for IRB, available at https://github.com/andresjesse/irbw

---

Andres Jessé Porfirio, IrrRPG Builder creator and initial committer.

25/10/18 - IRB is resting for the new generation!

Great news coming soon...

01/07/17 - Happy new year 2017!

We are still looking for developpers, and are planning to replace the rendering engine in the project. We currently don't have time to work on the project as before, but the project is still alive!

03/31/16 - Looking for developers!

If you are interested to contribute to the IRB project please look at this forum post!

09/15/15 - Forum inscription closed for new users

Too much fake users are registering on the forum and take too much of my time. I'm forced to close the registration on the forum until I have more time to manage.

New version (0.32) with project support should be released before january 2016

02/21/15 - Alpha 3.1 Release (0.31)

Some of the changes in 0.31:

  • Now available for Windows in a setup package!
  • Basic projectile system implemented!
  • Implemented a experimental shadow mapping system (XEffect)
  • Improved the configuration panel GUI and added more options!
  • Default player controls can be set via the configuration panel!
  • Default format for terrain tiles meshes save can be set via the configuration panel! The user as a format choice between .OBJ (Wavefront), .DAE (Collada) and .B3D (Blitz 3D)
  • Default player title picture can be set from the configuration panel
  • Default player project can be set from the configuration panel!
  • Much more!

12/27/14 - Alpha 3.0 Release (0.3)

Alpha Version 0.3 is now available for windows, and will be soon for Linux. We should also release a installer version around Feb 2015 for windows.

Some of the changes in 0.3:

  • Terrain engine reworked, shaders, tile mechanism, saving loading (Thank for Hendu for the B3D saver). Much faster project loading!
  • Terrain tools improved, brush more responsive, vegetation tools to reposition trees on the ground, etc.
  • Interface improved added new modes and submodes, numeric inputs are available to move/rotate/scale models
  • Scaled models will scale their velocity!
  • 3D Maya type camera for editing, RTS camera, FPS or RPG style for ingame (selectable via the GUI or by issuing LUA commands)
  • Can redefine materials on model templates, new "Collections" way for the library, easier to add new stuff to the templates.
  • Models can use external animations files (models can share animations, the only thing required is that the models share the same skeletons)
  • Model can have attachments points (could add/remove stuff to models from LUA), will be useful to use weapons, helmets, etc.
  • Can spawn about anything on the map from a LUA command!
  • New Loot subsystem, that allow to pick an object (dynamic object), store it in the player inventory, use it or drop it. 
  • User manual and lua documentation, some video on the forum/web site (more coming)
  • And a lot more!

Check the download area!

10/19/14 - Created a video presentation of IRB!

We are still working on alpha 0.3 to be released later during this year.

01/04/14 - Happy new year 2014!

Were still working on alpha 0.3 to be released during this year.
The new version have lots of improvements!

Cutscene creation is now possible!
This was made by changing positions and angle of a new camera type (static) in LUA and starting animation of the characters. The cutscene was done in LUA, the character animation was taken from the Mixamo site.

You can look at the forum here for more informations about all the improvements that will be coming in Alpha 0.3.

A new user manual is in the work!

The current guide can be downloaded from this URL:
http://www.clavet.org/files/download/IRB_userGuide.pdf

3/03/12 - Alpha 2.1 Release (0.21)

This new release (from SVN 310) introduce new features and lot of fixes

here are some of them:

- NEW: Reworked the interface so it mimic the wxWidget prototype we had
- NEW: edit camera, based on the IRRlicht Maya Camera. Editing is much improved.
- NEW: Dynamic object highlighting improve precision when moving and placing objects on the map.
- NEW: All Characters now go to "pause" when the player look it's inventory/status window.
- NEW: Animation transitions! Animations look much better.
- NEW: File selector GUI with windows stretching, drive widget and favorite folders
- NEW: New scripts (Potion vendor, etc.)
- NEW: New example projects (IGDA Demo, big map example etc.)

- Update: Updated the script editor with the version from the IRRext repository
- Update: Restructuration of the project folders so it's easier to edit
- Update: The game camera is now following the player and not directly attached to it. Better feeling of movement now.
- Update: Linux project can build the editor and the player (Release and Debug version)

- Fix: Animation events are properly detected (were missing a lot of event before the fix). Animation is much improved now.
- Fix: Water and terrain shaders have been checked to compile on recent ATI, NVIDIA & INTEL hardware (Intel has clipping issue due to a problematic driver)
- Fix: Animation jitter from player when going from walk to run animation
- Fix: Uppercase/Lowercase typos in filenames for the Linux build
- Fix: Check the for death animation, then if the "despawn" animation is not present, dispose of the character properly.
- Fix: Healthbar was displayed for a split second when the character was put on the map.

- Removed: Removed some old meshes and textures that were no longer needed (have already been replaced with better assets)

1/19/12 - IRB is now present on FACEBOOK!

Andres created a FACEBOOK page for our project.

Facebook page

 

1/16/12 - We will be presenting IRB to the IGDA!


I will have the honor to present the project at the IGDA (Internationnal Game Developper Association) in Montreal, on January 31. Check the link for more details: http://www.igda.org/montreal/Jan31_DemoNight

 

1/1/12 - Happy new year 2012! Update: Changed the edit camera

Now the edit camera is using the MAYA camera type from Irrlicht.
This camera has severa problem (will replace it with a custom one or if Irrlicht accept my patches) but is much more convenient for editing. Here is a screen that show the editor. Interface has been reworked to be using Irrlicht only.

 

10/23/11 - Alpha 2 Released

This new release (from svn 250) introduce a lots of new features! Here are some of them:
- Improved interface
- Improved terrain edition
- New characters and props
- Improved trees
- Added music and sound effects (under the creative commons license)
- Improved script editor, with new preset scripts (player, enemy, etc) pre-made scripts
- New LUA editor commands with documentation
- Updated camera/controls
- Character walk/run stop is based on terrain slope now. So the characters can walk on mountains!
- Shaders have been tested to work on both ATI/NVidia hardware. Ground and water should render correctly now
- Added post effect shaders for adding effects (including rain/snow)
- first implementation of a battle system (with hitpoint calculation based on properties)
- first implementation of AI based on animation states
- Timed game loops so that the gameplay should work the same.
- Support for more languages (English, Portuges, French, German, Spanish)

There is also a "player" build that you can use to give to your friend to play your own created RPG games.
Check the Downloads area and try it!


09/07/11 - New ambient effects added (svn 243+)

 

05/12/11 - 2011 Development updates

We keep working hard to create the best opensource RPG Builder!

At the moment our development copy has many updates, check screenshots tab

 

12/23/2010 - Merry christmas and happy new year to everybody!

Here's a short video of the revision 81, it shows the updated interface and few changes from the alpha 1.


11/30/2010 - The forum is up!

Now we can discuss everything about the irb in the official forum. Check it: irrrpgbuilder.sourceforge.net/forum


11/20/2010 - Alpha 1 Released!

An usable version is available now, the software stills in progress so is possible to see some bugs, but this version is fully usable and the projects created with the alpha version probably will be fully compatible with the stable version.

In progress documentation: doc.html

Check downloads area and try it!


08/09/2010 - Lua scripting and Dynamic Objects placement are working

All actions and AI of my system are based on the Lua programming language (check www.lua.org). So i'll try to explain how it woks:

Each "Dynamic Object" can have an lua script that runs a lua "step" function at each frame, this "step" can see a lot of C++ pre-maded methods (like setPosition, setRotation, lookToObject, showDialog, etc) and of course you can define functions in lua to create the dynamic object behavior.

A dynamic object can also have a "onLoad" and a "onClick" function, this functions will be called when the object loads (at start of the gameplay) and when player clicks the object, this way you can define initial variables and a routine to decrease enemy life when he is attacked by player for example (and counter-attack the player, hehe).

Each object has his own lua_state, that means his functions and variables are LOCAL, and one object cannot interfere in another object. To share data between objects you need to set an global variable (by calling a function like setGlobalVar("playerMoney", 20) ) , this is made by my LuaGlobalCaller class, this class stores and manipulates all global vars. Global vars also will be used to save the game during gameplay.

The use of globals are interesting to manage the in-game quests, for example:

Imagine the following quest: Player needs to kill 10 wolves to get access to a misterious house.

-> you can create an global named "Key" and another "WolvesCounter";

-> you increase WolvesCount global each time on wolve die;

-> when WolvesCount >= 10 the global Key becomes true and the Player has access to the house.

PS: Check the september 08, 2010 Screenshots


06/22/2010 - Terrain editing and vegetation paint are working!

I've concluded the terrain module, now is possible to create a virtual world very quickly. The user project also can be saved into a XML file. Check the video:


06/15/2010 - We have a logo!

Recently Borges (http://vhborges.tumblr.com) created a logo for IrrRPG Builder. Many thanks man!



Features:

Positionning

Objects can be placed on the ground with a few clicks of the mouse. Rotation is handled with the mouse wheel.

The user has also a choice of using numeric inputs for greater precision, and can use a KEY (CTRL) while moving to snap to the grid. The grid size can be ajusted from a menu.

The editor feature a "model browser" to select the model to place on the ground.

Ocean

The height level of the water is pre-defined inside the engine. You only have to "dig" inside the terrain to reveal the it.

While editing, the water can be hidden to allow to reshape the ground with greater precision, and/or place underwater elements.

Hiding and displaying of the water can be done using the F5/F6 keys.

Positionning

Creating terrain is easy. Take the mouse with the terrain tool, and you can "carve", and "extrude" the grass directly from the terrain.

Textures will adapt themselves to the heigh of the terrain. Terrain texturing texturing is automatic. If you need a different environment look, the pre-defined textures can be changed.

The "brush" tool, have a radius, inner radius, a strength, and a "levelling" adjustement so you have precise control over the way you define your landscape

For added convenience, the user can re-center the camera, by pressing the "C" key.

Positionning

The terrain can be expanded quite easily with the terrain grid feature. Just take the tool and click on an empty area to start a new section of terrain.

When saved, theses tiles are saved inside the project folder as models (.B3D - Blitz 3D, .DAE - Collada or .OBJ - WAvefront type models), so it can be edited with a third party application for example to create caves.

Positionning

Creating vegetation is done using the mouse, just click on the ground to plant a tree! To remove a tree, just click on it with the right mouse button.

The user can decide to change the shape of the land, and by pressing F1, the vegetation will reposition itself to sit on the ground.

All trees can be removed at once, by pressing the F2 key

Positionning

Custom dungeons can be created quickly with models of tiles of section of a dungeon. Can be used for a lot of things too. Tiles can align themselves with the snap feature.

 

Positionning

The editor comes currently in 5 languages English, Portuges, French, German, Spanish). It can be also expanded easily to support more by editing the XML definition file.

The games created with the application can have also dialog scripts (LUA editor) use the localisation feature. So your creations can be localised.

Positionning

The script editor has been improved for stability, and flexibily. There are now "templates" of ready made scripts that can be used directly with your item. The editor now support color coding (LUA and specific IRB commands) and a line count GUI that can be displayed or hidden.

Positionning

The player can be set via the interface or in a LUA script to use different types of controls. Currently implemented:
RTS (Real time strategy type controls)
RPG (Third person RPG style controls)
FPS (First person shooter type contols)

Using LUA, the user can tweak the controls even more, and limit the view, rotation, etc.

 
   

 

The main features are:

  • It's FREE!
  • It's open source, under MIT/X11 license.
  • Irrlicht based irrlicht.sourceforge.net
  • Cross-platform (Windows and Linux for now)
  • Real time terrain edit
  • Auto paint terrain (grass, sand, ...)
  • Dynamic grid based terrain system, extensible by adding segments
  • Ocean system integrated to terrain
  • Real time vegetation paint
  • Drag-drop NPC/enemy positioning
  • Selectable player controls
  • Player controls can be tweaked (LUA)
  • Player controls keys can be reassigned (LUA)
  • Object tiles for easy dungeon creation
  • Lua scripting for ingame actions and AI
  • Objects with skeleton can have attachments (LUA & XML)
  • Attachments can be used to attach weapons (LUA)
  • Dynamic creation of objects from LUA (Spawning)
  • Objects can have their materials redefined with XML
  • XML language strings (favoring translations)
  • XML based project file (user games are saved into a XML file)
  • OpenGL and GLSL effects

Created using theses technologies:

Rendering engine:

Scripting language:



Where are our visitors?

Images added january 04, 2014

Scale function Asset selection New edition interface & Selection by lists Interiors
Material lightmap support Material fake water support New grid Orthographic view
Improved terrainImproved terrainImproved terrainImproved terrain

Images added january 16, 2012

Interface rework and new editor camera

Images added november 28, 2011

Interface rework and new editor camera New views from the Maya camera New views from the Maya camera Current ingame dialogs Current ingame combat

Images added may 12, 2011

Picture of the current standard interface for release 0.2 New boss model introducted. Image 1 New boss model introducted. Image 2

Images added august 20, 2010


Images added september 09, 2010


Images added september 08, 2010


Images added july 20, 2010


Images added july 11, 2010


Logo

Alpha Release 0.31 ( February 21, 2015)

Win32 (Windows), Installer

Download Alpha 0.31, Installer binary & sources - 155Mb

Win32 (Windows), zip archive

Download Alpha 0.31, binary - 155Mb

Download Alpha 0.31, binary with sources - 255Mb

Linux (Ubuntu 64 bit version) tar/gz archive

Download Alpha 0.31, binary - 155Mb

Download Alpha 0.31, binary with sources - 255Mb


Alpha Release 0.3 (December 27, 2014)

Win32 (Windows), zip archive

Download Alpha 0.3, binary - 155Mb

Download Alpha 0.3, binary with sources - 255Mb

Linux (Ubuntu 64 bit version) tar/gz archive

Download Alpha 0.3, binary - 155Mb

Download Alpha 0.3, binary with sources - 255Mb


Alpha Release 0.21 (March 3, 2012)

Win32 (Windows), zip archive

Download Win32 Alpha 2.1 binary and sources - 34.2Mb

Download Win32 Alpha 2.1 binary only - 26.4Mb

Download Win32 Alpha 2.1 sources only - 11.6Mb

Linux (Ubuntu, Debian), tar/gz archive

Download Linux Alpha 2.1 binary and sources - 35.6Mb

Download Linux Alpha 2.1 binary only - 28,7Mb

Download Linux Alpha 2.1 sources only - 10.7Mb


Alpha Release 0.2 (October 23, 2011)

Download Alpha 2 (with sources) 60Mb

Download Alpha 2 (binary only) 54Mb

Notes:
- Some dependancies are needed for creating a wxWidget build (wxWidget 2.9).
- For building the Win32 version, project files for MSVC, MSVC express are given.
- For building the Linux version, project files for Codeblock are given.


Alpha release 0.1 (November 27, 2010)

Donwload Alpha 1 (with source).

Donwload Alpha 1 (binary only).

Both of this files have two projects: SAMPLE and TUTORIAL1, you can use them to see the program in action.


SVN Access

Here is the URL for the SVN Access:

svn checkout http://svn.code.sf.net/p/irrrpgbuilder/code/ irrrpgbuilder-code


About the MIT license terms:

Copyright (C) 2012 Andres Jesse Porfirio, Christian Clavet

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

 


Created using theses technologies:

Rendering engine:

Scripting language:

 

Note: This will need to be updated to reflect changes made in alpha 0.2

#1 - The Main Interface

The program interface contains basically the main toolbar, and some modules has their own buttons. In the main toolbar you can see three sets of buttons:

Project management buttons

New Project - Creates a new empty project

Load Project - Loads an existing project

Save Project - Save the current project to a XML file (XML extension will be added automatically, just type the project name when saving/loading)


Edition modules

Terrain Elevation - In this module you can change the terrain elevation and create mountains and lakes/oceans. You have to use the Left and Right mouse Buttons to click the terrain. By Left-Clicking the terrain raises up (creating mountains), by Right-Clicking the terrain goes down (showing the water), and if you want to normalize the terrain elevation just Hold the CONTROL key and Left-Click.

Terrain Segments - When you start a new project your scenery is very small, if you want to expand it you have to add new Terrain Segments. This is very easy, go to the Terrain Segments Module and Left-Click the Empty Segments (Empty segments are located at the borders of your scenary, they are flat black-yellow striped planes)

Vegetation Paint - In this module you can add vegetation to your scenery. Left-Click any area of your Terrain to create Trees, if you want to remove them just Right-Click the trees.

Dynamic Objects - This is the coolest module of the system, here you can create your enemies and NPCs. At the right side of the screen you can see a new vertical panel:

This panel contains a list of objects and a 3D representation for each one. To add an object to your scenery select it in the list and Left-Click any place of your terrain.

To edit the properties of a Dynamic Object Left-Click it, a Context Menu will be shown. In this menu you have three actions, Edit Lua Script (here you can change the behavior of the object, AI, Dialogs, etc), Move/Rotate (to change the object position move the Mouse, and to change the rotation turn the Mouse Wheel) and Remove Object (the object will be removed from scenery).

Edit Player - Here you can set the initial player position, and the player's Lua Script.

Edito Global Script - This is a global script, put here functions relative to the world like change the time of day, fog, lighting, global timers, etc.

Play Game - Clik this button to start your gameplay, all lua functions named "onLoad()" will be called here. Don't worry about the Lua scripts now, this tutorial is just for explain the modules.

Stop Game - Stop gameplay and returns to the edition mode.


Program control

Help - Shows the IrrRPG Builder help options.

About - Shows the IrrRPG Builder about text.

Close Program - Click this button to close IrrRPG Builder.


The most part of the modules allows to move the camera arround the scenery, to do this simply use the UP, DOWN, LEFT and RIGHT keys.

#2 - Mountains and Trees

Ok, this is the IrrRPG Builer "Hello World" tutorial. Now you already knows the interface and we are going to create a simple static scenery. Static stuffs does not interact with the user during gameplay.

First click on the Terrain Elevation button

Now Left-Click the terrain to create Mountains and Right-Click to create Oceans/Lakes.

You can also Normalize your terrain by Holding the CONTROL key and Left-Clicking the terrain. This is very important because the Red Areas are not playable, that means the player cannot walk on Mountains and Water.

IMPORTANT : Don't let the Player on a Red Area, this way he will be unable to walk!

Now we are going to create forests!

Go to the Vegetation Paint module.

Now Left-Click the terrain to add Trees and Right-Click to Remove them.

Is time to test your work, click Play Game to walk around the scenery.

That's all Folks! Now save your work and go to the next lesson!

#3 - Player Configuration

Here we are going to set the Player initial position and a little initialization script

First go to the Character Editor

To define the player position Left-Click any area of your Terrain

Now setup the player life (it is needed for the next tutorials), click the player script button .

Create a function named onLoad() and set player's initial life:

function onLoad()

    setPlayerLife(100)

end

#4 - Your Fist Enemy

Until now we have mountains, oceans, and trees, awesome! ..but unuseful!

Let's add challenge to our game adding an enemy, go to the Dynamic Objects Mode .

Select the frog in the list at Right Panel

Now Left-Click in any Non-Red place (Playable Area) of your Terrain to create a new Frog

The next step is create the frog behavior, Left-Click your frog and open the Lua Script Editor.

Each object can have three basic functions:

onLoad() : This function is called when the gameplay begins. You can put here the initialization of variables, 3D object starting animation, etc.

onClicked() : This function is called every time the object is Left-Clicked during the gameplay. You can put here procedures like decrease the enemy life if he is under attack (and counter attack decreasing player's life for example), start a dialog, etc.

step() : This function is called continuously at each frame, here you can update the object position (or simply use a function to make him walk). In the enemies case you can verify the distance from the player and calculate the attack (only attacking when the player is close to the enemy), etc.

bla, bla, bla.. So let's work!

Create a function named "step" :

function step()

end

Now add a command to make the frog chase the player:

function step()

    chaseObject("player")

end

Click Play button to see the result.

Cool, now the frog chase's player, but he does not have animation.. let's make the frog jump!

Create a function named onLoad() and set the frog animation:

function onLoad()

    setAnimation("walk")

end

This is a simple behavior, the frog chase player, now let's make this a little more interesting. Change your script to the following:

function step()

    if (distanceFrom("player") < 2) then

        chaseObject("player")

    else

        walkRandomly()

    end

end

Click Play and see the result.

Now we are checking the distance between the player and the frog, if the frog is near to player the "chase" function is called, and when the frog is far he walks randomly.

Ok, now our enemy walks! but he still harmless, let's make him dangerous, hehe

Remove your chaseObject("player") line and write the following code in her place:

function step()

    if (distanceFrom("player") < 2) then

        if (distanceFrom("player") < 0.75) then

            decreasePlayerLife(1)

        else

            chaseObject("player")

        end

    else

        walkRandomly()

    end

end

When we create new "if" and add line decreasePlayerLife(1) the frog attacks the player if he is too close (0.75). Click Play and test if it works.

Fantastic, but the player only receive attacks and can't kill the frog, that's because the frog have no life, haha. Go to the frog's onLoad function and add the following lines:

life = 20

setEnemy()

Now the fog haves life, and the program knows he is an enemy (if you don't set it as an enemy the player will not attack the frog). Also create a function named onClicked() to make the frog receive attacks:

function onClicked()

    if(life == 0) then

        setEnabled(false)

    else

        life = life -1

    end

end

You can set an object as enemy ( setEnemy() ) or normal ( setObject() ). Objects also have options to disable and enable them, just use setEnable(true/false). Disabled objects is not shown and his step() function is not called.

Finally, test it by clicking Play . Here's your final script:

function step()

    if (distanceFrom("player") < 2) then

        if (distanceFrom("player") < 0.75) then

            decreasePlayerLife(1)

        else

            chaseObject("player")

        end

    else

        walkRandomly()

    end

end

function onClicked()

    if(life == 0) then

        setEnabled(false)

    else

        life = life -1

    end

end

function onLoad()

    setAnimation("walk")

    life = 20

    setEnemy()

end