Hypersomnia - multiplayer top-down shooter z otwartym źródłem


#21

Zawsze byłem zwolennikiem Arch Linuxa. Cieszy mnie twoje przejście. Życzę dalszych owocnych prac. Można cię jakoś wesprzeć? umowa kupna sprzedaży samochodu


#22

@sinin Ciepłe słowa są wsparciem zanadto!
Jeśli chodzi o pomoc przy programowaniu, to oficjalna to-do lista projektu zawsze znajduje się w githubowych issuesach, ale nie zachęcam jeszcze nikogo do podejmowania się tych rzeczy dopóki we właściwy sposób nie udokumentuję większej części kodu.

Niedawno zacząłem pisać taką właśnie dokumentację - ale piszę ją tylko gdy nie mam akurat natchnienia do właściwego programowania, bo moim priorytetem jest pchnięcie samej gry do przodu.

Gdy dokumentacja będzie już jakaś ludzka, będę trąbił o tym wszędzie na pewno!


#23

Wybaczcie długą ciszę, ale oprócz tego, że refactorowałem kod pod edytor, to jeszcze spędzałem mnóstwo czasu nad podrasowywaniem swojego Linuxa oraz… Vima. Dzięki temu jestem coraz bardziej produktywny w pisaniu kodu. Zarzucę kilka smaczków ze zbliżającego się edytora świata:

image

Ciekawostka - powyższe pola są wygenerowane automatycznie przez magię którą zaklepałem do generowania introspektorów dla typów w C++. Np. nie musiałem oddzielnie pisać kodu dla pól z “effective radius” oraz “damage” - dla każdego typu danych piszę logikę tylko raz.

A tutaj specjalnie trochę nabałaganiłem:



Unicode support, opisy z bbcode:

Historia zmian, klikalna (również nawigowalna przez Ctrl+Z oraz Ctrl+Shift+Z), trochę inspirowana PhotoShopem:

image

Zielony wpis - ostatnia zapisana na dysku zmiana.
Szary wpis - dalej od obecnej w historii (można tam przejść przez Ctrl+Shift+Z).
Podświetlony na niebiesko wpis - obecna zmiana.

Sporo czasu zajęło mi bawienie się w Linuxa, ale była to bardzo dobra inwestycja z perspektywy zdrowia - otóż ogromna odmiana! Staram się w miarę każdy dzień mieć produktywny w jakikolwiek sposób.

W międzyczasie rozszerza się nam dokumentacja projektu na http://wiki.hypersomnia.xyz/ - jednak jest to mocno work in progress i muszę ją zaktualizować po ostatnich ogromnych refactorach.

Obecnie skupiam się nad pisaniem edytora aby można było stworzyć jakąkolwiek prostą mapę do testów, oraz aby było mi łatwiej prototypować nowe mechaniki.


#24

Progress:

Okno które pozwala wykonywać operacje na hierarchii zaznaczenia:

Widać, że mamy podświedlone statyczne światło, trzy skrzynki i jedną dekorację z wędrującymi pikselkami. Przycisk “Ex” służy do usunięcia danego typu z zaznaczenia.

Widzimy też na screenie działające ikonki dla specjalnych obiektów które nie mają sprite’a ani ciał fizycznych. Jest też oznakowanie bounding boxa całego zaznaczenia.

To samo okno pozwala też na masowe ustawianie własności zaznaczonym bytom i ich typom. Jeśli wartość nie jest identyczna dla całego zaznaczenia, pole pokazuje się na pomarańczowo.

Dzięki temu udało mi się np. wysadzić kilkaset granatów jednocześnie, z poziomu edytora:

(scena zrobiła się trochę biała bo każdy wybuch daje mocne światło)

Implementacja siatki. Jest dosyć konfigurowalna.

Gęstość da się szybko zmieniać przez [ oraz ], jak w VHE.
Siatka również nie pokazuje tych gęstszych warstw przy niższym zoomie, żeby nie zapaprać całego ekranu kreskami:

Tutaj zaznaczyłem trochę podłóg i siatka snapuje mi je zgodnie z ich sumarycznym bounding boxem. Przycisk “s” toggluje snapowanie, gdyby ktoś chciał postawić coś dokładnie co do piksela.

Można też obracać całe zaznaczenie, również ze snapowaniem, tym razem do wielokrotności 15 stopni:

Duplikacja zaznaczenia przez wciśnięcie C:

Mirroring zaznaczenia. Dzięki temu można zrobić tylko jeden róg pokoju i automatycznie zrobić symetryczne odbicia. Np. startując od tego:

Wciskam Ctrl+Strzałka do góry:

A teraz Ctrl+Strzałka w prawo:

I gotowe!

Inne przykłady, np. tutaj z uwzględnieniem obrotu:


Wszystko z powyższych da się oczywiście cofać i powtarzać z historii, albo przez Ctrl+Z oraz Ctrl+Shift+Z.

Detale:

  • po wciśnięciu “f” możemy zaznaczać szybko tylko obiekty tego samego typu.
  • z centruje kamerę na zaznaczeniu, a Shift+z również resetuje na nim zoom.