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
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.
Great news coming soon...
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!
If you are interested to contribute to the IRB project please look at this forum post!
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
Some of the changes in 0.31:
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:
Check the download area!
We are still working on alpha 0.3 to be released later during this year.
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
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)
Andres created a FACEBOOK page for our project.
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
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.
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!
We keep working hard to create the best opensource RPG Builder!
At the moment our development copy has many updates, check screenshots tab
Here's a short video of the revision 81, it shows the updated interface and few changes from the alpha 1.
Now we can discuss everything about the irb in the official forum. Check it: irrrpgbuilder.sourceforge.net/forum
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!
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
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:
Recently Borges (http://vhborges.tumblr.com) created a logo for IrrRPG Builder. Many thanks man!
Features: |
|
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. |
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. |
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. |
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. |
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 |
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.
|
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. |
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. |
The player can be set via the interface or in a LUA script to use different types of controls. Currently implemented: Using LUA, the user can tweak the controls even more, and limit the view, rotation, etc. |
|
Rendering engine:
Scripting language:
Download Alpha 0.31, Installer binary & sources - 155Mb
Download Alpha 0.31, binary - 155Mb
Download Alpha 0.31, binary with sources - 255Mb
Download Alpha 0.31, binary - 155Mb
Download Alpha 0.31, binary with sources - 255Mb
Download Alpha 0.3, binary - 155Mb
Download Alpha 0.3, binary with sources - 255Mb
Download Alpha 0.3, binary - 155Mb
Download Alpha 0.3, binary with sources - 255Mb
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
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
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.
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.
Here is the URL for the SVN Access:
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.
Note: This will need to be updated to reflect changes made in alpha 0.2
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.
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!
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
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