Gra "Pogromcy Potworów"

Gra "Pogromcy Potworów"
MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
17

Po 12 latach z nudów wróciłem do projektu mojej starej gry napisanej w Delphi i DirectX.

Jest to darmowa gra RPG całkowicie po polsku w której wybieramy jedną z czterech klas a następnie dołączamy do tytułowego klanu "Pogromców Potworów" by walczyć z potworami nękającymi mieszkańców tego świata. W grze znajduje się 6 wysp do eksploracji na których możemy otrzymywać różne zadania od mieszkańców. W sumie w grze znajdują się 34 zadania do wykonania. Walka odbywa się w systemie turowym.

imageimageimageimageimageimageimageimageimageimageimageimage

Strona projektu: link


edytowany 2x, ostatnio: Riddle
woolfik
wrzuć na microblog :)
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Tuchów
  • Postów:12168
1

Napiszesz coś więcej na temat technicznej strony tego projektu?


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
3

Projekt powstawał przez długi czas w przeszłości (od 2008-2010 roku) oryginalnie na Delphi 5 korzystając z komponentów VCL Omega (DirectX 8.1). Cały kod gry zawarty jest w jednym pliku tekstowym mającym około 8000 linijek. Do stworzenia mapy świata napisałem osobny edytor w którym można zmieniać mapę, parametry wrogów czy tworzyć nowe zadania do gry. Obecny build został skompilowany na Delphi 11, a komponenty Omega zostały przeze mnie zmodyfikowane by działały pod DirectX 9 (Co prawda istniała wersja Omegi pod DirectX 9 napisana przez oryginalnych twórców ale nie da się już jej znaleźć na necie). Co tu więcej powiedzieć, pomimo zmiany na DX9 gra dalej używa "fixed function pipeline" do wyświetlania grafiki. Gra po sieci realizowana jest przez starutkie komponenty TServerSocket i TClientSocket i tak naprawdę jest tylko małym dodatkiem bo na raz mogą ze sobą grać tylko dwie osoby. Chyba nie muszę dodawać że jest to 32 bitowa aplikacja dla platformy Windows 😉


flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Tuchów
  • Postów:12168
3

Nie myślałeś o wykorzystaniu czegoś nowszego, jeśli chodzi o backend do renderowania? Nie potrzebujesz jakichś komponentów Omegi, skoro jest SDL, Allegro, RayLib, SFML i wiele innych bibliotek z nagłówkami do Pascala. A w nich możesz używać jednego zestawu funkcji/klas, bez względu na to jaki backend wybierzesz. Taki SDL wspiera domyślnie Direct3D (w tym Direct3D 12), ale można śmiało ustawić OpenGL, Vulkan czy Metal (API jest wieloplatformowe), a do tego są również funkcje do obsługi TCP/IP czy UDP.

Tego typu biblioteki nie tylko zapewniają wygodne w użyciu API do renderowania harware'owego, ale dają też możliwość wygodnej obsługi miksera dźwięków, czy choćby inputu i okna. Poza tym ani nie musiałbyś się ograniczać do rozdzielczości 640×480 (mógłbyś ustawić dowolną obsługiwaną przez sterownik graficzny), ani tym bardziej do 32-bitów (to już zabytek, natywną są platformy 64-bitowe).


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
M4
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 miesiące
  • Postów:67
2

Generalnie furious dobrze doradził. Ja również ze swej strony polecam SDL.Wykorzystałem tą platformę do zrobienia symulacji poruszania się ramienia robotycznego.Rzuć na to okiem : https://www.freepascal-meets-sdl.net/. Dosłownie tutorial prowadzi za rękę. Z drugiej strony "+" za ukończenie gierki, również miło wspominam TServerSocket i TClientSocket :) Wiele lat temu napisałem gierke do grania w tzw. piłkarzyki w oparciu o te komponenty. Zanim to nastąpiło, to za czasów szkoły średniej graliśmy w taką grę namiętnie na lekcjach wychowawczych. Potrzebnych było dwóch graczy z długopisami/ołówkami, kartka papieru i mecz gotowy :)


MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
3

Ogólnie gdy zabierałem się za tworzenie tej gry w 2008 roku nie miałem bladego pojęcia o DirectX, OpenGL itd, pamiętam że w tamtym czasie wiele osób chwaliło sobie te komponenty Omega i tak właśnie zacząłem z nich korzystać, gdy już ukończyłem ten projekt zabrałem się za pisanie własnego mini silnika 3D w Delphi pod DirectX 9, już w tamtym czasie miałem myśli żeby zastąpić te komponenty na coś swojego ale jakoś nigdy się za to nie zabrałem, chyba największym problemem jest ta rozdzielczość 640x480, cała grafika była projektowana pod nią i samo zwiększenie rozdzielczości nie da zadowalających efektów, musiałbym przerobić całą grafikę, niby jest to do zrobienia ale nie mam już tyle czasu co dawniej, szczególnie że tworzę też inną grę w Unity. Może w przyszłości gdy znajdę więcej czasu wrócę jeszcze do tego projektu i zrobię jakieś większe zmiany, przejście na SDL to dobry pomysł. 🙂


Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10067
1

Niezła.

SL
  • Rejestracja:około 7 lat
  • Ostatnio:4 minuty
  • Postów:890
1

Fajny styl graficzny z tym guiem ala Diablo i prymitywną grafiką 3D.

LensAndLines
  • Rejestracja:ponad rok
  • Ostatnio:około rok
  • Postów:3
1
furious programming napisał(a):

Nie myślałeś o wykorzystaniu czegoś nowszego, jeśli chodzi o backend do renderowania? Nie potrzebujesz jakichś komponentów Omegi, skoro jest SDL, Allegro, RayLib, SFML i wiele innych bibliotek z nagłówkami do Pascala. A w nich możesz używać jednego zestawu funkcji/klas, bez względu na to jaki backend wybierzesz. Taki SDL wspiera domyślnie Direct3D (w tym Direct3D 12), ale można śmiało ustawić OpenGL, Vulkan czy Metal (API jest wieloplatformowe), a do tego są również funkcje do obsługi TCP/IP czy UDP.

Tego typu biblioteki nie tylko zapewniają wygodne w użyciu API do renderowania harware'owego, ale dają też możliwość wygodnej obsługi miksera dźwięków, czy choćby inputu i okna. Poza tym ani nie musiałbyś się ograniczać do rozdzielczości 640×480 (mógłbyś ustawić dowolną obsługiwaną przez sterownik graficzny), ani tym bardziej do 32-bitów (to już zabytek).

Twoja uwaga o wykorzystaniu nowszych technologii backendowych do renderowania jest absolutnie trafna i w pełni uzasadniona. Biblioteki takie jak SDL, Allegro, RayLib, czy SFML rzeczywiście oferują wszechstronne możliwości, a jednocześnie są przyjazne dla użytkownika. Zgadzam się, że dają one znacznie więcej swobody, zarówno pod kątem obsługiwanych rozdzielczości, jak i możliwości wykorzystania nowszych technologii, takich jak Direct3D 12, OpenGL, Vulkan, czy Metal. Możliwość łatwej obsługi TCP/IP czy UDP to kolejny plus.

Patrząc na projekt wydaje się, że jego autor miał specyficzne cele, prawdopodobnie chcąc stworzyć coś od podstaw. Jest to podejście, które można porównać do pracy rękodzielniczej – czasochłonne, ale dające ogromną satysfakcję z tworzenia czegoś unikalnego i całkowicie osobistego. W dzisiejszych czasach, zdecydowanie, można by zrealizować podobny projekt znacznie szybciej, korzystając z gotowych komponentów i bibliotek.

Jednakże, warto pamiętać, że dla młodego programisty, często z ograniczonym dostępem do zasobów, taka forma eksperymentowania i uczenia się może być niezwykle wartościowa. To ciekawy relikt przeszłości, który pokazuje, jak daleko zaszliśmy w rozwoju technologii, ale jednocześnie przypomina o wartościach takich jak ciekawość, pasja i pragnienie tworzenia czegoś własnego. Warto zatem docenić ten projekt jako ważny krok w rozwoju autora, nawet jeśli z dzisiejszej perspektywy wydaje się on nieco archaiczny.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Tuchów
  • Postów:12168
2
MrProtek napisał(a):

Ogólnie gdy zabierałem się za tworzenie tej gry w 2008 roku nie miałem bladego pojęcia o DirectX, OpenGL itd, […]

I po to właśnie istnieją biblioteki takie jak SDL — nie potrzebujesz znać API np. OpenGL, aby móc renderować grafikę za pomocą GPU, bo SDL ma zestaw funkcji, które przyjmują proste parametry (np. teksturę i obszary), a cała magia dzieje się pod spodem. Nie tylko nie trzeba się uczyć API konkretnego backendu, ale też taki kod jest przenośny między platformami i isniejących na nich API (np. WIndows→Direct3D, Linux→OpenGL, macOS→Metal itd.).

[…] chyba największym problemem jest ta rozdzielczość 640x480, cała grafika była projektowana pod nią i samo zwiększenie rozdzielczości nie da zadowalających efektów, musiałbym przerobić całą grafikę […]

Nie musisz niczego przerabiać. Jeśli grafikę masz zaprojektowaną pod 640×480, to renderuj klatkę na tylnym buforze (teksturze) o takim rozmiarze, a następnie wyrenderuj gotową klatkę w oknie, odpowiednio ją rozciągając. Z tego sposobu korzystają deweloperzy, np. na potrzeby gier w stylu retro, które charakteryzowały się konkretną rozdzielczością i pikselozą.

Sam też z niego korzystam — tylny bufor ma rozmiar 358×224 piksele, na nim renderowana jest klatka, a następnie ten bufor renderowany jest w oknie, rozciągając klatkę na całe okno (z zachowaniem odpowiednich proporcji). Rozmiar okna i jego proporcje nie mają żadnego znaczenia.


Ogólnie to bardzo ciekawy projekt, rzadko można spotkać sensowniejszą grę pisaną w Pascalu, a już szczególnie taką, która wykorzystuje hardware'owe renderowanie i konkretny mikser dźwięków. Z chęcią kuknąłbym do źródeł tej gry, ale ich nie znalazłem — zdaje się, że to projekt zamkniętoźródłowy. ;)

To co pisałem na temat bibliotek to tylko pytanie zadane z ciekawości. Przeportowanie kodu całej gry, aby skorzystać ze współczesnych technologii, wymagałoby trochę czasu, choć 8kLoC to w sumie niewiele. Tak więc w razie czego warto pamiętać, że do Delphi i Free Pascala bez problemu można znaleźć odpowiednie nagłówki i korzystać z najlepszych istniejących bibliotek multimedialnych.

Przy okazji — antywirus windowsowy ubił mi proces gry mniej więcej po minucie grania, raportując zagrożenie w formie trojana. To najpewniej false-positive mechanizmów heurystyki, ale grać mi nie pozwolił. Zdążyłem obadać menu gry oraz przespacerować się kawałek. Fajna ta mechanika chodzenia — zaskoczyła mnie pozytywnie. :]


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 4x, ostatnio: flowCRANE
MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
0
furious programming napisał(a):

Przy okazji — antywirus windowsowy ubił mi proces gry mniej więcej po minucie grania, raportując zagrożenie w formie trojana. To najpewniej false-positive mechanizmów heurystyki, ale grać mi nie pozwolił. Zdążyłem obadać menu gry oraz przespacerować się kawałek.

A jaki to antywirus? Domyślny windowsowy? Wiem że Avast potrafi mi wysypać grę podczas pierwszego skanowania, ale później już chodzi dobrze. Niestety na to już nic się poradzić nie da, może gdyby aplikacja miała cyfrowy podpis to wtedy antywiry dały by jej spokój, ale taki podpis to spory wydatek. 😐


flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Tuchów
  • Postów:12168
0
MrProtek napisał(a):

A jaki to antywirus? Domyślny windowsowy?

Windows Defender, pod Windows 10.

Niestety na to już nic się poradzić nie da, może gdyby aplikacja miała cyfrowy podpis to wtedy antywiry dały by jej spokój, ale taki podpis to spory wydatek. 😐

Sam mam jeszcze sporo czasu, ale z chęcią dowiedziałbym się ile faktycznie to kosztuje i z którego rozwiązania ludzie najczęściej korzystają, jeśli chodzi o podpisywanie plików wykonywalnych (aplikacji oraz instalatorów). Ale nie wiem czy jest tutaj ktoś, kto chciałby się podzielić takimi informacjami i napisać jak wygląda cała procedura podpisywania oraz jakie są to koszty.

Ale sam podpis cyfrowy nie ma nic wspólnego z antywirusami — w końcu malware też sobie można podpisać. ;)


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
Manna5
malware też sobie można podpisać Tylko że chyba wtedy po podpisie można by było zidentyfikować twórcę wirusa.
MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
0
furious programming napisał(a):

Ale sam podpis cyfrowy nie ma nic wspólnego z antywirusami — w końcu malware też sobie można podpisać. ;)

Owszem można ale podpis gwarantuje że aplikacja nie była w żaden sposób modyfikowana, więc wydaje mi się że jeżeli aplikacja jest podpisana, szczególnie przez jakąś znaną firmę to antywirus będzie traktował taką aplikacje inaczej niż taką niepodpisaną.

Kiedyś sprawdzałem ceny takich podpisów to było coś koło 350 funtów na rok, ale widziałem też tańsze alternatywy jeżeli aplikacja była open source, dlatego też w przypadku mojej gierki mogę o tym zapomnieć. 😉


MM
  • Rejestracja:około 15 lat
  • Ostatnio:ponad rok
0

Aż się zalogowałem. Kiedyś na to trafiłem i przeszedłem do momentu jaki był. Nie była jeszcze ukończona. Z tej gry sporadycznie używam rybostwór i przeinaczam na inne rzeczy. Całkiem dobrze pamiętam.

MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
1
M-M napisał(a):

Aż się zalogowałem. Kiedyś na to trafiłem i przeszedłem do momentu jaki był. Nie była jeszcze ukończona. Z tej gry sporadycznie używam rybostwór i przeinaczam na inne rzeczy. Całkiem dobrze pamiętam.

To były dobre czasy, z samego warsztatu.gd przez lata gra była pobrana kilkanaście tysięcy razy, kilka lat temu dostałem maila od jakiejś osoby która mi napisała że grała w tę grę za dzieciaka i miło ją wspomina, miłe uczucie. 🙂


WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 2 godziny
  • Postów:3179
0

o, chyba nawet wieki temu pobralem to z Warsztatu i odpalilem.

PD
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 8 godzin
1

@furious programming @MrProtek Cennik masz np. tutaj: https://sklep.certum.pl/bezpieczenstwo-danych/certyfikaty-code-signing.html
Certyfikat w wersji standard nie likwiduje pojawiania się okienka SmartScreen Application Reputation

Ja korzystam z certyfikatu z Sectigo OV - odpowiednik wersji standard. Ogólnie to od czerwca 2023 zmieniły się przepisy w zakresie certyfikatów do podpisu kodu (wcześniej można było podpisywać za pomocą klucza prywatnego znajdującego się w pliku), natomiast po zmianach klucz prywatny musi znajdować się na sprzęcie posiadającym certyfikat FIPS 140-2 level 2, Common Criteria EAL 4+. Wpłynęło to również na ceny certyfikatów OV - wzrosły o około 200%.


pozdrawiam
paweld
flowCRANE
Drogie to jak jasna cholera.
flowCRANE
Jest jakiś limit na liczbę podpisanych plików w okresie ważności certyfikatu?
PD
Jeżeli kupisz zwykły certyfikat, to nie. Natomiast ten w chmurze z reguły ma limit, np. w certum jest to 5000 podpisanych plików na miesiąc.
flowCRANE
Ok, dzięki za informacje.
K8
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Małopolska
  • Postów:644
1

Po 12 latach z nudów wróciłem do projektu mojej starej gry napisanej w Delphi i DirectX

moglbys powiedziec skad czerpales wiedze/podstawy

MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
2
krzychu82a napisał(a):

Po 12 latach z nudów wróciłem do projektu mojej starej gry napisanej w Delphi i DirectX

moglbys powiedziec skad czerpales wiedze/podstawy

To dość ciekawe pytanie, gdy miałem z 17 lat i jeszcze mieszkałem w Polsce nie miałem internetu, mój komputer to był wrak na którym ledwo cokolwiek działało, miałem stary psujący się monitor CRT i ogromne chęci by coś stworzyć. Miałem wtedy manie na Warcrafta 3, a dokładnie na edytor map do tej gry, siedziałem przy tym cały czas i próbowałem stworzyć jakieś fajne mapki. Po roku zabawy z tym narzędziem zrozumiałem podstawy takie jak zmienne czy instrukcje warunkowe. Miałem już wtedy jakieś wyobrażenie jak musi wyglądać programowanie mimo że nie miałem styczności z żadnym językiem programowania. Jakiś czas później w szkole nauczyciel informatyki pokazał nam na lekcji Turbo Pascala, oczywiście byłem nim mega zafascynowany, przyniosłem sobie ten program do domu i zacząłem czytać całą pomoc jaka tam była dostępna, pamiętam że po 2 tygodniach przyniosłem do szkoły grę tekstową która była oczywiście śmiesznie napisana, nie było w niej ani funkcji, ani procedur, a wszystkie pętle były realizowane przez "goto". Pytałem się nauczyciela o jakieś wskazówki ale on nie miał bladego pojęcia o programowaniu i nie umiał mi pomóc. Ostatecznie więc kupiłem sobie jakąś książkę o tworzeniu gier w pascalu i to mi sporo pomogło. Potem były kafejki internetowe, stronki z kursami programowania itd. Tak było w moim przypadku. 😉 Tak poza tym ta pierwsza tekstowa gra którą przyniosłem do szkoły po 2 tygodniach nauki programowania miała tytuł "Pogromcy Potworów" 😅


edytowany 2x, ostatnio: MrProtek
opiszon
  • Rejestracja:prawie 3 lata
  • Ostatnio:około 2 godziny
  • Postów:780
0

Czy ta książką było "programowanie gier 2d/3d w Turbo Pascal" napisane przez mojego kolegę z liceum? :-D

MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
2
opiszon napisał(a):

Czy ta książką było "programowanie gier 2d/3d w Turbo Pascal" napisane przez mojego kolegę z liceum? :-D

To była dokładnie ta książka:
https://helion.pl/ksiazki/tworzenie-gier-2d-i-3d-w-jezyku-turbo-pascal-piotr-besta,2d3dtp.htm#format/d 😉


opiszon
  • Rejestracja:prawie 3 lata
  • Ostatnio:około 2 godziny
  • Postów:780
0

No to ta :-)

MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
0
opiszon napisał(a):

No to ta :-)

Ta książka to było coś co idealnie wtedy potrzebowałem, lubiłem ją czytać żeby się motywować do działania, zaraz później napisałem gierkę o strzelaniu do samolocików w trybie 13h 😀 W sumie do tej pory mam tę gierkę razem z kodem źródłowym, no ale książki już nie mam niestety.


opiszon
  • Rejestracja:prawie 3 lata
  • Ostatnio:około 2 godziny
  • Postów:780
0

@MrProtek piękne to byli czasy jak przynosisz prostego Arkanoida na zaliczenie Pascala a kolega wpada z jakimś wypasem w 13h i wstawkami asm :-p

4w0rX4t4X
Jeszcze większym kozakiem byłeś jak umiałeś ogarnąć XMode 320x400 albo 376x564 w 8bpp.
opiszon
Dla mnie wtedy (98-00) cokolwiek w wyższych trybach graficznych to był Olimp ;-)
UC
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 15 godzin
  • Postów:27
1

swoją drogą szkoda, że ta ksiązka nie jest już nigdzie dostępna. Niby staroć, ale by się człowiek pobawił ;)

opiszon
  • Rejestracja:prawie 3 lata
  • Ostatnio:około 2 godziny
  • Postów:780
0
UncleChesster napisał(a):

swoją drogą szkoda, że ta ksiązka nie jest już nigdzie dostępna. Niby staroć, ale by się człowiek pobawił ;)

3 sztuki na allegro ;-)

UC
O proszę, wcześniej mi nie wyświetlało, a teraz tylko jedną
MrProtek
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
0

Nowa wersja! Co prawda nie tak ambitna jak poprzednia. Głównie skupiająca się na ostatecznym doszlifowaniu gry: poprawki w ogólnym działaniu, w trybie sieciowym, w tekstach itd. Dodałem do gry nowy mały sekrecik 😉


WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 2 godziny
  • Postów:3179
0

O, powrot do czasow jak bylem nieco mlodszy :P Gralem w toto jeszcze na tym starym forum o grach Warsztat (tylko nie pamietam co dalej czy bylo .gd cyz inaczej).

RS
  • Rejestracja:8 miesięcy
  • Ostatnio:5 miesięcy
  • Postów:7
0

nie zrozumiałem. Czy gra jest już gotowa, czy dopiero wróciłeś, żeby ją dokończyć?

machinebyte4 napisał(a):

Generalnie furious dobrze doradził. Ja również ze swej strony polecam SDL.Wykorzystałem tą platformę do zrobienia symulacji poruszania się ramienia robotycznego.Rzuć na to okiem : https://www.freepascal-meets-sdl.net/. Dosłownie tutorial prowadzi za rękę. Z drugiej strony "+" za ukończenie gierki, również miło wspominam TServerSocket i TClientSocket :) Wiele lat temu napisałem gierke do grania w tzw. piłkarzyki w oparciu o te komponenty. Zanim to nastąpiło, to za czasów szkoły średniej graliśmy w taką grę namiętnie na lekcjach wychowawczych. Potrzebnych było dwóch graczy z długopisami/ołówkami, kartka papieru i mecz gotowy :)

Czy to nie jest gra przeglądarkowa? Czy muszę to pobrać?

edytowany 2x, ostatnio: cerrato
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Tuchów
  • Postów:12168
1

@RuneSpecter: to nie jest gra przeglądarkowa — w końcu była stworzona w starym Delphi i DirectX.

MrProtek napisał(a):

Strona projektu: link

Kliknij w link, znajdziesz tam zakładkę Download i instalator do pobrania, dla Windows.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)