Niepowiem, "trochę" mineło czasu od ostatnich wpisów z nowinkami :) Pomijając już fakt ostatniego wpisu 6 lat temu, to właśnie uświadomiłem sobie, że Project IGI ma już ok. 17 lat ! Przedwczoraj odkopałem materiały, które mi ocalały po latach, łącznie z rozpoczętym projektem IGI 1.5. Znalazły się nawet wszystkie narzędzia do IGI, które używałem wiele lat temu. Nie mam pojęcia w sumie, czy kiedykolwiek projekt dojdzie do fazy skończonej, tymbardziej, że jeden z współprojektantów porzucił raczej definitywnie temat :P . W sumie mój sentyment do IGI wciąż od 2000r nie zmalał zbytnio ;) Postanowiłem, że w sumie choć aktualnie czas wolny u mnie to status niemal nie istniejący, choćbym miał dziennie postawić 2 vertex'y w projekcie dowolnej fan-misji, czy skrobnąć kilka linijek tekstu w temacie o IGI, to się nie poddam ;) czytaj więcej... |
Aktualnie jeszcze są to puste i niezagospodarowane lokacje. Kliknij na obrazku by rozwinąć temat. |
Pomysł generalnie zrodził się jeszcze w 2008 roku, kiedy to eksplorując po raz x-ty pierwszy poziom gry IGI kłębiły się po głowie myśli, jak by fajnie by było gdyby można choć troszkę rozbudować ten etap dorzucając pare budynków i skomplikować nieco rozgrywkę. Wtedy to graniczyło z cudem z powodu braku narzędzi.. Lecz obecnie dysponując na szczęście już kilkoma narzędziami, udało się trochę go urozmaicić ;) Większość podziemnych korytarzy zostało zaprojektowanych jeszcze w latach 2008 - 2009, jednakże projekt legł na dłuższy czas niedokończony. W zeszłym mięsiącu padła decyzja reanimowania projektu i dokończenia, tak powstała pierwsza "alpha" - wersja rozbudowanego MODu do etapu Trainyard czytaj więcej... |
Nowy Trainyard Level ;) Kliknij na obrazku by rozwinąć temat. |
Prosty konwerterek napisany w celu umożliwienia zmiany obrazka przy wyborze misji w menu głównym gry Project IGI 1. Obrazki te zapisane są w formacie 2 wymiarowych sprite'ów (pliki .SPR), konwerter ten przekształca je na 16 bitowy format RAW. Konwersja możliwa jest w dwóch kierunkach SPR <-> RAW.
Plugin do 3ds Max'a istnieje do zapisu geometrii i wszystkich potrzebnych danych w format .MEF używanego przez silnik gry IGI 2. Jednakże jak wiadomo, 3ds Max jest bardzo kosztownym narzędziem i nie każdy może sobie na niego pozwolić. Przyzwyczaiłem się już bardzo do Metasequoi, naprawdę jest to świetny program do modelowania, dlatego zdecydowałem napisać do niej konwerter. Z poczatku był rebus, nie mogłem dobrać formatu z jakiego miał by się konwertować obiekt do formatu .MEF. Format .MQO nie ma wyliczanych normalnych, natomiast .OBJ choć idealnie pasuje do konwersji geometrii, do zamieszczania Attachment'sów w obiektach, czy Portali nie nadaje się wogóle. Finalnie padło na.. oba formaty :) Trochę śmiesznie, ale działa świetnie. Jeśli tworzy się obiekty bez dołączanych "pod-obiektów", portali, efektów typu Glow itp. wystarczy zapisać plik w formacie .OBJ i przekonwertować na .MEF. W przeciwnym wypadku jeszcze trzeba dograć plik .MQO, który ma informację o pozostałych dodatkach. Jeden minus, że na Metasequoi nie ma obsługi systemu "kości" i nie można robić animacji :(. Wtedy już pozostaje 3ds Max..
Programik rozpakowywuje plik terrain.lmp, mieszczący lightmapy (mapy światła) terenu w Project IGI 1. Można wtedy każdą lightmapę wgrać sobie np. do edytora graficznego czy konwertera typu "Irfan View" jako format RAW (bez nagłówka) i swobodnie edytować światła i cienie terenu. Można oczywiście wyliczyć sobie mapy światła terenu w QED v1.1, i programem Terrain Lightmap Packer spakować spowrotem do formatu .LMP.
QScript - czyli język skryptowy w jakim się posługuje Project IGI nie jest zgodny z IGI 2. Za dobrze by było ;) Sporo pozmieniali, trochę ujeli, trochę dodali. Sporą zmorą jest ręczne przerzucanie skryptu z jednego silnika do drugiego np. chcąc przerzucić sobie level 1_Trainyard z Project IGI 1 do edytora QED robiąc to ręcznie idzie się powiesić. Do tego to narzędzie powstało - tudzież nie do wieszania ale zbawienia przed katorgą. Do programiku dołączone są dwa pliki z tablicą konwersji osobna dla konwersji IGI1 -> IGI2 i IGI2 -> IGI1, wpisuje się tam kolejne Taski wraz z informacją, jak mają się konwertować. Tym sposobem konwertowałem jak narazie IGI1_Level 1, IGI1_Level 7 oraz IGI1_Level 14 do edytora QED i śmiga. Tablice konwersji nie są jeszcze kompletne, niektóre Taski np. z AI trzeba przed konwersją usunąć. Temat jeszcze do dopracowania.
Pliki z rozszerzeniem .OLM opisujące lightmapy do obiektów. Też musieli coś pozmieniać, bo także brak zgodności między IGI 1 a IGI 2. Te narzędzie niweluje tą niedogodność i pozwala używać lightmap wyliczonych na QED v1.1 w Project IGI 1. Można też tym programem na bierząco sterować luminancją / gammą przekalkulowanych juz map świateł.
Czyli po prostu konwerter do tekstur - przekonwertowywuje 16 - bitowy format .TEX używany w IGI 1 oraz IGI 2 - na format .TGA i vice-versa. Narazie nie łyka tekstur z kanałem alfa - ARGB_8888. Do przyszłego rozwinięcia i udoskonalenia.
Cały temat z wyliczaniem i projektowaniem scieżek ruchu dla modeli do gry był długo omijany ze względu mojego świętego przekonania, iż jest taki sam w IGI 1 jak i w IGI 2. Heca wyszła przy pierwszej próbie przeniesienia ścieżki ruchu. Krótko ujmując Kongo, bo IGI używa trochę inny system i potrzebuje dokładnych tablic łączeń wszystkich node'ów. Nie mówiąc już, że system zapisu liczb współrzędnych jest tak kopnięty, że głowa mała. Albo ja jestem taki cienias i nie znam tego systemu, bo nie jest to także rozbicie liczb rzeczywistych na cechę i mantysę. System przeliczający te dane co prawda już napisałem, ale sam nie wiem jak działa :) Ale mój zastosowany algorytm do wyliczania najkrótszej ścieżki zwany "Drogą pijanego Chińskiego Listonosza" nie zawsze zdaje egzamin przy skomplikowanyh łączeniach.. Chwilowy brak pomysłów. Temat narazie zamknięty. Wymiękam.
To miało być w zasadzie tylko narzędzie do konwersji plików .QVM ze skryptem opisującym AI a w sumie wyszedł programik dość uniwersalny :) Ogólnie konwertuje on przekompilowaną składnie skryptu QVM z wersji v.85 na v.87 i vice-versa. Może to być również np. object.qvm opisujący całą strukturę danego levelu. Chcąc stworzyć nowy skrypt AI dla np. któregoś z żołnierzy w danej misji, można napisać go w dowolnym edytorze tekstu, przekompilować programem QCONV do formatu .QVM v.87, a następnie tym programikiem AI Converter na format QVM v.85 i już jest gotowe do odpalenia na IGI 1 :)
To była droga przez mękę :D Pierwsze próby stworzenia konwertera obiektów pomiędzy IGI 1 <> IGI 2 zacząłem pół roku temu, ale wymiękłem i wszystkie materiały wylądowały w szufladzie. Po drugim podejściu zawziąłem się choć miałem wątpliwości że dam radę, ale opłacało się przysiedzieć, bo aktualnie konwerter działa (!). Jak narazie konwertuje obiekty typu Rigid oraz Lightmap. Obiektów typu Bone (np. postacie czy broń) narazie nie obsługuje. Jest pewien mankament wynikający między innymi z mocno zmienionej struktury plików .MEF w IGI 2 w stosunku do IGI 1, a występuje przy konwersji obiektów mających tekstury transparentne (nie jest brany pod uwagę kanał alfa). W przeciwieństwie do IGI 1, w strukturze pliku .MEF IGI 2, nie jest przechowywana informacja o geometrii gdzie są miejsca transparentne, więc po przekonwertowaniu obiektu z pliku .MEF v0.16 (IGI2) na format w v0.10 (IGI1) miejsca przechowywujące te informacje są wyzerowane. Temat jeszcze do opracowania, bo ręcznie wpisywać te wartości szczytem wygody nie jest ;)
Kolejny programik pomocniczy - kompiluje i dekompiluje pliki MTP (MaTerial P..??). Zawieraja one liste uzywanych obiektow w kazdym etapie i do kazdego obiektu przechowuje nazwy tekstur przypadajacych na obiekt. Program rozpoznaje 3 rodzaje plikow : MTP, DAT (ktory generuje gconv) oraz mojego pomysłu latwo edytowalny w dowolnym edytorze tekstu format UDT. Programik konwertuje dane w dowolnym kierunku UDT na MTP, DAT na MTP, MTP na UDT itd. Jest niezbedny jak chce sie latwo np. dolaczac zaprojektowane nowe obiekty 3d do gry lub przenosic je z jednego etapu do innego. Format konwersji zgodny z IGI 1 & 2.
Raczej nic nie wskazuje na to by miała powstać oficjalna kontynuacja tej gry. Pomysł na naszą kontynuację amatorską - "nieoficjalną", zaczął powstawać w sierpniu 2008, akcja miała by miejsce od tego momentu, gdzie zakończyła się "jedynka". Jak wiadomo jest spora luka pomiędzy pierwszą a drugą częścią gry, nagle pojawiają sią w IGI 2 takie postacie jak Robert Quest czy Philip White, nie wiadomo też jak David z Anyą wydostali się z podziemnego kompleksu labolatoriów Ekk po rozbrojeniu głowicy mając na "plecach" całą armię jej żołnierzy. Pozatym co wogóle działo się w miedzyczasie(?). Temat opracowania tej 1.5 części przez dłuższy czas leżał w szufladzie, w końcu temat trochę ruszyliśmy do przodu - jest jak dotychczas zrobionych masę szkiców koncepcyjnych, ogólnych modeli 3d - wyglądu podziemnej bazy Ekk, całkiem nowe modele hangaru oraz "Power Generator Room", gdzie rozgrywany był koniec pierwszej części przy rozbrajaniu głowicy. Jest też zrobionych sporo narzedzi pomocniczych do edytora QED. W pierwszej wersji miał być użyty silniczek IGI 1, między innymi ze względu na jego świetny algorytm generowania terenu "Terraform", jednakże ostatecznie wybór padł na IGI 2, z racji większych możliwości, np. obsługujący efekty typu Glow czy generowania wciąż ładnie wyglądajacej wody. Scenariusza nie chcę zdradzać, mimo że i tak nie wiadomo czy kompletny projekt ujrzy światło dzienne :) Wciąż staram się zagonić głównego grafika - Damiana do pracy nad projektem :) Nota bene również wielkiego fana tego gry. Z nim to jest tak, że albo siedzi przy projekcie po 12 godzin dziennie albo wogóle ;) Choć jak się dłużej zastanowić to ze mną jest podobnie :P Wracając do tematu i uchylając ogólny zarys tej kontynuacji zamieszczam dwa speed-arty autorstwa Damiana, przedstawiający akcję rozgrywaną już po wydostaniu się z podziemnego kompleksu. Jest to teren znany z levelu 13_Nuclear Infiltration IGI 1 - jednakże rozgrywa się trochę w innym miejscu - na ogromnej tamie/zaporze wodnej oddalonej od dawnej elektrowni ok 2km. Trzeci obrazek to render jeszcze w fazie alfa bez tekstur przedstawiający "Power Generator Room" znany z IGI 1. Jeśli chodzi o sam developing - wciąż brakuje kilku ważnych narzędzi do kompletu, fajne i pomocnicze było by narzędzie np. do przekonwertowania fragmentu terenu z silnika Terraform na 2 - wymiarowy "Heightfield", jak i przydało by się również więcej chętnych ludzi (grafików 3d i programistów) do porządnego zrealizowania projektu. |
Koncepcyjny speed-Art, a przedstawia widok tarasu tamy na jej szczycie. Teren znany z level'u 13 Project IGI choć miejsce to jest oddalone od dawnej elektrowni ok. 2km |
Rendering z pierwszego podejscia do projektu pomieszczenia znanego z IGI_1 "Power Generator Room" w którym toczyła się decydująca rozgrywka i rozbrajanie głowicy nuklearnej. Brak jeszcze masę rzeczy jak i oczywiście tekstur. |
Fajna by była taka rzecz, bo QED w wersji 1.1 niestety nie jest już zgodny z IGI 1, do edytora wprowadzono masę poprawek i zmian, pliki np. z obiektami czy lightmapami - choć mają to samo rozszerzenie, nie są wogóle zgodne. Trudno przeliczyć godziny jakie spędziłem na necie w poszukiwaniu QED w wersji 1.0, w nadziei, że gdzieś może leży sobie na jakimś zapomnianym serwerze. Niestety bez powodzenia :(
Kolejny programik skończony, choć przyznam że w kodzie programu zrobił mi się taki bajzel, że głowa mała ;) QSCC kompiluje poprawnie kod v.85 i v.87 jednak QSCC jak narazie nie obsługuje skryptów takich jak np. AI gdzie występują instrukcje warunkowe. W programie zastosowałem kilka mechanizmów badania składni, jednakże są one bardzo proste i nie uwzględniają np. testu czy jest zachowana poprawna struktura "drzewa", czy są wszystkie niezbędne nawiasy w kodzie źródłowym itp.
Niezbednik przy rozpakowywaniu i ponownym pakowaniu plikow RES z wszelkimi zasobami (tekstury, modele, dzwieki itp.). Jak narazie znany mi problem jest z pakowaniem do pliku RES zasobow informacji o terenie IGI 2. Jeszcze do poprawienia.
Dekompilator choć już istnieje, nadal nie ma możliwości przekompilowania kodu źródłowego QSC do formatu QVM w Project IGI 1. Przydał by się uniwersalny kompilator zarówno do kodu v.85 jak i v.87. Projekt dziś zaczęty ale co z tego wyjdzie, to się okaże :P ;)
Jednym słowem udało się :) Jest to co prawda jeszcze wczesna beta programu, kod nie jest zoptymalizowany, jednakże wykonuje swoje zadanie zarówno dekompilując kod QVM IGI 1 jak i IGI 2. Dla rozróżnienia kod IGI 1 został oznaczony numerem wersji v.85, a kod IGI 2 - v.87. Dekompilator działa bez zarzutu na wszystkich misjach dla pojedyńczego gracza w grze IGI 1 oraz wszystkich z IGI 2 + mapy multiplayer. QEdytor do IGI 2 umożliwia teraz wczytanie map po procesie wcześniejszej ich dekompilacji, więc bez problemu można w końcu przejrzeć jak zostały misje zaprojektowane, naprawdę dobry bank informacji - co pozwala tworzyć swoje własne misje bądź modyfikować istniejące według własnych potrzeb. Możliwa jest także dekompilacja takich danych jak magicobjects, LOD, physicobjects, animtrigger itp. Nie jest możliwa jak narazie dekompilacja skryptów AI.
Kompilator QSkryptów dla IGI 2 już istnieje - jako narzędzie udostępnione przez grupę Innerloop (qconv.exe), jednakże nie jest on niestety wogóle zgodny z Project IGI 1 :( Temat dekompilatora narazie zostaje zamknięty.
Nawiązując do wpisu z mojego małego bloga ( Powrót do Project IGI ) rozpoczęte zostały prace nad pierwszym narzędziem - dekompilatorem skompilowanych skryptów QSC (format QVM), pierwsze analizy wykazały, że da się ten proces jak najbardziej odwrócić, w kodzie QVM jest wystarczająca ilość informacji by przywrócić skrypt QSC tak, jak był on orginalnie napisany. W skryptach QSC zamieszczona jest cała informacja o misji, jej przebiegu, wytycznych do wykonania, jak i grafiki - rozmieszczenia wszystkich obiektów, budynków, kamer, strażników itd. IGI 2 ma już trochę zmieniony kod skryptu, inne znaczniki w kodzie QVM, jednak będę starał się napisać by był to dekompilator zarówno pasujący do IGI 1 jak i do IGI 2.