Autor Wątek: Kupiec remake.  (Przeczytany 10857 razy)

Offline Vipa

  • Redaktor

  • +8
# Lipiec 06, 2014, 16:07:50
Jest rok 1993. Zacny człek nazywający się Dariusz Bartoszewski, napisał sobie grę Kupiec, będącą następcą popularnego wcześniej Przemytnika. Drugi człek, mam nadzieję także zacny ;), czyta sobie opis gry w Top Secret



i mówi sobie - Muszę mieć to na Amstrada CPC! No i zaczęło się żmudne rozrysowywanie grafiki i bieganie do kolegi, z którym daną grę kupiliśmy, by badać zasady działania i kopiować jeszcze więcej grafiki ;). A były to czasy, gdy o teksturach jeszcze nikt z okolicznych mi koderów nie słyszał i trzeba było składać wszystko z wpisywanych, do komendy SYMBOL, danych. Z tych kawałeczków 8x8px powstawał świat gry.

Po dwudziestu kilku latach, drugi ze wspomnianych zacnych ludzi ;), postanowił zrobić remake od nowa. Tym razem na PC.
Niestety Atari kumpla nie dało się reanimować, moje komuś oddałem, więc za pomocą emulatora uruchamiam sobie gierę:



Nooo i tu następuje problem. Zawiesza się to to, wywala w pinechę, ale jakoś tam prace idą:



Na chwilę obecna mam mapę, jedno miasto, targowisko i karczmę. Mam też już całość grafiki (tym razem jednak użyłem tekstur :D) i dźwięk. Tu celowo liczba pojedyncza bo dźwięk w oryginale był jeden ;).


Celem jest remake, a więc oczywiście odwzorowanie gry w takim stanie, w jakim ona wyglądała i działała na małym Atari. Oczywiście literówki (których jest cała masa, ale gra powstała w czasach, gdy patchy nie dało się tak łatwo wypuścić :D), błędy logiki i grafiki zostaną poprawione.
Dodam też opcję zapisu i wczytu stanu gry, opcję rozpoczęcia nowej gry, zmianę rozmiaru okna z grą, obsługę pada, joya i co tam jeszcze ludzkość do sterowania wymyśliła.

Tak więc założenia są znane. Lepsze są problemy. Napisać to na double bufferingu to masakra. Program napisany strukturalnie i widać to na każdym kroku. Wiem, brzmi idiotycznie, ale dopóki nie zacząłem pisać to też myślałem - co tu może być skomplikowanego. O wiele szybciej bym to wklepał do Atari ;).

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline koirat

  • Użytkownik

# Lipiec 06, 2014, 16:21:40
Cytuj
Nooo i tu następuje problem. Zawiesza się to to, wywala w pinechę, ale jakoś tam prace idą:
Może za mało ram-u ;)

Życzę powodzenia, choć rzeczywiście nie rozumiem dlaczego robi to różnice że program został napisany strukturalnie. W ogóle gra wygląda jak by ją można było napisać w WinForms za pomocą customowych okienek.

Offline zx81 (taxi_dr...

  • Użytkownik
    • Something Beautiful team

  • +1
# Lipiec 06, 2014, 16:29:23
"atarowca wal z gumowca"
Jezeli jestes rocznik 80 to ten remake jest dla Ciebie wehikulem czasu do 13 letniego programisty. Czy tamten remake zakonczyliscie?
Bede kibicowal Twojemu projektowi. Z checia zagram.

Offline Vipa

  • Redaktor

  • +6
# Lipiec 06, 2014, 16:32:31
@koirat: to prawie jak korzystanie z silnika! Fuj! ;)

@zx81: trochę starszy jestem, ale niewiele :). Tak, tamten... port w sumie, ukończyłem bez problemu. Do tej pory zastanawiam się skąd miałem tyle cierpliwości by wklepać ponad 200 znaków binarnie :D.

Offline matheavyk

  • Użytkownik
    • rabagames.com

# Lipiec 06, 2014, 19:00:22
Jeśli to nie zbieg okoliczności i natchnęła Cię do tego moja skromna wersja tej gierki (choć ja akurat wzorowałem się na tej wydanej na pc), to cieszę się niezmiernie :). Byłbyś kolejną osobą, którą do tego popchnąłem, bo ostatnio 20+ osób "musiało" przeze mnie pisać swoją wersję tej gierki na zaliczenie baz danych na studiach. Im więcej tym lepiej! Powodzenia

Oczywiście moja wersja nie umywa się do tego, co widać na screenach (nie tylko korzystałem z silnika, fuj, ale był to Unity! ;) ).

Offline Vipa

  • Redaktor

# Lipiec 06, 2014, 21:27:35
@matheavyk: prawdę pisząc to nie znam twojej wersji, ale daj linka bardzo proszę! Dariusz sprzedał papiery do innych, i trudno mi wyciągnąć bez tych papierów całościowe wnioski na temat systemu zachowań, może masz to rozwiązane w oparciu o te papiery?
Ave remejki!

Heh, znalazłem! W sumie to zbieg okoliczności. Ty widzę wziąłeś za podstawę wersję nowocześniejszą, mnie natomiast urzekła na Atarowa, grałem w nią z pół roku kiedyś. Znakomita pozycja. Teraz pewnie większość osób pominęła by ją bez echa, ja zawsze lubiłem grać w jeden tytuł miesiącami i masterować. Dalej mi to zostało. W sumie jedna z tych gier, które napisałem dla siebie i grałem jak maniak.
Tytuł jest tak skonstruowany, że mimo napisania gry, można grać w nią samemu. Full respekt dla twórcy.

Jest jeszcze jeden tytuł, który zamierzam zremejkować - Hamurabi. Też bardzo fajna pozycja. Można się zatracić jak ktoś lubi tego typu pozycje.
« Ostatnia zmiana: Lipiec 06, 2014, 21:35:09 wysłana przez Vipa »

Offline MDW

  • Użytkownik
    • www.encore-games.com

# Lipiec 06, 2014, 21:31:52
A widziałeś "Kupca" w wersji dla Amigi Classic (OCS)?

Offline Vipa

  • Redaktor

# Lipiec 06, 2014, 21:43:43
Hmm, robiłem kiedyś sam w Amosie na Amigę Kupca. Ale nie wyszedł spoza fazy "mam na dyskietce" ;).

Daj linka proszę!

Offline matheavyk

  • Użytkownik
    • rabagames.com

# Lipiec 06, 2014, 22:13:34
@Vipa, nie mam dostępu do "papierów", wrzuciłem po prostu trochę losowości + małe reagowanie na ilość towaru w miastach, żeby chociaż trochę sensownie to wyglądało. Z tego co pamiętam, PC-towa wersja gry wyglądała na dość losową. Ja przynajmniej nie widziałem w niej nic więcej.

Nie dziwię się, że urzekła Cię wersja, którą pokazujesz ;). Ja akurat zagrywałem się w PC-tową (muzyka była super: http://w333.wrzuta.pl/audio/0wzbJOsTsNM/kupiec_pc_soundtrack_timsoft ). A gdybym umiał w tamtych latach sam napisać taką grę (przede wszystkim poprawić sporo błędów, które miała), to z pewnością napisałbym ją i sam w nią grał, tak jak Ty :).

Offline MDW

  • Użytkownik
    • www.encore-games.com

  • +1
# Lipiec 06, 2014, 22:30:21
A choćby tutaj są trzy screenshoty:
http://hol.abime.net/4027/screenshot

Offline Vipa

  • Redaktor

# Lipiec 06, 2014, 23:39:58
Łolala, to jak zupełnie inna gra z tego co czytam w instrukcji. W sumie to z tego co widzę to ludzie często mylą te wersje, tricki do nich itd.

Offline Interceptor

  • Użytkownik

# Lipiec 07, 2014, 00:36:47
Kiedyś grało się w takie gry maniakalnie, dlatego w tego remake`a też chętnie zagram.

Przy okazji możesz odświeżyć drugą perełkę z małego Atari- Kolony :) Obie gry chyba działają na tym samym "silniku".

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

  • +2
# Lipiec 07, 2014, 01:08:20
Cytuj
Napisać to na double bufferingu to masakra.Napisać to na double bufferingu to masakra.
Bym powiedział, że złe podejście. Jak już chcesz na OpenGL z teksturami, to możesz zrobić jeden render target i po nim mazać ile wlezie.

No i warto pamiętać, że SwapBuffers i Peek/Get/Translate/DispatchMessage nie muszą być wołane tylko z jednego miejsca w kodzie. Możesz sobie przecież wywrócić pętlę główną bebechami na zewnątrz, zrobić funkcję typu RefreshScreenAndServiceAllMessages i wołać ją z 500 różnych miejsc i małych pętelek w kodzie (oczywiście owa funkcja wywalała by rendertarget na ekran). :)

Offline Vipa

  • Redaktor

  • +2
# Lipiec 07, 2014, 07:51:36
Możesz sobie przecież wywrócić pętlę główną bebechami na zewnątrz, zrobić funkcję typu RefreshScreenAndServiceAllMessages i wołać ją z 500 różnych miejsc i małych pętelek w kodzie (oczywiście owa funkcja wywalała by rendertarget na ekran). :)
W sumie to tak zrobiłem. W jednym miejscu wszystko i tylko wywołuję koniec pętli w różnych miejsc w kodzie.

Z ciekawostek:

Sporo w tej grze jest czekania na fire, wyborów opcji itd. gdzie miga w rogu gwiazdeczka informująca o tym, że dane okno czeka na fire, dlatego trzeba ciągle dany fragment odświeżać.
Teraz pod koniec każdej z tych mniejszych pętli zawartość ekranu jest łapana do tekstury. Na początku nowej pętli ta tekstura jest wyrzucana na ekran i dorysowywane są zmiany. I tak w koło. Cała gra renderzy się w rozdzielczości Atari i tylko dla gracza obraz jest rozciągany do wielkości okna. Potem może dojdzie jakiś shader imitujący uwalony monitor CRT :).

Chciałbym jakoś symulować prędkość rysowania małego Atari. W tej grze trudno niekiedy się pokapować, które "okno" jest aktywne, jeżeli nie zachodzi na poprzednie. Na Atari czy emulatorze widać, które okno rysowało się ostatnie, bo trwa to około sekundy. To jak uczenie się od nowa - nie ma znaczenia fps, nie ma sensu wszystkiego rysować co ramkę itp. Istny powrót do przeszłości :).

Żeby bardziej symulować sobie tamten feel kodowania, napisałem własne instrukcje z Amstrada: Locate, Print, Ink, Border. Oczywiście symuluję też tryb tekstowy. Pozycja 1, 1 jest w lewym - górnym rogu ekranu. Okno ma wielkość Mode 1, a więc 40x24 znaki. Jakby ktoś nie wiedział o czym piszę - Locomotive Basic z Amstrada CPC. Choć ja wolę zalaną herbatą, pożółkłą i poprzecieraną instrukcję papierową ;).

Cała gra operuje na graficzkach 8x8 px, dlatego chciałem jeszcze dopisać komendę Symbol. Czyli w sumie jedna tablica 255 znaków wpisanych w listę wyświetlania i wywoływać tak jak na Amstradzie. Dałoby radę, ale kod rozrósł by się niemiłosiernie. Ale np. font jest wczytywany z tekstury i pakowany właśnie do listy. Podobnie jak w tutorialu NeHe.

Jeszcze gdyby dało się okroić zajętość pamięci do <128 KB... To lekki szok, gdy tego typu gra zabiera 30 MB RAM. Fakt faktem - mógłbym okroić używane liby.

Offline Nest

  • Użytkownik

# Lipiec 09, 2014, 00:50:18
na comadore w to grałem, trochę inaczej to wyglądało