W jaki sposób wygląda napisanie / sam konwerter? Mianowicie chodzi mi o takie rzeczy jak np. wypakowywanie z archiwów gry obrazków i zapisywanie ich w formie JPG, zamiana formatu JPG na PNG i tym podobne bajery? Bo jeszcze w miarę rozumiem, jak mamy łatwy dostęp do poznania działania JPG i PNG - bo są to otwarte formaty, ale co np. z tymi archiwami gry? W jaki sposób programiści piszą takie rzeczy?
Tak bardzo ogólnie jest parę opcji:
-
ktoś patrzy na dane i domyśla się jak są ułożone (dobrze jeśli dodatkowo wie, jakiego typu dane są tam zawarte)
-
twórcy udostępniają dokumentację
-
twórcy piszą narzędzie, więc wiedzą jak dane są ułożone
Ale raczej wątpię aby w wielu przypadkach takie archiwa z gier były nie wiadomo jak skomplikowanymi tworami - raczej są to dobrze znane typy archiwów czy ogólnie typy plików, tylko może nazwane są inaczej. Przykład z nieco innej beczki, ale np. dokumenty OpenDocument (takie jak tworzy OpenOffice czy LibreOffice) to w istocie mogą być archiwa zip, bez problemu można rozpakować takie archiwa i zobaczyć co jest w środku.
Dzisiaj nie pisze się obsługi formatów od podstaw,tylko korzysta z gotowych bibliotek,do tego dochodzi patentowanie,aby nikt nie robił 60 innych wersji jednego formatu,muszą być standardy na wszystko.
tak np. jest z programami Open Source,kodeki np w MPlayerze tworzył ktoś inny,a nie twórcy MPlayera,zazwyczaj są to różne grupy np. popularne określenie MPEG wzięło się od nazwy grupy,która zajmuje się obrazami ruchomymi,sposobami ich kodowania,kompresji,MPEG to skrót od Motion Picture Experts Group,to oni wiedzą jak działa kodek mpeg2 czy mpeg4,albo mpeg3
soanvig , zgodnie z regulaminem, który zaakceptowałeś podczas rejestracji, proszę dokonać zmiany tytułu na taki, który wstępnie opisze problem, w przeciwnym razie temat wyląduje w koszu.
Tak, a te gotowe biblioteki robią krasnoludki w kamieniołomach i wcale nie trzeba ich napisać. ;]
A co, jeśli trzeba obsłużyć format, który jeszcze nie ma biblioteki w danym języku? Albo chce się zrobić lepszą niż istniejące? Albo zubożoną, uproszczoną wersję na potrzeby swojej aplikacji?
To patenty czy standardy?
Różnych kodeków do audio, wideo czy grafiki jest około pierdyliarda. Niektóre są często spotykane i wykorzystywane przez wiele aplikacji, ale wiele firm pisze swoje własne biblioteki do obsługi różnych formatów. Formaty takie jak np. JPG, GIF, AVI, WAV, MP3 mają publicznie dostępne specyfikacje i nie ma ani problemu, ani nic złego w zaimplementowaniu ich po swojemu.
Wiem,że biblioteki trzeba napisać,ale nie robią tego twórcy samych aplikacji,tylko specjalne grupy,jako oddzielne projekty,chodziło mi o standardy,wyobrażcie sobie na przykład,że co miesiąc wychodzi nowa wersja jakiegoś kodeka,który ma nonstop coś zmieniane,jak tym odtwarzać filmy zakodowane starszymi wersjami ?,muszą być jakieś wytyczne pod względem kompatybilności.Jeśli trzeba napisać nową wersję to to zwykle jest dostęp do kodu żródłowego i sam twórca aplikacji może,dotyczy to otwartych kodeków,których kod można legalnie ściągnąć,w niektórych państwach kodeki trzeba kupić,dlaczego np. Ubuntu nie ma zainstalowanych domyślnie kodeków mp3 ?,właśnie z tego powodu,aby nie łamać np. prawa USA czy Japonii,gdzie obowiązują patenty na oprogramowanie,w tym kodeki.Tworzenie kodeka to zaawansowana matematyka,transformacja cosinusowa,kwanteryzacja,to nie jest takie proste.
Nie chcę cię martwić, ale tak bywa. Nowych buildów x264 potrafi wyjść w miesiącu kilkanaście. Na szczęście twórcy są na tyle kumaci, że w 90% przypadków pliki zakodowane nowszymi, usprawnionymi wersjami są kompatybilne z istniejącymi dekoderami.
No ok, ale to, że jakieś grupy tworzą kodeki, nie znaczy, że samemu nie można się za to zabrać, nieprawdaż?
Pewno muszą, i pewno wszystko jest opisane w standardzie.
Cóż, dla mnie nie jest, ale pewno są tacy, dla których to banalne.
No okej, ale to w przypadku formatów, które mają być obsługiwane przez programy. Ale są formaty, które mają nie być obsługiwane przez ogólnodostępne programy, właśnie np. archiwa gier. Bo twórcy raczej sobie nie życzą, żeby to co stworzyli, było wykorzystywane poza ich grą (dajmy na to, z archiwa gry mógłbym sobie wyjąć interfejs i wykorzystując elementy tego interfejsu stworzyć layout strony internetowej [oczywiście pomińmy prawa autorskie]. Ze screenshota ciężko zazwyczaj coś wydostać, a tak jakbyśmy mieli ładne i czyste grafiki to dużo łatwiej możemy je wykorzystać). Ale i do takich archiw czasem powstają archiwizatory. Pytanie, jak się je robi, skoro teoretycznie nie mamy pojęcia o konstrukcji archiwa gry?
Proponuję zapytać na www.portal24h.pl - tam przesiadują ludzie związani z nieoficjalnymi spolszczeniami gier i programów.
Reverse engineering. Co jest zapewne nielegalne i tak dalej…
Na tym forum http://forum.xentax.com/viewforum.php?f=10 ,otwierają archiwa ,może znajdziesz tam jakieś użytezne informacje.
@Łukash
Świetne forum, dzięki