Andres Jesse Porfirio (www.andresjesse.com)
Christian Clavet (www.clavet.org)
Professor Tony Alexander Hild.
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!
Objects can be placed on the ground with a few click of the mouse. Rotation is handled with the mouse wheel. The editor feature a "model browser" to select the model to place on the terrain.
The level of water is pre-defined inside the engine. You only have to "dig" inside the terrain to reveal the water.
Creating a landscape 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, so the texturing is automatic. If you need a different environment, the pre-defined texture can be changed.
The "brush" tool, have a radius, a strenght, and a "levelling" ajustement so you have precise control over the way you define your landscape
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.
creating vegetation is done using the mouse, just click on the ground to plant a tree! To remove a tree, just click on it.
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.
- 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.
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 buttonsNew 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 modulesTerrain 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 controlHelp - 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:
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" :
Now add a command to make the frog chase the player:
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:
This is a simple behavior, the frog chase player, now let's make this a little more interesting. Change your script to the following:
if (distanceFrom("player") < 2) then
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:
if (distanceFrom("player") < 2) then
if (distanceFrom("player") < 0.75) then
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
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:
if(life == 0) then
life = life -1
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:
if (distanceFrom("player") < 2) then
if (distanceFrom("player") < 0.75) then
if(life == 0) then
life = life -1
life = 20