MAGE - Level editor

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
User avatar
rewinder
Halfling
Posts: 68
Joined: Fri Sep 24, 2004 5:15 am
Location: Omsk / Russia

MAGE - Level editor

Post by rewinder »

Hi all.
Our team is working on level editor for our game. We call it MAGE (Multi-purpose Abstract Game Editor). When we started to develop it we keep in mind one thing: reusability. Our goal is make it as abstract and multiporposional as possible.
Before we thought it will be internal tool and we didn't going to show it to public. But now we think that it will be good for community to have such tool, so after some time we need for testing we are planning to release sources.
It is very unstable now, but it content all things we planned to develop:
- property system
- event system (borrowed from CEGUI)
- object hierarchy system

We are using Qt 4.0 for GUI, and it is main 3rd party dependency. In other hand, MAGE can be very easily ported to Linux and Mac.

Main disadvantages are:
- Ugly API. It really needs some refactoring.
- Undocumented and uncommented code. Our skills in English are very low, and it is one of our main problems.

So, there is a lot of work to do. But now MAGE does it's main job: load plugin which contents tools, objects, loaders/savers and give this arsenal to user.
Developers can easily write their own plugins for their projects, so core framework (GUI, renderer, input, etc) are premanent, but concrete type of objects and tools are loaded from shared libraries. So, we can say that MAGE is a framework for your own level editor.

We are looking forward for your comments and suggestions and we are going to release sources after about 2 weeks.

Screenshot: http://rewinder.studiodva.com/mage.jpg

WBR, rewinder
Studio "DVA" Team
User avatar
spookyboo
Silver Sponsor
Silver Sponsor
Posts: 1141
Joined: Tue Jul 06, 2004 5:57 am
x 151

Post by spookyboo »

Rewinder,

Good initiative, although I have mixed feelings with another editor. There are several projects that are still WIP, but none of them really delivered the goods. I don't blame anyone; we are all doing this in our spare time, but I hope one of these projects really reaches the finish. I wish you at least good luck with the project.
User avatar
skullfire
Gremlin
Posts: 150
Joined: Sat Mar 19, 2005 7:51 pm
Location: San Jose, Costa Rica

Post by skullfire »

Great work man. Though, if Maleficus releases the .Net version, this project could be ported to that, taking advantage of several components such as the property editor and well... everything the .net BCL has to offer.
I may have alzheimer, but at least I dont have alzheimer.
User avatar
rewinder
Halfling
Posts: 68
Joined: Fri Sep 24, 2004 5:15 am
Location: Omsk / Russia

Post by rewinder »

I don't blame anyone; we are all doing this in our spare time, but I hope one of these projects really reaches the finish.
No, working on our game project (which is about 70% finished) and on MAGE is our regular work so it gives (at least to us) hope in good result of project.
I wish you at least good luck with the project.
Thanks for warm words :wink:
Great work man. Though, if Maleficus releases the .Net version, this project could be ported to that, taking advantage of several components such as the property editor and well... everything the .net BCL has to offer.
Maybe, maybe... But we develop all our GUI using Qt and don't know mutch about .Net technology. I think property editor and other components can be easily implemented in Qt too, so it makes no sense. But if anyone wants to port MAGE to .Net, you are welcome :D .
Maleficus
Greenskin
Posts: 116
Joined: Sat Jul 30, 2005 11:11 am
Location: Vancouver, B.C. Canada

Post by Maleficus »

skullfire wrote:Great work man. Though, if Maleficus releases the .Net version, this project could be ported to that, taking advantage of several components such as the property editor and well... everything the .net BCL has to offer.
That might be a pain, since mono's System.Windows.Forms is still in development and more or less unusable. I imagine they're using GTK for windowing (since it's crossplatform), and while there are GTK bindings for .NET/Mono, I have no clue how one would get Ogre working with them. Sounds like an interesting project though :)

edit- oh, they used QT. I'm not sure bindings even exist for it. It might though.
User avatar
rewinder
Halfling
Posts: 68
Joined: Fri Sep 24, 2004 5:15 am
Location: Omsk / Russia

Post by rewinder »

oh, they used QT. I'm not sure bindings even exist for it. It might though.
I don't think that using third layer over native windowing system is a good way. Qt already abstracted from concrete platform, so why you like .NET so much?
User avatar
Chris Jones
Lich
Posts: 1742
Joined: Tue Apr 05, 2005 1:11 pm
Location: Gosport, South England
x 1

Post by Chris Jones »

i like .net too. the editor im currently making uses the .net framework (written in C#)

its very easy to use, dont have to worry about memory leaks etc
the GUI system is quick and easy to use. its very fast to create working forms. its perfect for editors!
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179

Re: MAGE - Level editor

Post by jacmoe »

rewinder wrote:Our team is working on level editor for our game. We call it MAGE (Multi-purpose Abstract Game Editor). When we started to develop it we keep in mind one thing: reusability. Our goal is make it as abstract and multiporposional as possible.
This is a very good idea! :)
rewinder wrote:Before we thought it will be internal tool and we didn't going to show it to public. But now we think that it will be good for community to have such tool, so after some time we need for testing we are planning to release sources.
Very appreciated! :D
There is a lot of editors in progress right now, but none of them are released or usable as is.
It looks as if your editor is going to be the first one out. :)
rewinder wrote:It is very unstable now, but it content all things we planned to develop:
- property system
- event system (borrowed from CEGUI)
- object hierarchy system
This is more features than any WIP Ogre editor. :wink:
rewinder wrote:We are using Qt 4.0 for GUI, and it is main 3rd party dependency. In other hand, MAGE can be very easily ported to Linux and Mac.
Even better! 8)
rewinder wrote:Main disadvantages are:
- Ugly API. It really needs some refactoring.
- Undocumented and uncommented code. Our skills in English are very low, and it is one of our main problems.
If you decide to open-source it, and give it a proper open-source home (like ogreaddons or Berlios) - this could be improved upon by a lot of english speaking users and/or competent programmers. :wink:
rewinder wrote:So, there is a lot of work to do. But now MAGE does it's main job: load plugin which contents tools, objects, loaders/savers and give this arsenal to user.
This is great news! :D
rewinder wrote:Developers can easily write their own plugins for their projects, so core framework (GUI, renderer, input, etc) are premanent, but concrete type of objects and tools are loaded from shared libraries. So, we can say that MAGE is a framework for your own level editor.
It looks as if you guys did an excellent job! :)
rewinder wrote:We are looking forward for your comments and suggestions and we are going to release sources after about 2 weeks.
:shock:
I will be watching this space, that's for sure! :P
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Maleficus
Greenskin
Posts: 116
Joined: Sat Jul 30, 2005 11:11 am
Location: Vancouver, B.C. Canada

Post by Maleficus »

rewinder wrote: I don't think that using third layer over native windowing system is a good way.
I agree.
rewinder wrote: Qt already abstracted from concrete platform, so why you like .NET so much?
I'm not the one who suggested the idea :) . And I do think it would be more trouble than it's worth. As for .NET, I'm not a fanboy, there's things I don't like. For example, the garbage collector annoys me. Garbage collection is for newbies who don't know how to delete their objects.

Let's just say, I'm more specifically a c# fanboy than a .NET fanboy ;) . My ideal language would be an unmanaged version of c#.

But this isn't a topic for this thread. I'll be quiet now :) .

Neat project, guys :)
User avatar
rewinder
Halfling
Posts: 68
Joined: Fri Sep 24, 2004 5:15 am
Location: Omsk / Russia

Post by rewinder »

There is a lot of editors in progress right now, but none of them are released or usable as is.
Ruefully, but MAGE in it's current state is very far from complete product. It works now, but our main goal is robust and intuitive API for toolset developers (like Ogre have), and we working on it. Another aspect is user-friendly interface and comfortable object editing (like MAX/Maya have).
Anyway, work is in progress.
If you decide to open-source it, and give it a proper open-source home (like ogreaddons or Berlios) - this could be improved upon by a lot of english speaking users and/or competent programmers.
Yes, of course. Now I'm waiting for project approval in sourceforge.net. :)
But this isn't a topic for this thread. I'll be quiet now
Yes, I'm quiet too :D As many peolpe as many tasties.
User avatar
BenO
Goblin
Posts: 241
Joined: Mon Apr 18, 2005 5:03 pm

Post by BenO »

i heard Garbage collection could be faster than manual deletion :o
Benjamin RIGAUD
Software Engineer
User avatar
rewinder
Halfling
Posts: 68
Joined: Fri Sep 24, 2004 5:15 am
Location: Omsk / Russia

Post by rewinder »

We just implemented exact object picking (using polygon-to-ray collision detection) and handy objrect movement/rotation/scale (like Maya does):
Image

First test of toolset for our game:
Image
User avatar
Olex
Hobgoblin
Posts: 593
Joined: Fri Apr 08, 2005 6:08 pm
Location: WA, USA

Post by Olex »

Any chance that you could develop your editor in such a way, that later, someone (could be me :wink: ) would develop a physics editor out of it?

P.S. By physics editor, I mean being able to create basic shapes, rotate, move, of course, do some funky relation based activities (like adding a joint, motor, etc.), and then later being able to easily read all of it, to produce a physics xml description.
User avatar
Chris Jones
Lich
Posts: 1742
Joined: Tue Apr 05, 2005 1:11 pm
Location: Gosport, South England
x 1

Post by Chris Jones »

i was thinking about that for my editor, im making my own file format to hold all info about the scene including physics, AI, sound etc etc

maybe this could be done with this editor too?
Dilon
Gnoblar
Posts: 12
Joined: Thu Jul 14, 2005 9:44 am
Location: Russia

Post by Dilon »

Our team has released first version of Mage. You can gain access to it through the sf.net with help the CVS:
MAGE
How to use CVS at sf.net
Note, that the code is too raw and required for refactoring.
some items from the TODO list:
-- Camera Controller(smothly moving, orthographic projection, predefined views)
-- Оbject Selector(different kinds of object picking)
-- Interface improving
-- Docs, new toolsets
If somebody want work with us at this project - welcome ;)
Dilon
Gnoblar
Posts: 12
Joined: Thu Jul 14, 2005 9:44 am
Location: Russia

Post by Dilon »

And some ideas about incapsulating such thing as AI, physics, etc at the editor. I think it's possible, but after some architecture remaking... maybe it will be realised like a toolsets plugins..
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179

Post by jacmoe »

The Qt/Windows Open Source Edition only supports the MinGW compiler.
What QT should I get in order to use it with msvc 2003 .NET ? :)
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Guest

Post by Guest »

BenO wrote:i heard Garbage collection could be faster than manual deletion :o
it is not
User avatar
Chris Jones
Lich
Posts: 1742
Joined: Tue Apr 05, 2005 1:11 pm
Location: Gosport, South England
x 1

Post by Chris Jones »

isnt garbage collection slower? (im not sure what that question really related to but anyway)

ive read on some website about garbage collection halting a program for upto a few seconds whilst it did what it was doing. besides, if the garbage collector was going to delete an object, surly it would have to do the same thing as manual deletion, so it would be around the same speed? or even slower? seeing as its doing other things too
User avatar
rewinder
Halfling
Posts: 68
Joined: Fri Sep 24, 2004 5:15 am
Location: Omsk / Russia

Post by rewinder »

Any chance that you could develop your editor in such a way, that later, someone (could be me ) would develop a physics editor out of it?
Yes, you can set up bodies/joints/collisions as usual and then run physic simulation. It is allowed by MAGE's architecture, you need just implement it in separate toolset :)
and then later being able to easily read all of it, to produce a physics xml description.
MAGE saving all scene data throught abstract Saver class. Your toolset should implement saving method - you can use any format you want.
i was thinking about that for my editor, im making my own file format to hold all info about the scene including physics, AI, sound etc etc

maybe this could be done with this editor too?
Yes, of course. One thing you need is your own toolset which contents all of tools and objects you need. What kind they will be depends only on your imagination :wink:
What QT should I get in order to use it with msvc 2003 .NET ?
Oh... really, Qt/Windows OS works only with MinGW. And we are using commercial version of Qt, so we didn't know about this trouble. :?
Maybe it is possible to use commercial version of qmake to generate neccesary solution and project files for Open Source edition? I will try it now. By the way, does this solution conflicts with Qt's license?
Guest

Post by Guest »

well... it would be faster if for example garbage collector finds big chunk containing of cmall allocated chunks and free that at once.

but waiting seconds for program to finish is not very nice. But i'm not an expert in that. ask me about bus engines.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179

Post by jacmoe »

rewinder wrote:Maybe it is possible to use commercial version of qmake to generate neccesary solution and project files for Open Source edition? I will try it now. By the way, does this solution conflicts with Qt's license?
I don't think so. The QT OS license is GPL - there's no (or I failed to find any) mentioning of it not working with msvc - even the INSTALL has a section on msvc. Only when you try and run configure, you will learn that it does not work on anything but mingw if you don't have a license key.
Sucks.

But I don't think the distribution of vc project files will violate anything..?
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
rewinder
Halfling
Posts: 68
Joined: Fri Sep 24, 2004 5:15 am
Location: Omsk / Russia

Post by rewinder »

Step-by-step instructions (it works for Qt 4.0.0, but i think it will work with fresh Qt 4.0.1 too):
1) Download Qt/Windows Open Source.
2) Download this zip file
3) Extract Qt/Windows archive to something like C:\Qt\4.0.0 or C:\Qt\4.0.1 (warning! no spaces allowed in installation path!)
4) Run Visual Studio command prompt
5) Set up env. variables, replacing C:\Qt\4.0.X with your installation path:

Code: Select all

set QTDIR=C:\Qt\4.0.X
set PATH=%PATH%;C:\Qt\4.0.X\bin
set QMAKESPEC=win32-msvc.net
6) Extract qmake.exe from qtopen2nmake.zip to C:\Qt\4.0.X\bin\
7) Extract win32-msvc.net from qtopen2nmake.zip to C:\Qt\4.0.X\mkspecs\
8 )

Code: Select all

C:
cd \Qt\4.0.X
configure.exe -platform win32-g++ -debug-and-release -shared
9) Open .qmake.cache in text editor and replace QMAKESPEC=win32-g++ with QMAKESPEC=win32-msvc.net
10)

Code: Select all

qmake.exe
nmake.exe
11) Finished! :D
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179

Post by jacmoe »

I had to name the Qt directory: c:/Qt/4.0.0 - otherwise qmake fails.

Then I had to add these lines to the qplatformdefs.h in win32-msvc.net:

Code: Select all

#define QT_FOPEN                ::fopen
#define QT_FSEEK                ::fseek
#define QT_FTELL                ::ftell
#define QT_FGETPOS              ::fgetpos
#define QT_FSETPOS              ::fsetpos
#define QT_FPOS_T               fpos_t
#define QT_OFF_T                off_t
That got me as far as compiling qtmain and qtmaind, moc.exe and something else, but the linker dies:
qtextcodec.cpp
qutfcodec.cpp
qisciicodec.cpp
qtsciicodec.cpp
qlatincodec.cpp
qsimplecodec.cpp
qfontlaocodec.cpp
Generating Code...
cl -c -nologo -Zm200 -O2 -MD -O2 -MD -GR -EHsc -W3 -w34100 -w34189 -DUNI
CODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_EDITION=QT_EDITION_DESKTOP -DQT_BOOTSTR
APPED -DQT_RCC -DQT_LITE_UNICODE -DQT_NO_DATASTREAM -DQT_NO_THREAD -DQT_NO_QOBJE
CT -DQT_NO_UNICODETABLES -DQT_NO_LIBRARY -DQT_NODLL -I"..\..\corelib\arch\generi
c" -I"C:/Qt/4.0.0/include" -I"." -I"C:/Qt/4.0.0/include/QtCore" -I"C:/Qt/4.0.0/i
nclude/QtXml" -I"." -I"C:\Qt\4.0.0\mkspecs\win32-msvc.net" -Fotmp\obj\release_sh
ared\ @C:\DOCUME~1\jacmoe\LOCALS~1\Temp\nm41.tmp
qdom.cpp
qxml.cpp
Generating Code...
link /NOLOGO /SUBSYSTEM:CONSOLE /OUT:"..\..\..\bin\rcc.exe" @C:\DOCUME~1
\jacmoe\LOCALS~1\Temp\nm42.tmp
qbytearray.obj : error LNK2019: unresolved external symbol _compress2 referenced
in function "class QByteArray __cdecl qCompress(unsigned char const *,int,int)"
(?qCompress@@YA?AVQByteArray@@PBEHH@Z)
qbytearray.obj : error LNK2019: unresolved external symbol _uncompress reference
d in function "class QByteArray __cdecl qUncompress(unsigned char const *,int)"
(?qUncompress@@YA?AVQByteArray@@PBEH@Z)
..\..\..\bin\rcc.exe : fatal error LNK1120: 2 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio .NET 2003\
VC7\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

C:\Qt\4.0.0>
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
BenO
Goblin
Posts: 241
Joined: Mon Apr 18, 2005 5:03 pm

Post by BenO »

let's stop hijacking this thread about garbage collection ^^

i made a new thread to talk about :
http://www.ogre3d.org/phpBB2/viewtopic. ... 4865#94865
Benjamin RIGAUD
Software Engineer