.:: Bots United ::.  
filebase forums discord server github wiki web
cubebot epodbot fritzbot gravebot grogbot hpbbot ivpbot jkbotti joebot
meanmod podbotmm racc rcbot realbot sandbot shrikebot soulfathermaps yapb

Go Back   .:: Bots United ::. > Developer's Farm > General Bot Coding
General Bot Coding See what a pain it is to get those little mechs shooting around

Reply
 
Thread Tools
koraXs XML/INI/CFG parser for your bot
Old
  (#1)
koraX
Member
 
koraX's Avatar
 
Status: Offline
Posts: 145
Join Date: Jan 2004
Location: Slovak Republic
Default koraXs XML/INI/CFG parser for your bot - 29-07-2004

Well I made some nice program which I will use in my bot for CS, so why not to share it with you

koraXs parser is program which enables you to work with XML, INI and CFG files, easily retrieve and edit parameters, add new ones and export them to XML, CFG or INI

note : If it's not obvious, this is for bot coders, not players

Supporting INI files like ones in Unreal tournament, CFG files like ones in Half-life, and XML 1.0 specification. Both import and export
  • free. Licensed under GNU/GPL
  • you will only need ANSI C++ compliant compiler (tested under GCC, MSVC 6.0, MSVC .NET)
  • detailed online documentation

Features :
  • Import/Export from/to XML, INI or CFG
  • Powerful query search
  • Woking quickly in bot (tested in CS), has no problem with big xml files (over megabyte)
  • Creating new elements and attributes
  • Deleting elements and attributes
  • Changing elements/attributes properties : name, value and comment
  • Special fuctions : Copying, moving and swaping elements/attributes
  • WYSIWYG editor included, supporting most features of koraXs parser

Very easy usage :

Imagine we have following XML file :

Code:
<?xml version="1.0"?>
<kxbot version="1.0" date="07.21.2004">
	<!-- first bot, very ghey -->
	<bot>
		<name>Frodo</name>
		<mod>CS</mod>
		<skill>
			<easy>10</easy>
			<medium>20</medium>
			<hard>30</hard>
		</skill>
		<skin>
			5
			<T>1</T>
			<CT>2</CT>
		</skin>
		<meta version="1.3" date="12.02.1995"/>
	</bot>
	<!-- this bot is slow -->
	<bot>
		<name>Sam</name>
		<mod>CS</mod>
		<skill>
			<easy>20</easy>
			<medium>20</medium>
			<hard>60</hard>
		</skill>
		<skin>
			5
			<T>3</T>
			<CT>3</CT>
		</skin>
		<meta version="1.0" date="12.03.1995"/>
	</bot>
	<game version="1.5"/>
</kxbot>
Just load 2 source files into your project and you can fully use koraXs parser. Example of simple program using koraXs parser :

PHP Code:
#include "params.h"

using namespace std;

int main() 
{
    
Par::CParams par;

    
// load XML file into the memory
    
if(par.loadXML("xml-example-1.xml")==false)
    return -
1;

    
// This will return name of the first bot in list
    
cout << par.getval("bot/name") << endl// Frodo

    
return 0;


C friendly :

You don't know C++ well ? No problem, you can easily use koraXs parser with your C skills. The previous example in C friendly way :

PHP Code:
#include "params.h"

int main() 
{
    
Par::CParams par;

    
// load XML file into the memory
    
if(!par.loadXML("xml-example-1.xml"))
    return -
1;

    
// This will return name of the first bot in list
    
printf("%s\n",par.getval("bot/name").c_str()); // Frodo

    // NOTE if you are not using STL, you can retrieve 
    // simple char * strings by .c_str() function like shown above

    
return 0;


Load file on begining of session or when bot spawns (if you have separate configuration files for each bot), and then you can easily access contents of this file with get() functions. No need to create your own variables for each parameter. All content of file is already in memory.


Powerful search :

You want to search in xml file for name of bot, who has skill 10 and does not have skin 3 or 5 ? You can do it in one function :
PHP Code:
// C
char name[1000];
strcpy(name,par.getval("bot/skill/easy='10'^^skin/CT!='3'|'5'^^name").c_str());

// or nicer in C++
string name=par("bot/skill/easy='10'^^skin/CT!='3'|'5'^^name"); 
You can learn more about query searching in online documentation, where you can also find complete reference, examples an much more

Info and download :

Right here (900kB)



If you have any questions, ask here, on my forum or e-mail me


kXBot
koraX's utils
- see my homepage for other projects (OpenGL CSG Editor, FAT16 Sim, NNetwork Sim, ...)

Last edited by koraX; 29-07-2004 at 20:31.. Reason: updating
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#2)
Pierre-Marie Baty
Roi de France
 
Pierre-Marie Baty's Avatar
 
Status: Offline
Posts: 5,049
Join Date: Nov 2003
Location: 46°43'60N 0°43'0W 0.187A
Default Re: koraXs XML/INI/CFG parser for your bot - 29-07-2004

WOW

I will DEFINITELY have a look at this... and MOST PROBABLY include it in my bot (with proper credit of course )

thanks man!!



RACC home - Bots-United: beer, babies & bots (especially the latter)
"Learn to think by yourself, else others will do it for you."
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#3)
Whistler
Summoner
 
Whistler's Avatar
 
Status: Offline
Posts: 1,499
Join Date: Feb 2004
Location: Mist Village
Default Re: koraXs XML/INI/CFG parser for your bot - 30-07-2004

@Jozef: Perhaps you had better add an "exception" comment, otherwise (in theory) anyone except you who use it in an HL bot will be actually in violation of GPL...

Quote:
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
Valve's Half-Life SDK is Valve's proprietary program whose license surely has "further restrictions" so linking your code against Valve's SDK and release the result binary file is forbidden by GPL.

The "exception" comment is like this one: (taken from the Metamod source)
Code:
 *    In addition, as a special exception, the author gives permission to
 *    link the code of this program with the Half-Life Game Engine ("HL
 *    Engine") and Modified Game Libraries ("MODs") developed by Valve,
 *    L.L.C ("Valve").  You must obey the GNU General Public License in all
 *    respects for all of the code used other than the HL Engine and MODs
 *    from Valve.  If you modify this file, you may extend this exception
 *    to your version of the file, but you are not obligated to do so.  If
 *    you do not wish to do so, delete this exception statement from your
 *    version.
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#4)
koraX
Member
 
koraX's Avatar
 
Status: Offline
Posts: 145
Join Date: Jan 2004
Location: Slovak Republic
Default Re: koraXs XML/INI/CFG parser for your bot - 30-07-2004

koraXs parser stays under GNU/GPL, mainly because it is not only for bots. It can be used in lots of other projects where you need to store some parameters in files.


Quote:
Originally Posted by Whistler
Valve's Half-Life SDK is Valve's proprietary program whose license surely has "further restrictions" so linking your code against Valve's SDK and release the result binary file is forbidden by GPL.
I can't see a problem here. If bot is released under GNU/GPL, I don't see any violation of Valves SDK. Valves SDK does not have to be included within bots source code.


If someone would have a problem including my program in his bot, I could give him koraXs parser in other license, or in GPL with sime exceptions. But of course it will be for concrete person for concrete bot. This GPL release of koraXs parser is for public.


kXBot
koraX's utils
- see my homepage for other projects (OpenGL CSG Editor, FAT16 Sim, NNetwork Sim, ...)

Last edited by koraX; 30-07-2004 at 12:08..
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#5)
Pierre-Marie Baty
Roi de France
 
Pierre-Marie Baty's Avatar
 
Status: Offline
Posts: 5,049
Join Date: Nov 2003
Location: 46°43'60N 0°43'0W 0.187A
Default Re: koraXs XML/INI/CFG parser for your bot - 30-07-2004

ah

it's GPL...

well I'm not sure I'll use it then... the GPL license is not a really free one... and it's contaminative
switch to the BSD license, people, this one is TOTALLY free and enables everybody to do whatever he wants with the source (even include it in a commercial project without disclosing it). I don't like using licenses that contaminate my software. Even if I always release the source code anyway, it's a matter of principle. I do it because I feel like so, I NEVER WILL because some license forces me to.

my bot will stay under the BSD license dot period.



RACC home - Bots-United: beer, babies & bots (especially the latter)
"Learn to think by yourself, else others will do it for you."
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#6)
koraX
Member
 
koraX's Avatar
 
Status: Offline
Posts: 145
Join Date: Jan 2004
Location: Slovak Republic
Default Re: koraXs XML/INI/CFG parser for your bot - 30-07-2004

ah, first time I licenced my program and look what happened
Well I'm gonna look at that BSD licence ...


kXBot
koraX's utils
- see my homepage for other projects (OpenGL CSG Editor, FAT16 Sim, NNetwork Sim, ...)
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#7)
koraX
Member
 
koraX's Avatar
 
Status: Offline
Posts: 145
Join Date: Jan 2004
Location: Slovak Republic
Default Re: koraXs XML/INI/CFG parser for your bot - 30-07-2004

Quote:
Originally Posted by Whistler
@Jozef: Perhaps you had better add an "exception" comment, otherwise (in theory) anyone except you who use it in an HL bot will be actually in violation of GPL...
Well you are right, I was wrong

Took me far too long to find it but at the end ... http://www.gnu.org/licenses/gpl-faq....compatibleLibs

And about BSD licence, it is non-copyleft licence, so someone can just take your code, do with it what he wants, make a profit from it and not even mention you. Well but PM you are right that if you would like to use program licensed under GPL, it would force you to release your program under GPL ...


kXBot
koraX's utils
- see my homepage for other projects (OpenGL CSG Editor, FAT16 Sim, NNetwork Sim, ...)
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#8)
Whistler
Summoner
 
Whistler's Avatar
 
Status: Offline
Posts: 1,499
Join Date: Feb 2004
Location: Mist Village
Default Re: koraXs XML/INI/CFG parser for your bot - 31-07-2004

about the "BSD Licenses" (plural):
http://www.gnu.org/philosophy/bsd.html

And actually you don't have to GPL all your code if you used parts of GPL code as long as you're using a GPL compatiable license (the BSD License without the advertising clause is among one of them). But you have to state clearly that which part if GPL code (i.e., leave all the "this is free software blahblah..." comments as it was) and include a copy of GPL in it. That means when the software is distributed as a whole it's GPL, but I can just strip all the GPL code and it will be only under BSD License.

take a look at this one:
Quote:
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
<snipped>
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
please note that the original author isn't the only one who is able to do that. As long as you're not "make further restrictions" to the GPL program, it's okay

(and I think PM is already in this place due to MegaHAL and Metamod)

Also I don't think anyone is "forcing" anyone to release the source code since we can always not use GPL code. If I use GPL code that means I would like to release the source

And here's what I think about simple permissive licenses like BSD, X11, etc: It's totally free, and even give you freedom to make it non-free

[back to topic]
That's good thing But I don't think I need all the CFG, XML and INI parsing code. Only one format is enough I think.

Last edited by Whistler; 31-07-2004 at 06:22..
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#9)
koraX
Member
 
koraX's Avatar
 
Status: Offline
Posts: 145
Join Date: Jan 2004
Location: Slovak Republic
Default Re: koraXs XML/INI/CFG parser for your bot - 31-07-2004

Quote:
Originally Posted by Whistler
(and I think PM is already in this place due to MegaHAL and Metamod)
Yes I was thinking the same. If metamod is under GPL and PM is linking to metamod, his program must be under GPL too.

Quote:
Originally Posted by Whistler
That's good thing But I don't think I need all the CFG, XML and INI parsing code. Only one format is enough I think.
Only CFG special function is loadCFG and save CFG. Same for INI and XML. All other functions are same for all filetypes. the data from CFG/XML/INI fileas are represented in memory same, so for example you may load from CFG and save to XML (but it is not recommended)


kXBot
koraX's utils
- see my homepage for other projects (OpenGL CSG Editor, FAT16 Sim, NNetwork Sim, ...)
  
Reply With Quote
Re: koraXs XML/INI/CFG parser for your bot
Old
  (#10)
Pierre-Marie Baty
Roi de France
 
Pierre-Marie Baty's Avatar
 
Status: Offline
Posts: 5,049
Join Date: Nov 2003
Location: 46°43'60N 0°43'0W 0.187A
Default Re: koraXs XML/INI/CFG parser for your bot - 31-07-2004

Quote:
Yes I was thinking the same. If metamod is under GPL and PM is linking to metamod, his program must be under GPL too.
Heh. Both of you already bitched me some day about this, and be certain that I am aware of it. I've always been anyway. The metamod issue will be solved as soon as I have split all my code between what's portable between game engines (most of it) and the HL game driver (a few function calls). And the MegaHAL issue will certainly be delt with soon too. I used MegaHAL because I find it interesting, but I will without any regret scrap it completely from my bot code if ANY person wants me to release my bot under the GPL. My bot will NEVER be GPL'ed. EVER. The GPL is not a free license. Under the excuse of granting the end users back the right to use the source code it takes away from the developers the right to disclose or not this source code - which is THEIRS.



RACC home - Bots-United: beer, babies & bots (especially the latter)
"Learn to think by yourself, else others will do it for you."
  
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump



Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
vBulletin Skin developed by: vBStyles.com