RPG2D - czyli wersja prototypowa mojej gry RPG

RPG2D - czyli wersja prototypowa mojej gry RPG
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:277
8

Witam.
Chciałbym podzielić się z Wami prototypową wersją mojej gry. Gra jest we wczesnym stadium rozwoju, ale prace wciąż nad nią trwają i mam nadzieję, że w najbliższym czasie zostanie ukończona. W założeniu ma to być gra 2D RPG, czyli przygodowa, w której będziemy mogli walczyć z przeciwnikami na różne sposoby, rozwijać bohatera, wykonywać wszelakie zadanie no i pchać fabułę do przodu.

Chętnie wysłucham Waszych porad i sugestii co można dodać lub zmienić. :-)

sterowanie:
-WASD + Enter
-Strzałki + Spacja

rozmiar:
4,17 MB

download
RPG2D v0.1.rar (skan w VirusTotal)

image


W wolnych chwilach od codzienności programuję hobbystycznie grę RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
edytowany 3x, ostatnio: flowCRANE
flowCRANE
Mała wskazówka, dlatego w komentarzu — jeśli chcesz się podzielić binarką, to wrzuć archiwum do załączników posta.
tBane
w linku pod download jest archiwum do pobrania :-)
Spine
@tBane: właśnie o to chodziło @furious programming, możesz wrzucić plik na hosting 4programmers, zamiast na jakieś inne serwisy z reklamami itp. Dołączasz do posta.
flowCRANE
Dodałem paczkę do załączników posta oraz link do VirusTotal.
Fistandantilus
Fistandantilus
Grafa kojarzy mi się z już niedostępną na Steam grą The Big Elk.
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:minuta
  • Postów:6624
4

Przydałoby się wideo z gry, dla tych, którzy nie chcą odpalać exe.

Dobrze też by było, gdyby opisał tekstowo o co chodzi itp.
To też dobre ćwiczenie przed reklamowaniem gry wydawcy/klientom.

Elevator pitch itd.

Tutaj masz mały opis: https://www.tinybuild.com/how-to-pitch-your-game


🕹️⌨️🖥️🖱️🎮
edytowany 3x, ostatnio: Spine
tBane
a jakim programem najlepiej nagrać takie exe ?
Spine
@tBane: Jeśli masz kartę graficzną NVIDIA, to powinieneś ze sterownikami mieć zainstalowany programik GeForce Experience, on tam ma taką ikonkę z połączonymi kropkami (share), tam się wszystkiego dowiesz jak nagrywać grę - skróty klawiszowe itp. Alternatywnie, Windows bodajże od 10 ma swoje narzędzie do nagrywania pulpitu. Odpalasz je skrótem Win+G.
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:277
0

Na razie jest to mocny prototyp, świat gry jest bardzo mały tzn. jest tylko to co na załączonym screenie.


W wolnych chwilach od codzienności programuję hobbystycznie grę RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
edytowany 1x, ostatnio: tBane
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:minuta
  • Postów:6624
1

Jakbyś szukał grafiki, to chyba mógłbyś użyć tego, co przez lata zrobiono dla Battle for Wesnoth:
image

Według tego co piszą ( https://wiki.wesnoth.org/Wesnoth:Copyrights#The_Battle_for_Wesnoth_-_Visual_and_Audio_Contributions ), wszystkie wizualne assety są teoretycznie free.
Tylko musisz spełnić wymagania licencji - Twoja gra musiałaby być open source.

tBane napisał(a):

Na razie jest to mocny prototyp, świat gry jest bardzo mały tzn. jest tylko to co na załączonym screenie.

Ale chyba masz jakiś obraz w głowie tego co chcesz osiągnąć?
Np. na jakiej grze się wzorujesz? Czym się będzie Twoja gra różniła od niej? itd.


🕹️⌨️🖥️🖱️🎮
edytowany 1x, ostatnio: Spine
Fistandantilus
Fistandantilus
Ah, Wesnoth. Ile w to grałem...
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:277
1

Tak mam grę na której się wzoruję - Gothic 3 The Beginning ;-)


W wolnych chwilach od codzienności programuję hobbystycznie grę RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8399
1

Nie ma wersji online? Albo filmiku z gameplaya chociaż?


Boski
  • Rejestracja:prawie 6 lat
  • Ostatnio:15 dni
  • Postów:131
1

Chrome mocno blokuje mi pobranie tego pliku. 'Ten plik zawiera złośliwe oprogramowanie lub pochodzi z podejrzanej strony'
a po screenie:

  • cienie pod elementami na mapie powinny mieć inny kolor - teraz musiałem się zastanawiać czy to na pewno cienie. Dobrze, żeby miały go też postacie. Ten od drzewa powinien mieć bardziej rozmiar korony niż pnia, skoro światło pada od góry
  • jeśli okręgi pod postaciami to range, to może wyświetlać je na hover myszki (podobnie w sumie nazwy czy dodatkowe parametry/statystyki)? I nie powinny nachodzić na budynki (sortowanie)
  • styl graficzny jest mocno mieszany. O ile drzewka i kamienie przypominają pixelart, o tyle domki/budynki już nie
    jak wrzucisz filmik chętnie coś dodam
tBane
dziękuję za rady :-) to z hoverem myślę, że będzie praktyczniejsze niż ciągłe rysowanie colliderów.
Boski
Mały update, bo pograłem: coś jest nie tak z poruszaniem się. Jest wolne, skokowe, a dodatkowy problem - wrogowie mogą zblokować gracza całkowicie. Gracz powinien być też szybszy niż wrogowie, nawet nieznacznie, ale żeby móc uciekać.
Boski
Fajnie, że jest muzyka, dobrze byłoby dodać jakieś settingsy / możliwość ustawiania volume. I przydałoby się (nawet debugowo) reset pod klawiszem R
tBane
ok. wezmę to pod uwagę, dzięki ! :-)
Manna5
Chrome mocno blokuje mi pobranie tego pliku To nie używaj Chrome.
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:minuta
  • Postów:6624
1

Jeśli chodzi o budowle, to moim zdaniem, zamiast rysować ołówkiem w Paint'cie, dobrze by wyglądało narysowanie ich z użyciem krzywych, np. w Inkscape. Chyba, że celujesz w styl Kapitana Bomby...


🕹️⌨️🖥️🖱️🎮
edytowany 1x, ostatnio: Spine
tBane
tak, grafiki budynków są do poprawy, niebawem się tym zajmę :-)
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12155
1
Boski napisał(a):

Chrome mocno blokuje mi pobranie tego pliku. 'Ten plik zawiera złośliwe oprogramowanie lub pochodzi z podejrzanej strony'

Chrome sam z siebie jest wirusem, więc niech nie przygania. Skan w VirusTotal — plik wykonywalny jest czysty.


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 1x, ostatnio: flowCRANE
Zobacz pozostały 1 komentarz
flowCRANE
Przydałby się podpis cyfrowy, ale taki nie jest tani, więc dla byle gierki nie opłaca się go kupować.
Boski
a ten podpis czasem nie jest do obejścia ekranu windows defender 'czy na pewno chcesz uruchomic ten plik' czy coś takiego? bo tutaj problem jakby bardziej po stronie chrome/zapisu pliku a nie uruchamiania go. Zastanawia mnie też to, że często pobieram dziwne instalki z neta, a widzę ten komunikat może drugi raz. Może też kwestia akurat tego hostingu?
flowCRANE
Tak, do tego służy. W razie rozpowszechniania wirusów, będzie wiadomo czyja to sprawka. ;)
flowCRANE
Chrome może mieć takie serwisy-wrzuty na czarnej liście i automatycznie ostrzegać użytkownika o potencjalnych zagrożeniach, szczególnie w przypadku plików wykonywalnych i archiwów.
Yarilo
Chrome chociaż bardziej przydatny wirus niz taki Pascal naprzykład xD
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:277
1

Witam.
Dodałem kilka poprawek do mojej gry i chciałbym Wam ją zaprezentować. Jeżeli masz jakiś pomysł co mógłbym do niej dodać daj znać ;-)

wersja
v 0.2

sterowanie
-WASD + Enter
-Strzałki + Spacja

rozmiar
5.41 MB

image

updates
-dodano pasek zdrowia gracza, teraz widać ile gracz ma punktów życia
-zwiększono szybkość gracza, tak że gracz może teraz uciekać przed potworami, gdy walka okaże się zbyt ciężka
-dodano wczesny system skryptów (teraz obiekty są wczytywane z pliku mapy)
-zwiększono zasięg ataku zarówno gracza jak i potworów, walki są przyjemniejsze
-dodano ataki potworów, od teraz można toczyć prawdziwe walki
-zaktualizowano budynki świątynii, teraz są w stylu pixel art
-dodano zanikanie obiektów, obiekty stają się półprzeźroczyste, gdy gracz znajduje się za nimi
-naprawiono błędy związane z animowaniem bohatera
-ukryto diagnostyczne elipsy, teraz aby zobaczyć zasięg obiektu należy na niego najechać kursorem

download


W wolnych chwilach od codzienności programuję hobbystycznie grę RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
edytowany 8x, ostatnio: tBane
Spine
Znowu nie dodałeś pliku jako załącznik.
tBane
nie wiedziałem, że da się dodać archiwum bezpośrednio do posta. Teraz już wiem i dodałem :-)
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8399
2

Jak dla mnie to te napisy białe gdzieś giną w tle często.
screenshot-20240511204038.png
Zwiększyłbym widoczność - np. umieszczając je w prostokątnej ramce. Albo może po prostu dodając cień/czarną obwódkę wokół liter.

No i czasem pasek wchodzi za drzewa np. przy wilku:
screenshot-20240511204552.png
Nie wiem, czy to specjalnie, ale ja bym oczekiwał, że pasek energii i nazwa postaci będzie widoczna zawsze.

No i paski energii bym zróżnicował (dużo energii - zielony kolor; średnio - żółty kolor; mało: czerwony kolor).


Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:minuta
  • Postów:6624
2
LukeJL napisał(a):

No i paski energii bym zróżnicował (dużo energii - zielony kolor; średnio - żółty kolor; mało: czerwony kolor).

Gdyby OP robił w Unity, to by mógł sobie zrobić gradient jako pole skryptu:

screenshot-20240511224429.png

A w skrypcie po prostu odnosiłby się do tego gradientu:

Kopiuj
public void SetHp(int hpValue, float hpBarFillRate)
{
    hpValueText.text = hpValue.ToString();
    hpValueBar.fadeOutProgress = hpBarFillRate;

    hpValueBar.color = hpValueText.color = hpValueGradient.Evaluate(hpBarFillRate);
}

@tBane: nie rób w SFML. Szkoda się tego uczyć.


🕹️⌨️🖥️🖱️🎮
edytowany 2x, ostatnio: Spine
Zobacz pozostałe 5 komentarzy
Spine
@tBane: Im szybciej się weźmiesz z jakieś aktualne technologie tym lepiej. Bo to co teraz robisz to tak jakbyś chciał pracować w systemie MS-DOS, podczas gdy wszędzie używa się już Windowsa. Jeśli robisz to świadomie, bo chcesz zobaczyć jak to się kiedyś robiło, bądź jesteś ascetą cyfrowym, to jest usprawiedliwione. W każdym innym wypadku szkoda sobie głowy zawracać takim SFML'em, bo nigdzie się już tego nie używa.
tBane
@Spine: ok, wezmę do siebie tę radę, ale obecny projekt i tak zrobię w SFML, bo jak już zacząłęm to szkoda się znów przesiadać na kolejną bibliotekę/silnik
flowCRANE
Moment — SFML jest współczesną technologią i spokojnie można go używać do tworzenia relatywnie prostych gier, tym bardziej dla zabawy czy nauki. Unity można wziąć pod uwagę co najwyżej jeśli chce się stworzyć bardziej skomplikowaną grę (np. 3D) lub planuje się pracować zawodowo w tym narzędziu. Choć i tak bym się nad tym zastanowił, ze względu na gównianą politykę licencyjną Unity.
Spine
@furious programming: Zabawa, czy nauka wcale nie wykluczają stosowania bardziej user-friendly narzędzi. Wręcz przeciwnie. To tak jakbyś pochwalał pisanie tekstu do wydruku w notatnik, zamiast w pakiecie biurowym... Ty sobie lubisz utrudniać życie i nie widzisz nic złego w tym, że inni to robią. Być może usprawiedliwiasz w ten sposób własną niechęć do poznania czegoś nowego. Ja uważam, że powinno się wyprowadzać z błędu początkujących, którzy przypadkowo trafili na jakąś niszową technologię i myślą, że robienie w niej ma sens.
Spine
@furious programming: Na gównianą politykę licencyjną Unity może sobie pozwolić właśnie dlatego, że narzędzie jest takie dobre. I tak większości ludzi to nie dotyczy - nie zarabiają na Unity aż tyle. A firmy stosujące Unity jakoś sobie z tym poradzą. Poza tym, po tym całym zamieszaniu z licencjami trochę się polepszyło - https://blog.unity.com/news/open-letter-on-runtime-fee - 2,5% revenue to nie aż tak wielka cena, w porównaniu z tym, co dostajemy w zamian. Steam i tak zabiera 30% od każdej sprzedanej kopii :]
phantom_wizard
  • Rejestracja:około 3 lata
  • Ostatnio:4 minuty
  • Postów:125
0
tBane
Dziękuję, ale raczej sam będę rysował całą grę. Muszę jeszcze trochę przerobić tutoriali.
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:277
3

Witam.
Chciałbym zaprezentować Wam kolejną wersję mojej gry. Jest to już trzecia wersja demonstracyjna i mam nadzieję, że się wam spodoba. Dodałem kilka poprawek i parę nowych funkcji.
Liczę na Wasz odzew co by można było dodać lub zmienić. W każdym razie, zapraszam :-)

wersja
v 0.3

sterowanie
-WASD + Enter
-Strzałki + Spacja

rozmiar
3.50 MB

updates
-poprawiono podpisy obiektów - teraz mają czarny kontur i dzięki temu są jeszcze czytelniejsze
-teraz nazwy oraz paski życia potworów są zawsze widoczne i nie są zasłaniane przez inne obiekty
-dodano zioła - zbierz je a wyleczą Twoje rany (tylko niektóre leczą)
-dodano ścieżki/drogi, na których nie pojawiają się potwory no chyba, że akurat gracz je rozzłościł

download
RPG2D v0.3.rar

image


W wolnych chwilach od codzienności programuję hobbystycznie grę RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
edytowany 6x, ostatnio: tBane
Boski
  • Rejestracja:prawie 6 lat
  • Ostatnio:15 dni
  • Postów:131
1

Super, że rozwijasz! Coraz przyjemniej się gra.

  • pytałeś o pathfinding, ale oprócz tego imo potrzebujesz użyć nieco fizyki, tj połączyć te 2 rzeczy. Teraz chodzenie jest bardzo statyczne - kolizja blokuje ruch, a o wiele przyjemniej jest gdy się 'ślizga' od przeszkody. Czyli, jeśli nacisnę W+A to chciałbym iść po skosie, a jak będzie drzewo, to postać powinna się delikatnie przesuwać w tym kierunku, w którym może (jeśli drzewo blokuje od lewej strony i nieco od dołu, to postać powinna w przypadku W+A przesuwać się w górę). To nie jest jakoś mega skomplikowane, kilka operacji na wektorach
  • czy myślałeś o systemie ekwipunku? fajnie, jakby te zioła i inne przedmioty dało się zbierać, i wykorzystać później
  • przydałoby się troche UI, generalnie to gruba sprawa ale dużo można się nauczyć (nie na zasadzie, rysuje okno, rysuje przycisk, ale lista okienek, każde okienko ma liste kontrolek ( takich jak przycisk, napis, slider), dziedziczenie w kontrolkach)
edytowany 1x, ostatnio: Boski
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:277
1

Witam!
Chciałbym zaprezentować wam czwartą wersję mojej gry. Dodałem kilka nowości oraz poprawek. Zapraszam do oceniania i komentowania :-)

wersja
v 0.4

sterowanie
-WASD + Enter + E
-Strzałki + Spacja + L-Ctrl

rozmiar
5.10 MB

system operacyjny
Windows

updates
-dodano system ekwipunku - naciśnij klawisz E lub L-Ctrl i zobacz jakie przedmioty udało ci się zebrać
-w ekwipunku można korzystać z przedmiotów poprzez naduszenie Spacji lub Enter
-zmieniono wygląd paska życia
-po zabiciu potwora wypada teraz z niego mięso, które można zebrać i odnowić HP

RPG2D 021 v.04.png
RPG2D 022 v.04.png
download
RPG2D v0.4.rar


W wolnych chwilach od codzienności programuję hobbystycznie grę RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
edytowany 16x, ostatnio: tBane
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12155
1

Super, że projekt się rozwija i coraz więcej rzeczy jest w nim zaimplementowanych, jednak zauważyłem, że to kolos na glinianych nogach — masz poważne braki w podstawach. Zdajesz się być kolejną ofiarą trendu rozpowszechnianego głównie przez youtubowych bieda-game deweloperów. I ten rak trawi branżę, niszcząc przede wszystkim początkujących koderów gier — nie liczy się funkcjonalność i jakość, a fajerwerki na ekranie, szybka gratyfikacja i aplauz.

Wspominam o tym dlatego, że brakuje mu choćby podstawowych danych — plik wykonywalny nie ma żadnej ikonki (nawet testowej), nie ma też uzupełnionych danych na temat nazwy programu, jego wersji czy informacji o twórcy i prawach autorskich (eksplorator systemowy i okno właściwości pliku nie pokazują żadnych niedomyślnych danych o pliku wykonywalnym). Te dane powinieneś wstępnie uzupełnić tuż po utworzeniu projektu w IDE.

Nie udało mi się uruchomić tej gry (o tym za chwilę), ale z danych, które podałeś (i ze zrzutów) wynika, że jedyne co ta gra posiada to obsługę mapy z aktorami i graczem, a także niektórych ficzerów rozgrywki. Zakładam, że nie masz tak podstawowych rzeczy jak choćby obsługa mapowania inputu (i wsparcia gamepadów), wsparcia trybu pełnoekranowego (desktopowego i ekskluzywnego), możliwości ustawienia parametrów pętli głównej (framerate oraz jego ograniczanie), wsparcia etapów (game stages) oraz innych fundamentalnych, niezwykle istotnych rzeczy.

Zabierasz się za ten projekt od końca, czyli od rozgrywki, ignorując fundament jakim jest silnik. Im dłużej będziesz zwlekał z dodaniem podstawowych rzeczy, tym więcej czasu później stracisz na ich implementację i dostosowywanie tego co już masz do nowych funkcji (bo cała rozgrywka będzie od nich zależeć). Istnieje też wysokie ryzyko, że np. implementując mapowanie inputu, cały kod rozgrywki będzie wymagał przepisania na nowo, co zeżre jeszcze więcej czasu.

Nie odbieraj tego posta jako ataku personalnego, bo nim nie jest. Jeśli chcesz dokończyć ten projekt i zapewnić mu wysoką jakość, natychmiast zakończ prace nad rozgrywką, wróć do podstaw silnika i zaimplementuj w nim ficzery, na których opierać się będzie dosłownie cała gra. Im szybciej i lepiej je zaimplementujesz, tym lepiej dla całego projektu i twojej motywacji do dalszych prac. Pamiętaj, że domu nie buduje się zaczynając od dachu, który ledwo trzymać się będzie na kominie.

Wracając do problemów technicznych — gra nie uruchamia się, bo odwołuje się do bibliotek dll, które nie istnieją w moim systemie (Windows 10, 22H2, z najświeższymi aktualizacjami). Brakuje poniższych bibliotek:

  • vcruntime140d.dll
  • msvcp140d.dll
  • vcruntime140d_1d.dll
  • ucrtbased.dll

Obstawiam, że nie mam zainstalowanego czegoś pokroju Visual Studio, stąd brak tych bibliotek. Zainteresuj się tym tematem i kompiluj swój projekt w taki sposób, aby nie wymagał dodatkowych dll, a jeśli już, to dołącz je do instalacji/archiwum gry (o ile ich licencja na to pozwala). Nie używam SFML-a, bo to słaba i ssąca pałkę CPU biblioteka, więc tutaj rozwiązania musisz poszukać na własną rękę. Albo wywalić SFML-a i skorzystać z SDL-a, który żadnych zależności nie wymaga i działa wszędzie, w dodatku szybciej od SFML-a.


PS: mała rada — jeśli publikujesz zbiór wielu plików w formie pliku archiwum, to nie kompresuj katalogu z plikami, a znajdujące się w tym katalogu pliki. Jeśli spakujesz same pliki, to użytkownik będzie miał wybór: albo wypakować same pliki, albo wypakować je do konkretnego katalogu, proponowanego przez archiwizator (opcje Extract here oraz Extract to "foldername\").

Przez to, że pakujesz cały katalog, użytkownik traci taką możliwość — opcja Extract here wypakuje katalog z plikami, a Extract to "foldername\" wypakuje katalog, w którym będzie katalog, w którym będą pliki. To super-irytujące.


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 6x, ostatnio: flowCRANE
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:277
0

ok. dziękuję za rady. Postaram sie naprawić te błędy. Pomysł z ikoną jak najbardziej przypadł mi do gustu, postaram się to zrobić. Postaram się również pakować pliki w rar'ze tak jak doradziłeś. A co do pada - zastanowię się :-)


W wolnych chwilach od codzienności programuję hobbystycznie grę RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12155
1

Dobra, nowa wersja odpala się i działa. ;)

Niestety wydajność tej gry jest tragiczna — framerate wynosi zawrotne 15 klatek na sekundę (użyłem FRAPS-a do jego określenia). To akurat typowe dla SFML, bo ta biblioteka zdaje się kompletnie ssać na low-endowych urządzeniach, pomimo tego, że spokojnie mogę grać np. w Broforce (który jest lekkim bloatwarem). W jaki sposób renderujesz zawartość gry? Software'owo czy z wykorzystaniem GPU?

Drugi problem jest taki, że trzymając lewy Ctrl, okno zasobnika miga — tak długo jak trzymam wciśnięty ten klawisz, tak długo zasobnik pokazuje się i znika. Musisz sprawdzać czy dany klawisz został świeżo wciśnięty i jeśli tak, to zmienić widoczność zasobnika, a jeśli jest trzymany, to nic nie robić.


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 5x, ostatnio: flowCRANE
Zobacz pozostały 1 komentarz
flowCRANE
Nawet jeśli tak jest, to nadal nie zmienia to faktu, że 15 FPS to trochę mało — animacje są skokowe, a powinny być płynne. Na tym samym laptopie mogę odpalić swoją starą grę, w która w ogóle nie używała GPU, a mimo to renderuje grę na pełnym ekranie w 60fps, zużywając 60% czasu procesora. Jeśli u ciebie tak niska wydajność nie jest winą SFML-a, to musisz popracować nad wydajnością. Optymalizacje kodu są kluczowe w przypadku gier.
tBane
ok. Już sobie przypomniałem dlaczego jest 15 FPS, ponieważ tak reguluję czas gry. Nie mam pojęcia jak w inny sposób "spowolnić" animacje w grze.
flowCRANE
Wszystko zależy od tego, jak obecnie masz je zaimplementowane, czyli jak działa główna pętla gry. Podstawą powinno być 60fps, dla wybitnie wymagających gier 30fps — 15fps to za mało, oko ludzkie bez problemu wyłapie skokowość animacji (24fps to minimum dla oka, dlatego filmy mają tyle lub więcej).
tBane
Ok. Już nad tym pracuję, by to poprawić.
flowCRANE
Fajnie by było, gdybyś o to zapytał w poście, podając obecną implementację. Pętla główna to bijące serce każdej gry, więc musi działać perfekcyjnie.
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:minuta
  • Postów:6624
3
furious programming napisał(a):

PS: mała rada — jeśli publikujesz zbiór wielu plików w formie pliku archiwum, to nie kompresuj katalogu z plikami, a znajdujące się w tym katalogu pliki. Jeśli spakujesz same pliki, to użytkownik będzie miał wybór: albo wypakować same pliki, albo wypakować je do konkretnego katalogu, proponowanego przez archiwizator (opcje Extract here oraz Extract to "foldername\").

Wolę mieć nadmiarowy katalog, niż przypadkowo wypakowane pliki bez katalogu - potem szukaj sobie co było w tym archiwum, kiedy wypakujesz je na pulpit.
Poza tym taki spakowany katalog jest idiotoodporny - to samo się broni.
Wolę irytować power usera, niż dostać komentarz od nooba, że archiwum zaśmieciło mu dysk.


🕹️⌨️🖥️🖱️🎮
edytowany 4x, ostatnio: Spine
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:277
0

Dobra, naprawiłem włączanie/wyłączanie ekwipunku. Zaktualizowałem archiwum. Przepraszam za ten podstawowy błąd.


W wolnych chwilach od codzienności programuję hobbystycznie grę RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
edytowany 1x, ostatnio: tBane
MI
  • Rejestracja:11 miesięcy
  • Ostatnio:około 6 godzin
  • Postów:88
1

Nie znam się na programowaniu gamedev, za małolata sporo grałem na konsolach/pc i tak się zastanawiam w jakim celu tworzysz ten projekt? Jeśli hobbystycznie to ok, ale jeśli chcesz go puścić w świat to taki rpg 2d single player z grafiką ala tibia bardziej pasuje pod mobilki niż pc w tych czasach

Boski
mobilki już full, jeszcze na pc indyki na steam, ale też już powoli ścisk
tBane
Tak, tworzę hobbystycznie. Jak już będę dobrze programował to może nad czymś lepszym się zastanowię.
MI
Ok, wytrwałości. Robienie czegoś od zera to zupełnie inny świat niż klepanie tasków w korpo. Jak się wypalisz to przerwa minimum tydzień i jakoś idzie
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:minuta
  • Postów:6624
3
furious programming napisał(a):

ten rak trawi branżę, niszcząc przede wszystkim początkujących koderów gier — nie liczy się funkcjonalność i jakość, a fajerwerki na ekranie, szybka gratyfikacja i aplauz.
...
Wspominam o tym dlatego, że brakuje mu choćby podstawowych danych — plik wykonywalny nie ma żadnej ikonki (nawet testowej), nie ma też uzupełnionych danych na temat nazwy programu, jego wersji czy informacji o twórcy i prawach autorskich (eksplorator systemowy i okno właściwości pliku nie pokazują żadnych niedomyślnych danych o pliku wykonywalnym). Te dane powinieneś wstępnie uzupełnić tuż po utworzeniu projektu w IDE.
...
Zakładam, że nie masz tak podstawowych rzeczy jak choćby obsługa mapowania inputu (i wsparcia gamepadów), wsparcia trybu pełnoekranowego (desktopowego i ekskluzywnego), możliwości ustawienia parametrów pętli głównej (framerate oraz jego ograniczanie), wsparcia etapów (game stages) oraz innych fundamentalnych, niezwykle istotnych rzeczy.
...
Zabierasz się za ten projekt od końca, czyli od rozgrywki, ignorując fundament jakim jest silnik. Im dłużej będziesz zwlekał z dodaniem podstawowych rzeczy, tym więcej czasu później stracisz na ich implementację i dostosowywanie tego co już masz do nowych funkcji (bo cała rozgrywka będzie od nich zależeć). Istnieje też wysokie ryzyko, że np. implementując mapowanie inputu, cały kod rozgrywki będzie wymagał przepisania na nowo, co zeżre jeszcze więcej czasu.

To wygląda jak gatekeeping...

"Szybka gratyfikacja i aplauz" jeśli motywują go do nauki programowania, nie są żadnym rakiem.

Jeśli sobie eksperymentuje i nawet nie wie, czy to co zrobi będzie warte tego, żeby dorabiać tam jakieś menu, opcje, konfiguracje itd., to na razie niech sobie nie zaprząta tym głowy.
Na pewno dla początkującego gamedeva fascynujące będzie rozpoczęcie projektu od implementacji obsługi tłumaczeń...
Ale wtedy zanim zacznie robić właściwą część aplikacji (GAMEPLAY!), to już zapomni co chciał zrobić :]

Nie wymagajmy od początkującego, żeby od razu był ekspertem i budował swój projekt w jakiś zaplanowany sposób...

Jak OP będzie już pisał grę na poważnie, to weźmie Unity, gdzie wielu rzeczy nie trzeba planować z takim wyprzedzeniem, a game stages realizujesz mechanizmem ładowania sceny.


🕹️⌨️🖥️🖱️🎮
edytowany 4x, ostatnio: Spine
T3
Daje łapkę w górę, mimo tej wstawki o unity, fuj
Spine
Dziękuję ;)
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12155
1

Nie wymagam od początkującego, aby był ekspertem, a zwracam uwagę na to, że projekt ten powstaje od końca. I nie chodzi tu tylko o to, że pierwsze co powstaje ro rozgrywka — po prostu brakuje fundamentalnych funkcji, na których ta rozgrywka miałaby się opierać. Takie projekty niemal nigdy nie doczekują końca, a jeśli już, to dociągnięcie go do grywalnej wersji jest katorgą, zmuszającą do ciągłego poprawiania już napisanego kodu. Kod nie jest skalowalny, bo był pisany na pałę, byle iść dalej.

Zabawa zabawą, jednak jeśli już autor zakłada wątek, przedstawia postępy i oczekuje feedbacku, to powinno się zwrócić uwagę na wszystkie aspekty, nie tylko na zrzut ekranu z rozgrywki. Dlatego zwracam uwagę na to, że aby projekt szedł do przodu i praca nad nim była przyjemna, należy choćby wstępnie dobrze go sobie przemyśleć, zadbać o dobry fundament i powoli implementować kolejne ficzery, przykładając się do jakości kodu i jego architektury.

Pisanie kodu bez myślenia nad tym wszystkim nauczy co najwyżej dodawania kolejnych funkcji, zamiast pełnej sztuki wytwarzania oprogramowania. Tak samo jak wkuwanie tutoriali na pamięć — niby robi się więcej, ale fundament, czyli znajomość danego narzędzia i umiejętność ekstrapolowania jego zastosowania, leży i kwiczy.

Chcesz mieć dowód, że idzie to w złym kierunku? Poprośmy o źródła i zróbmy review. 😉

Spine napisał(a):

"Szybka gratyfikacja i aplauz" jeśli motywują go do nauki programowania, nie są żadnym rakiem.

Nie zrozumiałeś. Mowa była o youtuberach, którzy rzekomo robią vlogi pokazując jak ich gra ewoluuje i którzy starają się uczyć innych jak robić gry. Ich celem zdaje się nie być tworzenie gry w celu jej późniejszego opublikowania, a zarabianie na wyświetleniach. Dlatego zamiast pokazywać i omawiać nudne rzeźbienie podstaw, pokazują wyłącznie rozgrywkę i wszystkie kolorowe cukierki, które podobają się widzom. A kiedy pokazują jakieś urywki z klepania kodu albo pokrótce omawiają implementację nowej funkcji, to widać, że kod ledwo kupy się trzyma i że brak mu sensownej architektury.

Są kanały, które podchodzą do tego tematu poważnie (np. GMTK), które faktycznie skupiają się na nauce i propagowaniu dobrych praktyk. Twórcy niektórych z nich sami nagrali materiały na temat tego, że vlogi youtuberowych game-deweloperów piorą świeżakom mózgi i uczą totalnie złych praktyk, właśnie dlatego, że ich celem nie jest produkcja i ostateczna publikacja gry, a prowadzenie kanału i zarabianie na reklamach.

Tutaj macie przykładowy materiał poruszający ten temat:


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
Zobacz pozostałe 8 komentarzy
flowCRANE
@LukeJL: w takim razie nie wiem dlaczego pytasz o to, dlaczego kod musi być dobrze zakomentowany. Wspomniane dobre zakomentowanie nie dotyczy ich ilości, a sensowności ich istnienia. Choć mnie akurat wcale nie przeszkadza kod, w którym nawet każda jego linijka poprzedzona jest komentarzem.
LukeJL
@furious programming mam wrażenie, że się czepiasz i brniesz w inne rozumienie słowa dobrze zakomentowany, co już zostało wyjaśnione. Ja napisałem swoje zdanie Komentarze powinny tłumaczyć to, co nieoczywiste. Czasem nie da się tego uniknąć, ale jeśli jest w kodzie zbyt dużo komentarzy, to być może albo są one niepotrzebne albo kod nie jest do końca tak czytelny., OP odpisał to oczywiste, że oczywistych rzeczy się nie komentuje.
flowCRANE
@LukeJL: nie czepiam się, po prostu nie rozumiem dlaczego zadajesz pytanie, skoro znasz na nie odpowiedź. Wygląda to tak, jakbyś nie był pewny tego, co znaczy słowo dobrze. Koniec końców mamy podobne zdanie na ten temat, a więc przedmiot sporu nie istnieje. ;)
LukeJL
Ponieważ od lat krąży mem, że dobry kod to jest taki, w którym jest dużo komentarzy, więc zobaczywszy dobrze zakomentowany odniosłem wrażenie, że to kolejna replikacja tego mema.
flowCRANE
Sam też zgadzam się z tym „memem”.
T3
  • Rejestracja:ponad 4 lata
  • Ostatnio:6 miesięcy
  • Postów:687
2
furious programming napisał(a):

Nie wymagam od początkującego, aby był ekspertem, a zwracam uwagę na to, że projekt ten powstaje od końca. I nie chodzi tu tylko o to, że pierwsze co powstaje ro rozgrywka — po prostu brakuje fundamentalnych funkcji, na których ta rozgrywka miałaby się opierać. Takie projekty niemal nigdy nie doczekują końca, a jeśli już, to dociągnięcie go do grywalnej wersji jest katorgą, zmuszającą do ciągłego poprawiania już napisanego kodu. Kod nie jest skalowalny, bo był pisany na pałę, byle iść dalej.

Właśnie dlatego te pierwsze projekty się nie udają, bo OP musi się tego sam nauczyć. Jak napisałeś trochę później w tym poście - nie nauczy się tego na oglądaniu tutoriali, tak samo jak na czytaniu postów. Jeśli zacznie grzebać w silniku, to zanim skończy i cokolwiek ogarnie, zdąży kilka razy zapomnieć, co chciał jeszcze do gierki dodać.

Niech robi po swojemu, w końcu dojdzie do prób optymalizacji i sam dojdzie do tego, że robił źle od początku. Inaczej się tego nie dowie.

Boski
  • Rejestracja:prawie 6 lat
  • Ostatnio:15 dni
  • Postów:131
3

Ograłem v0.4 kilka uwag:

  • te hovery na rzeczy na mapie mogłyby też się włączać, jeśli postać jest w zasięgu ich interakcji (podniesienie przedmiotu) + dopisać w jaki sposób (press 'e'...)
  • z sortowaniem dalej trochę problemów jest, jak przedmiot jest lewej-górnej strony drzewa, to jego hover jest wyświetlany pod drzewem
  • nie ma GameOver na koniec punktów hp
  • ekipunek fajna baza pod rozbudowanie, waga przedmiotów, maksymalny udźwig, przedmiot w ręce, założona zbroja itd. (a graficznie, to fajnie, jakbyś oprócz slotów i przedmiotów dał tam jakieś tło/ramka napis 'ekwipunek')
  • najbardziej chyba obecnie brakuje celu - system questów? i drzewka dialogowe
  • statystyki postaci / atrybuty / skille? pewno masz w planach na później

widzę też że mapa jest trzymana w pliku tekstowym, nice, im więcej danych tak powyciągasz z kodu tym lepiej. czasem używa się np. arkuszy kalkulacyjnych google, i później export ze strony do .csv i w grze wczytanie. dosyć wygodna opcja bo w arkuszu możesz sobie to sortować, kolorować dodatkowo, dodawać komentarze itd.

edytowany 1x, ostatnio: Boski
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12155
1
tmk3 napisał(a):

Niech robi po swojemu, w końcu dojdzie do prób optymalizacji i sam dojdzie do tego, że robił źle od początku.

Ciekawe, że w innych kategoriach forum, kiedy ktoś robi coś źle, to odpowiedzi są dokładnie takie, jak moje w tym wątku — robisz coś źle, marnujesz czas, potencjalnie w przyszłości zmarnujesz przez to jeszcze więcej czasu, więc przyswój teorię, sensownie zaprojektuj podstawy i dopiero wtedy zajmuj się nabudowywaniem kolejnych warstw. A tu jakimś dziwnym trafem podwójne standardy się urodziły.

Kiedy @tBane pytał niedawno o algorytm pathfindingu, jakoś nikt nie sugerował mu własnej implementacji i próbowania na własną rękę, a od razu zostały zasugerowane algorytmy A*, Dijkstra i zalewowy. I te sugerowali ci sami, którzy w tym wątku polecają ignorowanie obecnego stanu wiedzy i samodzielne eksperymentowanie. Wybaczcie, ale to lekka hipokryzja.

Inaczej się tego nie dowie.

Dowie się, bo po to rozmawia się z innymi deweloperami, aby móc uczyć się na cudzych błędach, zamiast tracić czas ucząc się wyłącznie na własnych. Równie dobrze można by twoje podejście ekstrapolować na inne dziedziny życia i byłyby równie szkodliwe co obecne w tym wątku. Nie brałeś narkotyków to weź, bo inaczej nie dowiesz się, że niszczą zdrowie i życie. Nie skakałeś nigdy z okna to skocz z drugiego piętra, w końcu inaczej nie dowiesz się jak to jest mieć połamane nogi czy kręgosłup.

Każdy doświadczony deweloper na tym forum (i wszędzie indziej), który odpowiada początkującym, doskonale zna ich problemy. Dlatego zamiast zachęcać ich do błądzenia po omacku, na podstawie własnego doświadczenia starają się pokazać te błędy, przekazać swoją wiedzę i dobre praktyki, a dzięki temu uchronić początkującego od tracenia czasu na samodzielne rozwiązywanie problemów, które są powszechnie znane i z którymi borykały się do tej pory miliony deweloperów.

Dobra architektura projektu i dobrej jakości kod nie są przedmiotami eksperymentów, bez względu na dziedzinę programowania. Każdy trzeźwo myślący i doświadczony koder dobrze to wie, więc zaprzeczając temu w tym wątku, sugerujecie ignorować to co niezwykle istotne, a tym samym robicie OP krzywdę.

Ignorowanie podstaw jest usprawiedliwione tylko w przypadku tworzenia szybkiego prototypu celem sprawdzenia w praktyce czy coś zadziała czy nie, a potem kod do kosza i implementacja na nowo, tym razem porządnie. Ten projekt nie wygląda na byle prototyp, więc zalecane jest promowanie dobrych praktyk zamiast bylejakości. Kod można przepisać i sto razy, ale czasu nie cofniesz ani o sekundę.


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
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:minuta
  • Postów:6624
1
furious programming napisał(a):
tmk3 napisał(a):

Niech robi po swojemu, w końcu dojdzie do prób optymalizacji i sam dojdzie do tego, że robił źle od początku.

Ciekawe, że w innych kategoriach forum, kiedy ktoś robi coś źle, to odpowiedzi są dokładnie takie, jak moje w tym wątku — robisz coś źle, marnujesz czas, potencjalnie w przyszłości zmarnujesz przez to jeszcze więcej czasu, więc przyswój teorię, sensownie zaprojektuj podstawy i dopiero wtedy zajmuj się nabudowywaniem kolejnych warstw. A tu jakimś dziwnym trafem podwójne standardy się urodziły.

Odpowiedzi nie są dokładnie takie jak Twoje...
Odpowiedzi mają mniejszy zakres i dotyczą problemów ludzi zadających pytania, a Ty mu tutaj od razu cały plan na resztę życia rozpisałeś...

furious programming napisał(a):

Kiedy @tBane pytał niedawno o algorytm pathfindingu, jakoś nikt nie sugerował mu własnej implementacji i próbowania na własną rękę, a od razu zostały zasugerowane algorytmy A*, Dijkstra i zalewowy. I te sugerowali ci sami, którzy w tym wątku polecają ignorowanie obecnego stanu wiedzy i samodzielne eksperymentowanie. Wybaczcie, ale to lekka hipokryzja.

Wtedy on o to pytał i dyskusja odbywała się na ten jeden konkretny temat.

furious programming napisał(a):
tmk3 napisał(a):

Inaczej się tego nie dowie.

Dowie się, bo po to rozmawia się z innymi deweloperami, aby móc uczyć się na cudzych błędach, zamiast tracić czas ucząc się wyłącznie na własnych. Równie dobrze można by twoje podejście ekstrapolować na inne dziedziny życia i byłyby równie szkodliwe co obecne w tym wątku. Nie brałeś narkotyków to weź, bo inaczej nie dowiesz się, że niszczą zdrowie i życie. Nie skakałeś nigdy z okna to skocz z drugiego piętra, w końcu inaczej nie dowiesz się jak to jest mieć połamane nogi czy kręgosłup.

Ja Ci mogę mówić, że papierosy są szkodliwe i nie musisz wcale ich palić, dlaczego więc jesteś palaczem?

Jak dojdzie w swoim projekcie do momentu, kiedy czegoś mu będzie brakowało, to wtedy się będzie zastanawiał jak to wykonać.
I tak SFML jest tak łyse, że zmusi go do myślenia i implementacji bardzo podstawowych rzeczy...

Mam wrażenie, że Ty się tak umartwiasz nad swoim silnikiem, że chcesz aby inni też poczuli ten ból...

furious programming napisał(a):

Każdy doświadczony deweloper na tym forum (i wszędzie indziej), który odpowiada początkującym, doskonale zna ich problemy. Dlatego zamiast zachęcać ich do błądzenia po omacku, na podstawie własnego doświadczenia starają się pokazać te błędy, przekazać swoją wiedzę i dobre praktyki, a dzięki temu uchronić początkującego od tracenia czasu na samodzielne rozwiązywanie problemów, które są powszechnie znane i z którymi borykały się do tej pory miliony deweloperów.

Możesz prawić morały ile wlezie, ale OP i tak zrobi, co uważa.
A jeśli go zasypiesz sugestiami, to przestanie czytać w połowie...

furious programming napisał(a):

Dobra architektura projektu i dobrej jakości kod nie są przedmiotami eksperymentów, bez względu na dziedzinę programowania. Każdy trzeźwo myślący i doświadczony koder dobrze to wie, więc zaprzeczając temu w tym wątku, sugerujecie ignorować to co niezwykle istotne, a tym samym robicie OP krzywdę.

To jest niezwykle istotne, ale nie na tym etapie nauki.

furious programming napisał(a):

Ignorowanie podstaw jest usprawiedliwione tylko w przypadku tworzenia szybkiego prototypu celem sprawdzenia w praktyce czy coś zadziała czy nie, a potem kod do kosza i implementacja na nowo, tym razem porządnie. Ten projekt nie wygląda na byle prototyp, więc zalecane jest promowanie dobrych praktyk zamiast bylejakości. Kod można przepisać i sto razy, ale czasu nie cofniesz ani o sekundę.

Znowu gatekeeping...
Ten projekt to jest po prostu większy projekt do kosza.
On nie jest jeszcze na poziomie pozwalającym na pisanie szybkiego prototypu, like a pro...


🕹️⌨️🖥️🖱️🎮
edytowany 3x, ostatnio: Spine
Boski
  • Rejestracja:prawie 6 lat
  • Ostatnio:15 dni
  • Postów:131
1

Jak mamy takie święte wojny toczyć (bo w zasadzie to jest typowo endless temat rób silnik vs rób grę vs rób grę i silnik) to może się przenieśmy o innego wątku, bo śmietnik op robimy. A tutaj niech każdy zostawia feedback wg własnego uznania

T3
  • Rejestracja:ponad 4 lata
  • Ostatnio:6 miesięcy
  • Postów:687
1

@furious programming
Napisałeś jakąś ścianę tekstu, a OP robi sobie zwykły projekt do szuflady, przy którym ma się uczyć. Nie będzie z tego strzelał, nie musi być zgodnie ze sztuką i tak jak @furious programming sobie wymyślił. Daj mu się tym bawić po swojemu i robić błędy, nikogo nie obchodzi moralizatorstwo i przekonywanie, że jego rady są lepsze (już pomijając to, że o gamedevie najwięcej do powiedzenia mają na 4p ci, którzy nie mają z nim nic wspólnego).

OP uczy się i dobrze się bawi przy swojej grze, wielu devów zostaje przy gameplayu i nie interesują ich zagadnienia związane z silnikiem, nie ma w tym nic złego. Niech robi swoim tempem, a nie spełnia ambicje samozwańczych ekspertów z 4p

edytowany 1x, ostatnio: tmk3
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)