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.
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.)