Jump to content
XCOMUFO & Xenocide

PRG-Engine


red knight

Recommended Posts

Well it is official, i had finish the engine (at least to the state i can publish it).... Tomorrow (monday) morning here like 1300 GMT i will upload the complete file to my account in this server for all of you to download (10 MB). The link would be: Engine Source. The source wont be here until i upload it, so check often after 1300GMT

 

The CVS will not be ready by tomorrow because i have to figure out how to link all that stuff in DevC++ (GCC) specially the DirectX stuff. Tarmat do you want the job of making a SDL Driver for the mouse and keyboard? (the Joystick interface is not finished yet)...

 

Will make a lot of restructuring of Xenocide Directory structure... Some examples:

 

Deprecate the os-dep directories, all the OS Dependent code will be put under a win32 (if windows), osx if apple or posix (linux for example)... The reason is that a os-dep directory would have to recreate the source structure (to make it tidier), not a nice idea having nested 6 directories just for OS Dependant code... In this way the OS Dependant code is pretty near but isolated, just like in the old way.

 

Move common headers and QA Tools like the new assert to a utilities package instead of having separate for both the engine and xenocide....

 

Move all not directly from xenocide to the utilities module like: Network Layer, QA Tools, LiveUpdate Facility, Common headers, etc....

 

The OS Dependant and Compiler Dependant binaries like import libraries or static libraries, etc will be packaged by someone from the team and wont be put on SourceForge CVS, they will be put to download them from the project page... that was a hard decision but it is better to have a standard set of precompiled and tested libraries like OpenAL, PNG, Vorbis, and others, instead of putting the burden of downloading and compiling those to the developer (with the posible version inconsistency between developers). The result an easier learning curve on the project building at least, if you check other open source project the biggest problem always is linking the project....

 

Changed some common typedefs to agree to somthing standard, for example StringList to stringList.... cause for example "real" was with non capital and StringList with the first in capital letter.

 

This is not final so if anyone has a problem with this and a really strong argumentation of why shouldnt be so, just post and we will discuss it before putting all that stuff into the new CVS structure...

 

Greetings

Red Knight

Edited by red knight
Link to comment
Share on other sites

RK,

 

I know we have a ton of work ahead of us, but this is a great announcement!

 

I have been assuming the following video cards will be supported:

 

nVidia GeoForce 4 MX and TI cards

ATI Radeon cards

 

Is this still true?

Edited by cyberdrift
Link to comment
Share on other sites

RK:

 

First of all, are you going to use doxygen to document your source? It's useful and the HTML can be upload to the server. I hate SDKs where documentation are on pdf or inside the source, I prefeer html docs like doxygen, more info Doxygen webpage

 

Second thing, I can programme the SDL driver for mouse, but I think than using several different librarys will be a problem. I propose use SDL as system layer, SDL have functions to create OpenGL windows, send audio, control message like keyboard, mouse and joystick, open sockets, create threads, and lot more stuff.

As a programmer I always recommend use SDL because are a really simple library, maybe not as large than use the native API of the OS but really simple, with calls like CreateWindow( 800,600, 24, SDL_OPENGL | SDL_FULLSCREEN ); More info SDL Homepage

But I have no idea how it works when merging diferent libs like you sugest, creating window with win32, taking mouse control using SDL, creating audio with openAL... I'm affraid this will be really unstable.

 

There are two choices, first are programme only mouse/keyboard using SDL and the other is use win32, on second choice the port to other OS requiere more work but under win probably are more stable.

 

Think on it, I know that all your source use win32 API and it is unnecesary port it to SDL but maybe are necesary and this are the kind of work than I can do.

 

And well, when all the source are visible reply the thead to download it.

 

Oh, something more, I can upload the DSP and DSW for those people than use VisualC++ if somebody are interested. I hope i'm not the only programmer here using VC++ ;)

Edited by tamat
Link to comment
Share on other sites

nVidia GeoForce 4 MX and TI cards

ATI Radeon cards

 

Is this still true?

Yes, thats middle end hardware for xenocide, lowest is GF2. The engine do very little assumptions about what kind of hardware you are using, it is Xenocide who have the restrictions...

 

Greetings

Link to comment
Share on other sites

First of all, are you going to use doxygen to document your source? It's useful and the HTML can be upload to the server.
That is already covered we use doxygen from the very beginning.

 

Second thing, I can programme the SDL driver for mouse, but I think than using several different librarys will be a problem. I propose use SDL as system layer, SDL have functions to create OpenGL windows, send audio, control message like keyboard, mouse and joystick, open sockets, create threads, and lot more stuff.
Ok take a look at the code all windows specific code is isolated, and take a look to discover if you have enough flexibility with SDL, take in account that SDL MUST NOT be used outside of the engine code (that is a design philosofy), Audio will be handle by OpenAL, because it is a pretty portable, and simple but yet powerful library.

 

As a programmer I always recommend use SDL because are a really simple library, maybe not as large than use the native API of the OS but really simple, with calls like CreateWindow( 800,600, 24, SDL_OPENGL | SDL_FULLSCREEN );
You should check the OpenGL renderer and the device handler to be sure that SDL flexibility is enough to handle the needed functionality... The same for force feedback joysticks (even though it wont be used on xenocide, i dont want to contrain it because of a library desition. It is an engine after all).

 

There are two choices, first are programme only mouse/keyboard using SDL and the other is use win32, on second choice the port to other OS requiere more work but under win probably are more stable.
Under SDL porting should be a non issue (at least for most of the stuff.

 

Think on it, I know that all your source use win32 API and it is unnecesary port it to SDL but maybe are necesary and this are the kind of work than I can do.
There is not such thing as necesary is a trade off you make... if as an app developer you can forget about SDL existence then you are making a good job at keeping the library hidden (that is what we need).... and in that case SDL will be useful.

 

And well, when all the source are visible reply the thead to download it.
If the FTP client dont lie to me it is ready to download.

 

Greetings

Red Knight

Edited by red knight
Link to comment
Share on other sites

Oh, something more, I can upload the DSP and DSW for those people than use VisualC++ if somebody are interested. I hope i'm not the only programmer here using VC++ ;)

I have another thread where I am asking people to tell us exactly that. I'm trying to figure out how many different tools the build needs to support.

Link to comment
Share on other sites

Guest stewart

Man I thought we agreed on this a LONG time ago.

 

Yes.

1) Cyberdrift builds using only the official compilers.

2) Only ONE official compiler/platform.

3) Such compiler is free.

4) The official executables are built and posted (if posted) by Cyberdrift only.

 

and . . .

 

5) No check-ins until build is built.

Link to comment
Share on other sites

the bmploader.cpp in the vc++ project is pointing to the wrong file ( actually doesn't exist ) you will have to remove it and add the one from src\objects\loaders\textures\bmploader.cpp to make it work.
Link to comment
Share on other sites

Thats because i am changing the code structure, the original was pretty different (it suits the needs of the thesis, not Xenocide)... The latest doesnt means NOT BROKEN...

 

Grettings

Red Knight

Link to comment
Share on other sites

Well this is the latest, i could compile everything in the engine except Ogg Vorbis Sound Loader (cause it complains that i do not have CygWin installed, which i dont need anyway), anyone can take a look....

 

I had made changes too, cause if i didnt it would involve more work for nothing cause they were scheduled to be done anyways (for ex. the get by object type facility, so there is some untested stuff yet)...

 

The directX linking is done too... I didnt port the examples yet, so it can be pretty difficult for the new ones to make it work properly...

 

Greetings

Red Knight

xenocide.cvs.rar.removeme

Link to comment
Share on other sites

:) well I've been busy so I haven't been around. Anyway the way the original was done went by the rule that primitive data types are lowercase while abstract datatypes are upercase. Example int8 money; vs MoneyList moneyList; Anyway when you capitalize the first letter of words instead of using _'s the variable name usually is in the form of having the first letter lowercased. If yal don't like the method of keeping primitive datatypes in lowercase :) I suggest just capitalizing the primitive datatype names too as to avoid confusion for newbie programmers because I think having the type start off with the first word being lowercase can and the rest uppercased can confuse those who are used to capitalizing the first letter of the datatype since that is one of the top two used methods of naming variables. Edited by gangsta
Link to comment
Share on other sites

Guest blaa
It is time we make a Official Programming Dept FAQ... Stew can you handle that?

 

Greetings

Red Knight

Sorry RK I just noticed this post. I'll talk to Cyberdrift and we can produce a first draught for consideration.

Link to comment
Share on other sites

Guest blaa
:) well I've been busy so I haven't been around.  Anyway the way the original was done went by the rule that primitive data types are lowercase while abstract datatypes are upercase.  Example  int8 money; vs MoneyList moneyList;  Anyway when you capitalize the first letter of words instead of using _'s the variable name usually is in the form of having the first letter lowercased.  If yal don't like the method of keeping primitive datatypes in lowercase :) I suggest just capitalizing the primitive datatype names too as to avoid confusion for newbie programmers because I think having the type start off with the first word being lowercase can and the rest uppercased can confuse those who are used to capitalizing the first letter of the datatype since that is one of the top two used methods of naming variables.

Didn't you and RK produce a document detailing all this coding convention stuff? If not can write something up and send it to me, for the Eng. Dept. Faq.

 

BTW, I heard you're an official taxpayer, congrats.

BTW2, There's a GangstaChick or something like that here now, you got a sister?

Link to comment
Share on other sites

:) well I've been busy so I haven't been around.  Anyway the way the original was done went by the rule that primitive data types are lowercase while abstract datatypes are upercase.  Example  int8 money; vs MoneyList moneyList;  Anyway when you capitalize the first letter of words instead of using _'s the variable name usually is in the form of having the first letter lowercased.  If yal don't like the method of keeping primitive datatypes in lowercase :) I suggest just capitalizing the primitive datatype names too as to avoid confusion for newbie programmers because I think having the type start off with the first word being lowercase can and the rest uppercased can confuse those who are used to capitalizing the first letter of the datatype since that is one of the top two used methods of naming variables.

That was a trade off i made between the old one and the new one... My old was UINT32 (all typedef went in that fashion), the last xenocide way was uInt32 (you can confuse it with a variable) and the new one is UInt32 like in classes....

 

Greetings

Red Knight

Link to comment
Share on other sites

Well taditionally primitive datatypes are named in lowercase like int, char, float, double, wchar and so forth. you do not confuse those with a variable name because you are a bad programmer if you do. Same is true with uint, ushort, ulong which are also widely used under some APIs. uint32 falls into that catagory. No C/C++ programmer should think that uint32 is a variable name and those who use uint32 as a variable name should be shot. :) Anyway general rule on naming variables is that the name has to be a noun like the general rule of naming functions is that those have to be verbs. The exception is when it comes to bools and there the variable would be a condition and the function name a question. Anyway I think it is important to keep the first letter of the abstract typename uppercase because that's what C/C++ programmers expect when they don't use _'s in the naming scheme.
Link to comment
Share on other sites

Anyway I think it is important to keep the first letter of the abstract typename uppercase because that's what C/C++ programmers expect when they don't use _'s in the naming scheme.

I think we are saying almost the same, thats why i didnt reply... Stew you have the result here to put it in the doc...

 

Greetings

Red Knight

Link to comment
Share on other sites

Did you and Gangsta make a document/thread about this before?  Send it over.

It is in sourceforge, but we have change things a little (like the last one)...

 

Greetings

Red Knight

Link to comment
Share on other sites

yeah pretty much :) I prefer having the the primitives captialized like abstract types than to making the abstract types have the first letter in lowercase. better of two evils as far as I'm concerned ;) Edited by gangsta
Link to comment
Share on other sites

Well, I am digging into the code now...

 

I have downloaded RK's archive and attempted to compile it.

The compiler chocked on devicehandler.cpp by not being able to find declaration of GDSDeviceHandler class.

Link to comment
Share on other sites

Well, I am digging into the code now...

 

I have downloaded RK's archive and attempted to compile it.

The compiler chocked on devicehandler.cpp by not being able to find declaration of GDSDeviceHandler class.

I am working on it, currently i had ported the complete engine to the new namespace and changed all GDS stuff into Xe (From Xenoengine) but i am having trouble moving the dll and import libraries (that were generated for BCB6) to GCC, when i finish that i will upload a updated version... and a devpack for windows..

 

Greetings

Red Knight

Link to comment
Share on other sites

×
×
  • Create New...