World of Ideas : Irrlicht-powered fighting game [BETA 2]

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
Agar
Posts: 22
Joined: Wed May 03, 2006 7:14 pm
Location: France
Contact:

World of Ideas : Irrlicht-powered fighting game [BETA 2]

Post by Agar »

Hi!

I've just released the first beta version of a silly and irrlicht-powered versus fighting game, World of Ideas. This is a Mortal Kombat-style game with philosophers for characters. You can learn more (and download the beta) HERE.

You can see some screenshots here

EDIT: BETA 2 HAS JUST BEEN RELEASED
Last edited by Agar on Mon Sep 11, 2006 8:53 pm, edited 3 times in total.
etcaptor
Posts: 871
Joined: Fri Apr 09, 2004 10:32 pm
Location: Valhalla
Contact:

Post by etcaptor »

I won all battles before going to my bed :D
What can I say - I'm impressed, this was my favourite game stile like mortal arts fan. It's funny to play and graphics looks well.
Since I understod that heroes are philosophers even thougth that they are any kung-fu grand masters :lol:
From my not artist point of view models looks fine. Animations looks well and will waiting for news for your development.
Last edited by etcaptor on Wed Jun 21, 2006 10:39 am, edited 1 time in total.
ImageImage
Site development -Rock and metal online
--- etcaptor.com ------freenetlife.com
Strong99
Admin
Posts: 687
Joined: Fri Mar 31, 2006 7:06 pm
Location: Netherlands
Contact:

Post by Strong99 »

Greate game, only there's one small microsoft bug, i had to instal the newest version of framenetwork... that's not very kind :?
Agar
Posts: 22
Joined: Wed May 03, 2006 7:14 pm
Location: France
Contact:

Post by Agar »

strong99 wrote:Greate game, only there's one small microsoft bug, i had to instal the newest version of framenetwork... that's not very kind :?
Yeah, I know. I never had the courage to learn C++ (I've had some fun modding Quake II and III, but I'm not good enough to write a program from scratch), so I praise C# as my own personal messiah (no C++ memory management and still the great syntax).

But I'll learn C++ some day, I promise. :wink:
GueZt_Coders
Posts: 44
Joined: Tue Jan 17, 2006 4:04 am

Post by GueZt_Coders »

Very cool sets of animation sequence, did u make
the model and the animation key frame ?

Very well done.
Just part of irrlicht related project| CLEAR CODE NOTATIONS IS LARGELY SELF CODUMENTING!
Agar
Posts: 22
Joined: Wed May 03, 2006 7:14 pm
Location: France
Contact:

Post by Agar »

GueZt_Coders wrote:Very cool sets of animation sequence, did u make
the model and the animation key frame ?

Very well done.
As you can read in the game PDF manual, animation key frames and models are based on models for the "The Specialists" mod for Half-Life.
World of Ideas : an Irrlicht-powered versus fighting game
dawasw
Posts: 357
Joined: Tue Aug 10, 2004 4:39 pm
Location: Poland

Post by dawasw »

Pro man.

Maybe someday you will make some Mortal Kombat too XD

It's a long time I've seen any MK related game on PC. Too bad that midway is doin stuff only for consoles now.
trunks14
Posts: 45
Joined: Fri Dec 17, 2004 7:30 am
Location: America

Post by trunks14 »

Oh so bad it's managed :cry: i'm not donwloading it, i dislike C# specially cuz i have to install the framework.

Yep maybe you will one day learn C++.
Not yet.
dawasw
Posts: 357
Joined: Tue Aug 10, 2004 4:39 pm
Location: Poland

Post by dawasw »

Sorry for offtop but what's bad about framework lol ?

Some programs just need it so I have it - and it takes only few mb of space on hardrive.
zenaku
Posts: 212
Joined: Tue Jun 07, 2005 11:23 pm

Post by zenaku »

trunks14 wrote:Oh so bad it's managed :cry: i'm not donwloading it, i dislike C# specially cuz i have to install the framework.

Yep maybe you will one day learn C++.

Yep maybe you will one day learn C#. ;)

C# rocks.

How can installing .NET matter? If you compile C++ with VS 2005 and link multithreaded-dll, you will be installing all new C runtimes (msvcrt80.dll and friends) on machines that don't have it. How is that any different than installing .NET?

I'd rather have an app depend on .NET than install new C runtimes. You can always uninstall/reninstall .NET. Try fixing broken runtimes sometime.
-------------------------------------
IrrLua - a Lua binding for Irrlicht
http://irrlua.sourceforge.net/
shurijo
Posts: 148
Joined: Sat Feb 21, 2004 3:04 am

Post by shurijo »

Just downloaded and it worked great! Its good to see some .NET Irrlicht apps out there.

Just looking over the source code and will probably have a few ideas for you (not critiquing, just trying to point out any advice or tips where I see you can improve your app).
  • You can use Application.StartupPath to get the directory where the .exe is at. Instead of parsing it out of the command line arguments, etc.
  • I'd recommend moving to the App.config (XML) format instead of .ini. Its more standard now with .NET apps and much, much easier to read. You can define sections within them, etc. If you want to see some examples, just let me know.
  • Not really a big deal, but you might want to look into the singleton pattern instead of using all those static properties, methods. You can delcare a single instance of a object rather than declare everything as static. Its just a little easier and less code, because you only declare 1 static variable instead of declaring everything static. I'll be glad to show you my main game class that is implemented that way (using C# 2.0 also).
  • The options dialog cut off the OK/Cancel buttons on the bottom.
  • I noticed you commented out the Joystick parts. I can't wait to see the game with the joystick implemented. I'm gonna have to find my old one and try it out again.
  • I really like the Audio class and sounds, I may .. ahem .. use it for some ideas for my Irrlicht app.
  • I also liked how you create a facade/adapter whatever there for your Engine, Video, Scene classes. I'm going to have to implement something like that in my game rather than working directly with Irrlicht objects from within my entities.
  • Why did you go with each letter as a 3d object rather than use the Irrlicht font loading?
Looks good and looking forward to the next update.
Yeurl
Posts: 31
Joined: Thu Apr 13, 2006 9:34 am

Post by Yeurl »

hi

Agar

great job man, i have read quickly your code source.
That great to see so fun projet into .net plateform and i hope that you will continue to do it :p


shurijo
I'd recommend moving to the App.config (XML) format instead of .ini. Its more standard now with .NET apps and much, much easier to read. You can define sections within them, etc. If you want to see some examples, just let me know.
i m curius to see how you do it ... if you can make a example it will be sure that it will be welcom :)
Not really a big deal, but you might want to look into the singleton pattern instead of using all those static properties, methods. You can delcare a single instance of a object rather than declare everything as static. Its just a little easier and less code, because you only declare 1 static variable instead of declaring everything static. I'll be glad to show you my main game class that is implemented that way (using C# 2.0 also).
design pattern is also available into framework 1.1, and if i remember based on the static one
zenaku
Posts: 212
Joined: Tue Jun 07, 2005 11:23 pm

Post by zenaku »

I'd recommend moving to the App.config (XML) format instead of .ini. Its more standard now with .NET apps and much, much easier to read. You can define sections within them, etc. If you want to see some examples, just let me know.
i m curius to see how you do it ... if you can make a example it will be sure that it will be welcom :)
Right click on your project under visual studio, and select properties. There is a section under properties called "Application settings". In there you can enter key/value pairs of your config options.


To access them from your code, IIRC you do:

Code: Select all

Application.Settings["Key"] = value
I may be wrong about the code part, however. It's pretty easy cheese though. All your strings end up in a file called 'ApplicationName.exe.config'
-------------------------------------
IrrLua - a Lua binding for Irrlicht
http://irrlua.sourceforge.net/
Agar
Posts: 22
Joined: Wed May 03, 2006 7:14 pm
Location: France
Contact:

Post by Agar »

Thanks for your comments everyone. After so many nights without sleep spent on it, I'm glad to see this project is starting to get some serious attention (I had very positive feedback on a french videogame forum too Here's a link in case somebody here speaks our weird but beautiful tongue).

Now about your comments/critics/suggestions shurijo:
shurijo wrote: You can use Application.StartupPath to get the directory where the .exe is at. Instead of parsing it out of the command line arguments, etc.
Hmmm... I guess that's not complicated enough for me. :D
Seriously now, yeah, I think it would be better than my command-line thingy. I just hadn't thought about it.
shurijo wrote: I'd recommend moving to the App.config (XML) format instead of .ini. Its more standard now with .NET apps and much, much easier to read. You can define sections within them, etc. If you want to see some examples, just let me know.
The reason why I used INI files is because I'm used to their format and I never worked with XML before. Plus INI files can do anything I need for this project. Anyway if you've got some examples, sure, send them to me. I could always use some XML courses, it's gonna be useful some day, no matter if it's for this project or another one.
shurijo wrote: Not really a big deal, but you might want to look into the singleton pattern instead of using all those static properties, methods. You can delcare a single instance of a object rather than declare everything as static. Its just a little easier and less code, because you only declare 1 static variable instead of declaring everything static. I'll be glad to show you my main game class that is implemented that way (using C# 2.0 also).
Yeah, I know static classes are quite messy in this game. I didn't make the best use I could have done of them. It's just this project is my first one in a fully object-oriented language (I used to code in VB 6.0), so I guess my brain isn't used to think in an object-oriented way. :?
shurijo wrote: The options dialog cut off the OK/Cancel buttons on the bottom.
I wasn't aware of that. That's no big deal anyway as there will be an all-new options dialog in beta 2.
shurijo wrote: I noticed you commented out the Joystick parts. I can't wait to see the game with the joystick implemented. I'm gonna have to find my old one and try it out again.
I commented them out because I had some trouble with DirectInput (for some reason, the game won't start on any computer but mine if I add a reference to DInput). Now it's kinda fixed, as I've found that there are a few neat functions in WINMM.DLL that can handle game controllers very easily.
shurijo wrote: I really like the Audio class and sounds, I may .. ahem .. use it for some ideas for my Irrlicht app.
Yeah, the Bass library is very powerful (it can even handle 3d sounds for you guys with 5.1 systems) and easy to use. With just a little "wrapper class" like the one I wrote, buffering and playing sounds is a matter of a few lines of code.
shurijo wrote: I also liked how you create a facade/adapter whatever there for your Engine, Video, Scene classes. I'm going to have to implement something like that in my game rather than working directly with Irrlicht objects from within my entities.
I like this idea too. The best way to do it would be to create some sort of "world" class which would be a facade between game code and Irrlicht. Then you'd just call some function in this class (for instance int CreateEntity("model.x", "texture.jpg", "idlesound.wav", ...), the returned int being the new entity's index number) and the "facade" class would do the rest:
- Precaching the mesh & texture in new IMesh and ITexture objects if these files were not precached already when another object was created (else it would just use the already precached ones, thus saving memory by automatically avoiding to load twice the same files)
- Create the node
- Tell the Audio class to loop an idle sound -whose 3D coordinates would be the same as the node's-
- Create a light source if the entity has one (for instance if it's a torch/lamp)
- Etc, etc...
That's what I'll do for future versions of the game.
shurijo wrote: Why did you go with each letter as a 3d object rather than use the Irrlicht font loading?
I didn't know Irrlicht had a "font loader" for 3D fonts. How does it work? Anyway, I gave up using 3D fonts in beta 2. The new menu is 2D only. By the way, Irrlicht's 2D fonts are messy. Most of the time, the fonts' border are not sharp (they're blurry, with strange artefacts). That's why I used my own font loader in beta 2 (which you can see on beta 2's screenshots on my website. Just look at the character's names.)
World of Ideas : an Irrlicht-powered versus fighting game
shurijo
Posts: 148
Joined: Sat Feb 21, 2004 3:04 am

Post by shurijo »

Yeurl wrote: shurijo
I'd recommend moving to the App.config (XML) format instead of .ini. Its more standard now with .NET apps and much, much easier to read. You can define sections within them, etc. If you want to see some examples, just let me know.
i m curius to see how you do it ... if you can make a example it will be sure that it will be welcom :)
In 2.0, you just right click on the solution explorer and choose Add->New Item. Then choose Application Configuration.

That creates the App.config file which is an XML file. Then you can add keys to that file by just double clicking on the App.Config and entering something like:

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<appSettings>		
		<add key="VideoResolution" value="1024x768"/>
		<add key="FullScreen" value="false"/>
		<add key="Crosshair" value="Crosshair A"/>
	</appSettings>
</configuration>
(You'll just need to do the add elements, the rest is there by default.)

Then in your code, you just use:

Code: Select all

 string videoResolution = ConfigurationManager.AppSettings["VideoResolution"].ToString();
string fullScreen = ConfigurationManager.AppSettings["FullScreen"].ToString();
string crosshair = ConfigurationManager.AppSettings["Crosshair"].ToString();
Everything is initially read in as strings, then I just cast to Bool or whatever.

In .NET 1.1, you use Configuration.AppSettings instead of ConfigurationManager (Configuration.AppSettings was deprecated in the 2.0 release).
Yeurl wrote: design pattern is also available into framework 1.1, and if i remember based on the static one
The difference with the singleton pattern and Agar's code is that his code has everything as static. It ends up with the same solution, but the implementation is different.

Here's my singleton Game class

Code: Select all

   public class Game
    {
        private static Game instance;

        #region declares
        private ...
        private ...;
        private ...;
        #endregion

        public static Game Instance()
        {
            //use 'lazy initialization'
            if (instance == null)
                instance = new Game();
            return instance;
        }

        private Game()
        {
            windowWidth = 1024;
            windowHeight= 768;
            windowFullScreen=false;
            cursorName = "cursor1";
            isRunning = false;
        }

        ... more stuff ...
}
You'll notice the constructor is private and the Instance method uses an existing instance or creates a new one, when called. Using this pattern, you won't need to add "static" to every variable and method. And your program won't load everything into memory on startup (if every class was static, then you load everything into memory at startup). This only loads it when you first call it.

Then anywhere in the code, I use

Code: Select all

Game game = Game.Instance(); 
game.MyMethod(5);

//or you could use short form
Game.Instance().MyMethod(5);

Here's a good resource on GoF patterns for .NET: dofactory.com.
Post Reply