Daid303
Welcome, I'm Daid, this is a page about me, from me
Personal info
I'm Daid303, Daid for short. My email address is sneakeye_@hotmail.com, don't feel afraid to contact me there, just mention where you found my email. No, I don't run the unreal wiki. (I got that question a few times now already, and I don't have a clue why. I just run into this place from time to time)
I code for UT, UT2003 and sometimes Tactical ops. I've also weak modeling and skinning skills, so I can do just about everything. Yeah, also mapping, but I never really made any good map.
Coding stuff
Done
A no blood mutator for UT2003, but I have no idea where it went
In progress
And I'm also working at the [Ultimate Survival] team, a paintball mod for UT2003.
Ultimate Droids (look furter down)... maybe make a subpage of it?
Finaly learned C++, doing alot of C++ these days. Found out why automatic typecasts are irritating. Clamp is for ints, not for floats. (FClamp is for floats)
Ultimate Driods
Version 1.3 released. (UT2003 only)
This... mod/program? still don't know what to call is. But anyway you can build droids with it. I've made this because I wanted to make something with the runtime engine. And while being busy I thoughed lets add another chalange. So I said to myself "Don't subclass Gameinfo or PlayerController or Pawn" and... I didn't It was quite a trick for me because I was used to just subclass what you need. And that USUALY started with a gameinfo.
The version 1.3 has alot of changes including:
- 2 design envirments, 1 with and 1 without gravatie.
- Challange maps. Maps designed for more then 1 droid.
- A few new components and parts including:
- Rotation Sensor
- Absolute
- Add Around (0.8 + 0.3 = -0.9)
- A timer (copies it's input value onces every 0.1 of a sec)
- Import/export functions.
- Ajustable mousespeed.
- And more....
More info here:
Because it's still unclear if I can contiue with the Runtime engine, I had to set out some kind of plan.
- 1st I'll mail licensing@epicgames.com to ask if they can look at what I have created and if they can tell me if it's a game.
- If it isn't a game, then I can just continue as I do now, and release it with the runtime engine.
- But if I can't continue like this, OR it's not sertain. (I don't have money for a lawyer ) Then i'll continue with Plan B
Plan B
Plan B is basicly port it to as many unrealengines as I can think of. Every unreal engine that has karma stuff and exportable code can run the 'mod'. This sounds quite easy but could be a lot of work.
I have done some thinking already, and this is what I know:
- Textures can easly be created and ported.
- Maps can easly be ported, because you can simple export a map, and import it again in the UEd of the other game. (will need 100% custom made tex)
- Code is 100% runtime compattible and so will be 99% compatible for most engines.
- Not all engines have Karma stuff, so some will be out of luck.
What I still don't know (but some people here probly do):
- What games (running the UEngine) can be modded? And do they have karma stuff?
- Any idea how to make static meshes with karma properties portable?
- I might need some help to get it to some of the games (I don't own every game that's out there)
If this plan won't work then i'll simple make it a UT2003 mod. But it will stay 100% none UT2003 (as in I won't be using any UT2003 classes)
Discussion
Daid303: Changes needed to port to UT2003:
- Getting static meshes and textures to UT2003 (duh )
- I made a new class (called UDTSI, UltimateDroids Texture & Sound Info) with default properties depending on the game it's running on. All the drawn textures are read from there, because UT2003 has to pick it's menu textures from InterfaceContents, and the runtime engine from GUI.
- The 'opened' event didn't exsist anymore in UT2003... I used that in the export/import function.
- The font I used (engine.defaultfont if I remember right) didn't exsist in UT2003, so I also added that to my UDTSI file.
- The maps ofcourse, changed all the textures.
- Changed the map loading so it adds "?game=engine.gameinfo" so you won't use the default deathmatch gametype.
That's about it.
As for the saving.... That's a smart idea the speed wouldn't be much of a problem. Then you'll only be limited by the 'runaway loop' error detection.
I'll see what I can do
Foxpaw: Well, I can't really take credit for inventing the relational database but thanks. I don't think that a runaway loop would really be a problem, since I think it allows 10 million iterations.. you would probrably need to write a program just to build a droid that complex.
Daid303: Don't be fooled by the 1000000 thing. Because it counts whenever the loop runs, and resets the counter when a native events happen again. (Atleast that's what I think, I couldn't find any other explination) I'm not giving you credit for inventing it, but I give you credit for pointing my towards it A person can't know and think of everything. Darn, I still have to mail epic...
Daid303: Removed some of the old dicussion. I finaly found some time again to do some coding (I would love to have vacation again ) so I started to work on the database thing. I've made the strucs already
struct sDroid { var string DroidName; var string BodyClass; var int ComponentStart, ComponentLen; var int PartStart, PartLen; var int LinkStart, LinkLen; } struct sLink { var int ComponentOutput; var int ComponentOutputNum; var int ComponentInput; var int ComponentInputNum; var int Flags;//Bits: // 0=Output Component(0)/Part(1) // 1=Input Component(0)/Part(1) // 2=Inverted }; struct sComp { var string CompClass; var float DesignX, DesignY; var string Properties; }; struct sPart { var string PartClass; var float DesignX, DesignY; var string Properties; var int AttachPos; }; var config Array<sDroid> Droids; var config Array<sComp> Components; var config Array<sPart> Parts; var config Array<sLink> Links;
I'm just wondering, is it possible to save class<X> into ini files, and can I make it so that the struct "sPart" 'extents' "sComp".
pgibbs: you can't have structures deriving from other structures. What you could do is include a sComp type variable in sPart, e.g.
struct sPart { var sComp Parent; //or something var string PartClass; var float DesignX, DesignY; var string Properties; var int AttachPos; };
Foxpaw: Ahem. Actually you can. Plane extends Vector. However, you wouldn't be able to store sParts in a list of sComps if sComp is the thing you are extending. But you can of course store an sComp in a list of sParts as long as you copy all the elements of the struct. When loading, you can then cast the sPart directly to an sComp to get just the sComp Portion. Of course, since the two structures are almost the same, you might not even need to bother with the casting. Anyways:
struct sComp { var string CompClass; var float DesignX, DesignY; var string Properties; var bool bIsBasicComponent; // Note I added this in. }; struct sPart extends sComp { var int AttachPos; }; var config Array<sPart> Parts; simulated function sPart sCompTosPart( sComp Component ) { local sPart Part; // You might be able to do just Part = Component, but I'm not sure. If that doesn't work you'll have to do this: Part.CompClass = Component.CompClass; Part.DesignX = Component.DesignX; Part.DesignY = Component.DesignY; Part.Properties = Component.Properties; Part.bIsBasicComponent = true; } simulated function LoadSomestuff() { local int i; local sComp Dummy; // Do loading stuff.. whatever you're gonna do here. for (i=0;i<Parts.Length) if ( Parts[i].bIsBasicComponent ) { Dummy = Parts[i]; // This dummy part may or may not be necessary. //The engine will crash if you pass a "subclassed" struct to a native function, //IE trying to do dot product on a plane, which extends vector. I'm not sure if //this is necessary for non-native functions however. ParseIntoComponent( Dummy ); } else ParseIntoPart( Parts[i] ); // Do anything you have to do after they've been sorted. }
pgibbs: oops. I haven't unrealscript in a long while, let me off
Daid303: Whow, you guys have been busy for me well, i'm busy myself, but sadly not with UScript. School it taking alot of time. Thanks for the info.