pseudo 3d ASCII

16

Szkic gry/symulacji.

Pomysł jest taki żeby na podstawie prostej mapy znaków w trybie testowym ( wymyślonej lub generowanej losowo ) wyświetlał się widok pseudo 3d.
To samo ma dotyczyć wszystkich obiektów które na takiej mapie będą żyć.

Krótki film:

Repo:

https://github.com/goostaw/pseudo3d_ascii/tree/master

Jeśli to ma znaczenie:

  1. Celem jest zabawa. Nie mam aspiracji bycia (zawodowym)programistą.
  2. Lubię stare komputery, a moje zabawy uskuteczniam na 486 pod DOS-em. Wymyśliłem sobie że programy mają działać na najstarszym PC jaki znalazłem w szafie: IBM Portable 5155 ( PC XT ).
  3. Archaizmy są trochę zamierzone, a trochę wynikają z 2, a trochę ze zwykłej niewiedzy, braku doświadczenia i lenistwa.
  4. A ponieważ 2. to głowne narzędzia to Open Watcom i vi. Dodatkowo na potrzeby przesłania tego na githuba użyłem g++ pod starym Debianem. Obie wersje bin w repo.

Pomimo tego proszę o poświęcenie czasu i opinie gdzie jest największa dupa, gdzie jest mniejsza dupa, co poprawić w pierwszej kolejności , co przeczytać itd. Jedyna moja wiedza to kilka książek więc każda rada będzie cenna.
Pewnie nie wszystko zrozumiem ale na pewno się postaram i bedę wdzięczny.

4

Nie mój język, więc nie będę mędrkował, ale od wizualnej strony super – świeży powiew ”rogalików”. ;)

Fajnie by jednak było, gdyby mapa w 3D była renderowana nie skokowo, a płynnie, na zasadzie starego dobrego ray castingu. Gdyby więc poruszanie się po labiryncie było płynne, dawałoby więcej frajdy. Oczywiście wprowadzenie płynnego ruchu po labiryncie nie sprawi automatycznie, że dwuwymiarowy podgląd mapki (rzut z góry) nie będzie możliwy do wyświetlenia. W dalszym ciągu będzie mógł być renderowany, tyle że w formie przybliżonej, jeśli chodzi o pozycję gracza i innych ruchomych obiektów. Do tego dodać kolorowanie znaków zgodnie z oświetleniem i masz świetny silnik do gry.

Mimo wszystko bardzo fajny projekt i dobrze by było, gdybyś przekuł go w poważną grę.

0

Dzięki.

Pewnie tak. Płynne przejścia to byłyby coś!
Być może dałoby się to zrobić w trybie textowym bez tego ray castingu. Pomyślę.

U mnie jest prosto. Dla każdego obiektu w zasięgu w zależności od „punktu widzenia” jest odpalany odpowiedni sprite. Tyle.
Mi to pasuje, bo lubię stare dosowe rpgi w stylu „Eye of the Beholder” czy „Might & Magic”.

1

Tego się właśnie obawiałem. ;)

Jeśli chciałbyś zaimplementować płynne chodzenie po labiryncie, to bez ray castingu lub pełnej matematyki dla 3D się nie obejdzie. Tego nie da się załatwić statycznymi kafelkami czy sprajtami – za dużo by tego było.

0

Tego się właśnie obawiam. :)
Za trudne póki co.

2

Moment, o ile pełne 3D jest dość skomplikowane do wykonania (w zależności od wymaganej jakości/szczegółowości renderowanego obrazu), tak raycasting jest znacznie, znacznie prostszy. Tym bardziej, jeśli labirynt jest płaski, a silnik gry nie obsługuje schodów/wind.

Polecam zapoznać się z artykułem Lode's Computer Graphics Tutorial – znajdziesz w nim szczegółowy opis działania, a także kod źródłowy w C++ generujący nieoteksturowany i oteksturowany labirynt, z możliwością dowolnego chodzenia po nim. Różnica polega na tym, że zamiast renderować rastrowy obraz klatki, Ty układasz go ze znaków o odpowiednich kształtach i kolorach (będzie ich znacznie mniej niż pikseli).

Nie będę Cię na siłę przekonywał do raycastingu – po prostu taki mi pomysł wpadł do głowy. ;)

0

Super . Dzięki. :)

Ps. Gdyby ktoś biegły w piśmie znalazłby chwilę byłaby radość.

3

Wow trafiasz do teleexpressowej galerii Ludzi Pozytywnie Zakręconych :D naprawdę fajny projekt i fajna robota!

1

Gratulacje! Jestem pod wrażeniem pomysłu. Zwrócę uwagę, że OpenGL pozwala na przełączenie w tryb szkieletowy (piszę o starym OGL, chyba 2 ileś). Nie wiem, jakie możliwości ma ten komputer i czy są implementacje OGL na DOS-a, ale mógłbyś renderować labirynt w OGL-u, pobierać render z GPU do pamięci, dopasowywać render do wzorca (np. jakimś algorytmem podobnym do algorytmu wykrywania krawędzi; czyli jak mamy linię pod takim kątem, to wyświetlamy taki znak, itd.), a następnie wyświetlać. Takie marzenie.

1

Szacun :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1