PDA

View Full Version : Interessante Sachen in der war3.mpq


Der_tolle_Emil
28th February 2002, 19:19
Hab heute ein bissi herumgespielt mit der MPQ und bin auf folgende Sachen draufgekommen, das wichtigste zuerst:

Es wird ziemlich sicher Wetter geben. (Ich hoffe das wurde noch nirgends angekündigt, sonst ists ja nicht mehr neu) In der MPQ befinden sich sowohl Graphiken für Regen und Schnee (YES :)) als auch Soundeffekte, und eine Deklaration in einem Script.

Es sind auch Soundeffekte für eines neutralen Gebäude enthalten, die bis jetzt noch nicht verwendet werden.

In der MPQ befindet sich ein fertiges Script für einen computergesteuerten Human. Das interessante an dem Script ist folgende Funktion:

function set_upgrade takes integer level, integer upgid returns boolean
local integer gold_cost
local integer wood_cost
local integer stone_cost

if GetUpgradeLevel(upgid) >= level then
return true
endif

set gold_cost = GetUpgradeGoldCost(upgid)
if total_gold < gold_cost then
return false
endif

set wood_cost = GetUpgradeWoodCost(upgid)
if total_wood < wood_cost then
return false
endif

set stone_cost = GetUpgradeStoneCost(upgid)

// when there're not enough stones we can't assume we can get more,
// so it's ok to skip it in that case
//
return total_stones < stone_cost or SetUpgrade(upgid)
endfunction

Auffallen sollte euch stone_cost. Diese Steine waren mal Mana Stones, es gibt in der selben Script datei auch noch Hero Tokens.

Genauso wie die Steine finden sich noch Hinweise auf 4 Heroes pro Rasse und die 5. Rasse Demons, wobei nichts davon wahrscheinlich in der Final Version vorhanden sein wird.

Die 2 letzten halbwegs interessanten Sachen ist der Gamespeed (es gibt 5 verschiedene, von slowest bis fastest), 4 verschiedene Schwierigkeitsstufen (easy bis insane) und die verschiedenen Gametypes, welche MELEE, FFA, USE MAP SETTINGS, BLIZ, ONE ON ONE, TWO TEAM PLAY, THREE TEAM PLAY und FOUR TEAM PLAY umfassen.

Andere Sachen, wenn auch ziemlich irrelevant ist folgendes:

Lordaeron (US West)
Azeroth (US East)
Kalimdor (Asia)
Northrend (Europe)

So heissen die Realms, die Server IPs sind die selben wie die jetzigen StarCraft Server.

Von der Technik her basiert so ziemlich alles auf Models, die Texturen sind ein eigenes Blizzard Format, welches aus TGA Files erstellt wird und dem JPEG Format ziemlich ähnelt. Map Format ist ziemlich primitiv, es wird ein frosses TGA verwendet (repräsentiert die gesamte map) welches aus den Farbwerten 00FFFF und 0000FF besteht, wobei es vorlagen von 8x8 TGAs mit den selben Farbwerten gibt, die auf das TGA "geklebt" werden können und Gebäude represäntieren. Creatures und Startpositions sind in einer Script datei festgelegt, genauso wie Max Player und MapName/MapDescription. Das was ich noch nicht so ganz durchschaut hab ist die Heightmap, die die Map eigentlich erst richtig 3d macht. Naja ich werd mal schaun ob ich eine gscheite Map schaff ohne Worldeditor.

ruKe
28th February 2002, 19:26
ui... nice work emil.

a
28th February 2002, 19:33
:)

kiRby
28th February 2002, 19:37
gw emil :]

Ich glaube so was darfst auch in die News posten...

lucky luke
28th February 2002, 19:52
nicht schlecht emil :)

wie hast du das alles rausgefunden ;)

`peOn
28th February 2002, 19:56
schnee sieht man schon in einem avi wenn ihr die dlen würdet =P

btw sieht geil aus, dachte aber dass das removed wurde, da nie mehr die rede davon war!

edit: sie sagten jede map sei in allen 4 jahreszeiten zu spielen

Der_tolle_Emil
28th February 2002, 21:43
Das mit den Jahreszeiten schau ich mir an, es gibt in der Map noch 6 Files mit denen ich überhaupt nichts anfange... Da ich auch keine Ahnung habe, wo das Tileset festgelegt wird, könnte es leicht sein, dass die unbekannten Files was damit zu tun haben. Überall Schee wär geil :D Werd mal ein paar Files von Lost Temple mit Battlegrounds tauschen, und schaun ob ich Lost Temple mit Schnee schaffe :)

UPDATE: Hier die Auszüge aus den Scriptdateien die auf 4 Heroes und eine 5. Rasse hinweisen:

//===================================================
// Game Constants
//===================================================

constant race RACE_HUMAN = ConvertRace(1)
constant race RACE_ORC = ConvertRace(2)
constant race RACE_UNDEAD = ConvertRace(3)
constant race RACE_NIGHTELF = ConvertRace(4)
constant race RACE_DEMON = ConvertRace(5)

Aus dem AI Script der Humans:

//============================================================================
// Human Melee AI
//============================================================================
globals
// general AI variables
//
integer total_gold
integer total_wood
integer total_stones

// structures IDs
//
integer altar = 'halt'
integer sanctum = 'hars'
integer armory = 'harm'
integer garrison = 'hbar'
integer house = 'hhou'
integer town_hall = 'htow'
integer smith = 'hbla'
integer castle = 'hcas'
integer cannon = 'hctw'
integer guard = 'hgtw'
integer keep = 'hkee'
integer church = 'htws'
integer mill = 'hlum'

// people IDs
//
integer peon = 'hpea'
integer footman = 'hfoo'
integer serpent = 'hegr'
integer copter = 'hgyr'
integer knight = 'hkni'
integer priest = 'hmpr'
integer mortar = 'hmtm'
integer rifle = 'hrif'
integer caster = 'hsor'
integer tank = 'hstt'
integer elemental = 'hwat'

// upgrades
//
integer Uweapons = 'Rhme'
integer Uranged = 'Rhra'
integer Uartillery = 'Rhaa'
integer Uarmor = 'Rhar'
integer Ubldgs = 'Rhac'
integer Usight = 'Rhss'

// hero IDs
//
integer paladin = 'Hpal'
integer king = 'Hamg'
integer mage = 'Hmkg'
integer ranger = 'Hran'

Edit: Hab Humans erst einmal gegamet, aber ich bilde mir ein "Church, Sightupgrade und Unit Elemental" gibts auch nicht in der Beta, oder?

craNk
28th February 2002, 22:05
elemental isn zauber

gibt son wasser kämpfer, is ziemlich stark am anfang

Der_tolle_Emil
28th February 2002, 22:47
Stimmt, Water Elemental heisst der. Ok, aber Church und Sight? Sight keine Ahnung, das merkt man beim obsen nicht :)

illu
1st March 2002, 00:51
well done and good job, emil!

Der_tolle_Emil
1st March 2002, 01:05
Hab das Map format bald... Und verstehe jetzt auch das Format der Texturen... es gibt eine *.blp datei, diese enthält einen 16byte langen Blizzard Header, der Rest der immer gleichlangen *.blp files ist ein JPG Header (hab mit dem jpg ähnlichen format wirklich recht gehabt :D), die anderen Files *.b00 *.b01 etc sind die Textur selber, allerdings ohne jeglichen Header. Dank dieser Erkenntnis kann ich das Radar einer Map ändern... Und was die TGA Files der Maps anbelangt, ja, sie repräsentieren die Gebäude und Mapkonturen, allerdings nicht für den Spieler, sondern sind nur für die Pfadfindung der Units zuständig. Damit kann ich entweder alle Units blocken die zum Brunnen auf LT in der mitte wollen, oder ich kann sie übers Wasser gehen lassen :)

Die Tilesets hab ich auch gleich fertig, hab grad Lost Temple zu Battlegrounds konvertiert (wegen Tileset), das Tileset ist also in der Map selber gespeichert, die Scripts hab ich gleich gelassen, also eine Verknüpfung auf die Main MPQ dass von dort das Tileset geladen werden soll, ist es ziemlich sicher nicht.

Apropos Script Files: Ich kann die Startpunkttypen ändern, von aktiver Spieler auf Neutral oder Rescueable zum Beispiel, oder wie das sinnvollste: Auf Observer. Ich weiss nur noch nicht ob die Clients crashen wenn die Startpunkte auf Observer änder. Sonst muss ich sie halt auf Creep ändern, dann werden wenigstens die Kämpfe zum upleveln am Anfang interessanter, wenn die Obsis sich um das Micro der Creeps kümmern :)

Edit: Schön langsam glaub ich das herumbasteln an den Maps ist lustiger als die Maps zu spielen :) Watch Radar!

http://www.ntky.at/waternecropolis.jpg
http://www.ntky.at/watergoldmine.jpg
http://www.ntky.at/watertrees.jpg
http://www.ntky.at/cliffmine.jpg

Das 2. Bild hat die JPG Compression vernichtet, die sonst schon kaum sichtbare Goldmine ist jetzt praktisch gar nicht mehr zu erkennen.

@3. Bild: Hab gar nicht gewusst dass Bäume aktiven Sichtschutz geben (sichtbar am Radar)

Edit2:

Lost Temple Map Header:
W3E!
xxxLxxxxxxxxLdrtLdroLdrgYsqdYrtlYhdgLgrsxxxxCLdiCLgrCYsq

Battelgrounds Map Header:
W3E!
xxxWxxxxxxxxWdrtWdroWsngWrokWgrsWsnwxxxxCWsnCWgr

Die Header behinhalten meiner Meinung nach ganz sicher das Tileset, ich kanns nur noch nicht ganz aufschlüsseln. Das erste L steht meiner Meinung nach für Lordorean Summer (wobei das schwer zu sagen ist, LT hat Custom Tileset), das W bei Battlegrounds für Winter. Die 4 Buchstabenkürzel für die einzelnen Texturen, bei Lost Temple zb:

Ldrt=Dirt
Lgrs=Grass

Bei Battlegrounds gibts noch Wsnw, ziemlich sicher Snow. Weiss nur noch nicht was die Y Kürzel sind. Die CW CL und CY Kürzel werden die Custom Tilesets sein. Wenn ich da ein bissi gebastelt habe ist War3 bis jetzt immer gecrasht, also irgendwas mach ich noch falsch.
Schön wärs auch wenn Blizzard nicht immer die Sachen vertauscht, so wie bei den Human Heroes, wo das Kürzel für den Mage Hmkg ist und für den King Hamg.

Edit3: YES, erster Erfolg: http://www.ntky.at/naturallt.jpg
Hat gedauert, aber es ist möglich. Fehlt nur noch das Schnee draus wird, zuerst aber Kaffee, ist schon 3 in der Früh.
BTW, selbstgespräche im Forum rocken :)

Der_tolle_Emil
1st March 2002, 04:44
ENDLICH, fertig :) Lang hats gedauert... Aber es war lustig. Das mit den Observern hab ich versucht... Das funktioniert nicht so wie es sollte, wenn ich die Player auf Neutral stelle können sie nicht joinen, bei allen anderen crasht WarCraft3 beim createn. Hab mich dafür noch ein wenig mit der Heightmap der Maps auseinandergesetzt. Ich glaub das Format ist leicht zu verstehen, die Datei mit der Heightmap ist schön regelmäßig mit Hex 00 getrennten 6 Byte blöcken aufgebaut. Auf jeden Fall weiss ich schon, dass Wasser keine "Textur" ist. Wasser befindet sich auf einer konstanten Höhe, wenn die Heightmap tiefer als dieser Wert ist, dann gibts auf der Map Wasser, ob man will oder nicht. Mal schaun, vielleicht schaff ich sogar Wetter einzubauen, die nötigen Files und Script Deklarationen sind da.
Zu den Texturen selber: Das Format so halbwegs ist klar, ein 16Byte langer Blizzard Header, der Rest ist JPEG, eingebunden mit Intel® JPEG Library C Funktionen. Die einzige Schwierigkeit wird die variable Farbe sein, die Farbe die man sich beim Joinen aussuchen kann, da JPGs ja keine Palette verwenden. Ich hoffe Blizzard verwendet eine konstante Farbe dafür, dann muss ich mich nicht um den Header von Blizzard kümmern.
So und jetzt geh ich schlafen, gute Nacht.

Edit: Zu der 5. Rasse fällt mir ein, dass ja eigentlich ursprünglich glaube ich 6 Rassen geplant waren, also ist es ja nicht abnormal dass Überreste in den Scripts drinnen sind. Man muss aber noch beachten, dass die Beta am 14. Jänner 2002 compiled wurde, und das ist gar nicht mal so lange her. Bin neugierig ob sich Blizzard hinsichtlich der 5. Rasse was offen hält.

Update: Ich hab das Tileset Format zu 100% verstanden, auf jeden Fall gibt es Tilesets die zwar deklariert sind, aber nicht alle davon sind in der Beta enthalten (steht sogar dabei -> C;X11;K0 wenn es vorhanden ist C;X11;K1). Die CL/CW/CY Kürzel stehen übrigens nicht für Custom Tilesets sondern für die Cliffs.

Also hier die Tilesets:

In Beta vorhanden:

LordaeronSummer
LordaeronFall
LordaeronWinter
Barrens
Northrend (=Eis)
Cityscape
Village
CityDalaran
CityLordaeron

Von den nichtvorhandenen hab ich keine Ahnung, von denen gibts in der MPQ rein gar nichts.