|
|
|
|
Z kącika majsterkowicza cz. 3 |
|
|
|
|
|
autor: Mr Knife
Podzielony ekran
No to zaczynamy kolejny kurs z serii kącika majsterkowicza. Jak obiecałem, znów przyjrzymy się trybowi multiplayer, tylko tym razem podzielonym ekranem. Nie marnując cennych kilobajtów przejdźmy od razu do rzeczy.
Jak zrobić bardzo prosty podzielony ekran
Wykonanie najprostszego trybu multiplayer zajmie nam tylko parę minut. Jak w takich przypadkach bywa nic wielkiego to nie będzie, ale komuś może się przydać. Na początek musimy przyjąć trochę założeń: ekran przewija się skokowo, przypuśćmy, że robimy strzelankę od góry.
Aby łatwiej wyobrazić sobie działanie silnika spójrzcie na drugi obrazek. Dzięki przesunięciu o odpowiednią wartość sprawiamy wrażenie prawdziwego podzielonego ekranu.
Czas rozbudować komunikację między graczami
Bardzo ważny element, bez którego oprócz
chodzenia nic nie zrobimy. Najbardziej przejrzyste dla nas jest użycie do
tego celu liczników, choć i wartości obiektu (o ile są wolne) będą w sam
raz pasowały. Tworzymy jeden licznik odpowiedzialny za kierunek gracza 2,
otwieramy edytor zdarzeń i ustawiamy, aby zawsze przyjmował on wartość
kierunku gracza drugiego, a następnie zmieniał ją u odpowiednika gracza
2. Oczywiście na wartość tego licznika, jakby ktoś jeszcze się nie
domyślił
Pełny, ale skomplikowany podzielony ekran
Od razu uprzedzam, że nie jest to, aż takie
trudne, ale ja wam sytuacji nie ułatwię
1. Mapa – serce silnika, tworzymy dość duży
rozmiar obszaru gry. W jednym z rogów rozmieszczamy elementy mapy, czyli
ściany, przeszkody. Wszystkie elementy niech będą małe, po co marnować
miejsce
2. Odświeżanie – trudny element, ale należy poświęcić mu trochę więcej czasu. Co kryje się pod tym hasłem? Część obiektów aktywnych, z których zbudowana jest mapa, to ten sam obiekt. Trzeba je jakoś odróżnić. Tu odsyłam do tekstu Broo - Selekcja dobrych obiektów umieszczonego w poprzednim numerze Ślimaczka. Bogatsi w wiedzę z wskazanego Arta, możemy poszukać więcej informacji o tym zagadnieniu. Warto przejrzeć przykłady RomanX’a w szczególności o AI. Tam też występuje odświeżanie. Dlaczego jest to takie ważne? Po prostu jak inaczej mamy tworzyć na podstawie mapy obiekty na ekranie?? Ustawianie każdego z osobna odpada, a bez odświeżania silnik nie poradzi sobie wyświetlaniem kilku takich samych obiektów. Aby uzyskać dobrą wydajność, odświeżanie nie powinno obejmować wszystkich obiektów. Lepiej robić to na bieżąco, dodając obiekt odpowiedzialny za zasięg wzroku. Jeśli dany obiekt z nim koliduje to wtedy przeliczaj liczbę obiektów i nadaj im wartości. Odczytuje się to za pomocą licznika, a nawet kilku liczników. Trochę wtedy jest zabawy, ale za to jaki efekt końcowy
3. Przeliczanie pozycji – niestety
najtrudniejsza rzecz jaką musimy zrobić. Na bieżąco musimy tworzyć nowe
obiekty, ustawiać je na odpowiednie pozycje i w razie czego usuwać. Robimy
to w taki sposób: obiekt w zasięgu gracza, twórz obiekt na ekranie,
sprawdzaj jego pozycje od gracza, ustaw taką (po odpowiednim przeliczeniu) temu na ekranie, obiekt poza zasięgiem, zniszcz go. Na tym w wielkim
skrócie to polega. Niby proste, ale dochodzi do tego jeszcze odświeżanie,
walka o jak najlepszą wydajność. Co do odświeżania, a przeliczania pozycji ->
co 0.01s dodaj do licznika odpowiedzialnego za dany typ obiektów "1", gdy
jest on równy aktualnej liczbie obiektów w zasięgu gracza, zeruj licznik.
Teraz kolizje: obiekt koliduje z zasięgiem gracza, przypisana mu wartość
jest równa odpowiedniemu licznikowi, twórz obiekt na ekranie itp. Tak
wygląda odświeżanie. Resztę robimy analogicznie
Gdy powyższy silnik okaże się zbyt trudny
Istnieje jeszcze inny sposób na stworzenie
takiego silnika, będzie on miał cechy tych dwóch przedstawionych przeze
mnie. Otóż zamiast chodzić graczami, możemy przesuwać całą mapę! Ma wtedy
ona rzeczywisty wymiar i oczywiście muszą być one dwie (dla każdego
gracza). Zasady na jakich będzie działał ten silnik można się łatwo
domyśleć, mapa odpowiednio reaguje na wciskane przez użytkowników
klawisze. Przykład chyba jest zbędny, ale dobra. Po wciśnięciu strzałki w
prawo dodaj do pozycji obiektów składających się na mapę gracza pierwszego
1 piksel. Problemy techniczne nie zaleją nas, jedyną rzeczą nad którą
musimy się zastanowić to kilka zdarzeń, odpowiedzialnych za to, by mapy
nie nakładały się na siebie. Ale jaki to duży problem, odpowiednie
zastosowanie ukryj/pokaż i gotowe
Kończymy
To już wszystko, co przygotowałem dla was w tej części kącika, zapraszam do lektury następnego, którego oczywiście nie zabraknie w 6 numerze Ślimaczka.
PS. Dodam tylko, że zapuszczamy się coraz głębiej w trudniejsze zagadnienia tworzenia silników w TGF. Następny tekst będzie tak rozbudowany, że będę musiał go rozbić na dwie części.
|
|
|
by pepe9donkey |
|