-
1. Data: 2013-09-04 07:43:13
Temat: chrząszcz
Od: xuesheng <p...@g...com>
Witam,
Zrobiłem nowy release chrząszcza - to gra labiryntowa w C++, do ściągnięcia z
http://sourceforge.net/projects/chrzaszcz/.
Celem gry jest przejście przez cały labirynt. W każdej chwili gracz ma dwa klucze.
Niekiedy brak odpowiedniego klucza do otwarcia drzwi. Aby zdobyć klucz trzeba
wymieniać się z orkami mieszkającymi w labiryncie. To jakie klucze otrzymamy przy
wymianie zależy od tego co mamy (czasami orki odmawiają wymiany). Wymiana jest zawsze
odwracalna, wystarczy znaleźć tego samego orka i nacisnąć Enter odpowienią ilość
razy.
To nadal wersja beta. Gra jest deterministyczna. Mam z nią mały problem - niekiedy
generuje labirynty, których nie da się przejść. Problem jest w klasie maze_generator.
Wczytywanie gry jeszcze nie działa.
Pozdrawiam,
Paweł Biernacki
-
2. Data: 2013-09-06 11:51:16
Temat: Re: chrząszcz
Od: xuesheng <p...@g...com>
>
> To nadal wersja beta. Gra jest deterministyczna. Mam z nią mały problem - niekiedy
generuje labirynty, których nie da się przejść. Problem jest w klasie maze_generator.
>
Wrzuciłem wersję 0.0.8, algorytm generowania labiryntu jest poprawiony, są też różne
poziomy trudności.
Idea labiryntu jest taka:
Labirynt dzieli się na n komnat (w programie nazywanych "chambers"), wszędzie tam
gdzie to możliwe powstają drzwi łączące komnaty, maksymalnie jest ich n*(n-1)/2, ale
może być mniej, zależnie od topologii. Tworzona jest macierz zero-jedynkowa
zawierająca przejścia między komnatami. Jest ona kwadratowa i symetryczna. W
programie nazywa się "matrix_of_transition_chambers". Ilość jedynek w tej macierzy to
dwa razy ilość drzwi w labiryncie.
Następnie generowane są wszystkie symetryczne macierze, które w miejscu jedynek
macierzy przejścia mają zera lub jedynki, czyli wybieramy kombinacje. Ich ilość
wynika z ilości wszystkich kluczy i symbolu Bernoulliego. Bierzemy tylko te z
macierzy, które zawierają dwa lub mniej kluczy. Mówiąc po prostu generujemy
kombinacje wszystkich par i jedynek kluczy (macierz zerowa też jest odrzucona). To
arbitralna decyzja, chciałem żeby gracz miał w każdej chwili maksymalnie dwa klucze,
ale nigdy zero. Wszystkie te macierze będę dalej nazywał macierzami kluczy.
Następnie generowane są pary (komnata, macierz kluczy). Właściwy labirynt to tak
naprawdę graf nieskierowany, w którym węzłami są te właśnie pary. Krawędzie grafu
odpowiadają albo przejściu do innej komnaty z TYMI SAMYMI kluczami, albo wymianie
kluczy w TEJ SAMEJ komnacie.
Nawet na najniższym poziomie trudności, dla trzech komnat, ilość tych par może być
np. 15. Dla siedmiu komnat wyszło mi 144 (to oczywiście wartość losowa). Przejście do
innej komnaty jest możliwe zawsze, gdy mamy odpowiedni klucz. Natomiast wymiana
kluczy w tej samej komnacie nie zawsze jest możliwa.
W każdej komnacie, w której można wymienić klucze chodzi sobie ork, któremu odpowiada
pewna relacja równoważności na zbiorze macierzy kluczy. Relacja ta dzieli ów zbiór na
klasy równoważności. Wymienić się można tylko na macierze-reprezentantów klasy,
której reprezentanta już mamy. Czyli ork pozwala nam odwrócić każdą transakcję, ale
nie na każdą transakcję się zgodzi. Mimo to labirynt jest tak skonstruowany, że
istnieje rozwiązanie, tj. istnieje ścieżka w grafie z każdej pary (komnata, macierz
kluczy) do każdej innej pary.
Przepraszam, jeśli trochę przynudzam. Tego typu labirynty wydają mi się ciekawe.
Myślałem o grze, w której oprócz kluczy mamy jeszcze inne przedmioty, które
zwiększają ilość węzłów w grafie. Wówczas orki mogłyby oferować różne transakcje,
zależnie od tego czy mamy np. Święty Gral, czy nie.
Pozdrawiam,
Paweł Biernacki
-
3. Data: 2013-09-10 12:17:39
Temat: Re: chrząszcz
Od: g...@g...com
Hej,
gdybys chcial pozwiedzac swoje labirynty w 3d,
to swego czasu zaimplementowałem w C++/SDL/OpenGLu
engine "portalowy". Zrodla sa do sciagniecia tutaj:
http://sourceforge.net/projects/goose/files/goose/pr
e-alpha-0.02/goose.tar.gz/download
prawdopodobnie odpalenie tego wymagaloby nieco roboty,
ale znow nie az tak duzo. (ja na najnowszym ubunciaku
musialem dodac -lGLU do Makefile'a, i trzeba by bylo
jeszcze gdzies w mainie wywolac glutInit -- i trzeba
byc ostroznym, bo jak sie zepsuje odpalone w trybie
pelnoekranowym, to moze zmienic rozdzielczosc i wtedy
jest klopot)
Opis swiata znajdziejsz w pliku game.cc. Idea polega
na tym, ze tworzy sie sektory, do ktorych dodaje sie
sciany (rownania plaszczyzn), a nastepnie "utozsamia sie"
ze soba dwie rozne sciany w dwoch sektorach (w ten sposob
tworzy sie portale). Punkty przeciecia plaszczyzn sa
liczone automatycznie, wiec jedyne zmartwienie projektanta
to zdefiniowanie rownania plaszczyzny.
Od dawna nie rozwijam juz tego engine'u (a z cala
pewnoscia nie w takiej postaci), ale pomyslalem sobie,
ze moze moglbys zaprzac go do swojego projektu (bo
z tego co zagladalem, to obsluge wyswietlania masz
zrobiona dosc topornie -- zrzucasz animacje modeli
z blendera i potem ladujesz obrazki klatka po klatce)
Fakt, ze ja tutaj nie implementowalem zadnych animacji
szkieletowych, i nawet nie ma mozliwosci ladowania modeli.
Tym niemniej sporo roboty juz jest tam wykonane, i mysle,
ze moglbys dosc niewielkim sumptem to wykorzystac.
(W razie czego sluze pomoca)
Pozdrawiam!
MG.
-
4. Data: 2013-09-10 20:01:23
Temat: Re: chrząszcz
Od: xuesheng <p...@g...com>
W dniu wtorek, 10 września 2013 13:17:39 UTC+3 użytkownik g...@g...com
napisał:
> Hej,
>
> gdybys chcial pozwiedzac swoje labirynty w 3d,
>
> to swego czasu zaimplementowałem w C++/SDL/OpenGLu
>
> engine "portalowy".
To doskonały pomysł, chrząszcz 3D. Przyszedł mi oczywiście do głowy i pewnie spróbuję
to zrobić.
>
> jeszcze gdzies w mainie wywolac glutInit -- i trzeba
>
> byc ostroznym, bo jak sie zepsuje odpalone w trybie
>
> pelnoekranowym, to moze zmienic rozdzielczosc i wtedy
>
> jest klopot)
>
Miałem ten kłopot ;)
> z tego co zagladalem, to obsluge wyswietlania masz
>
> zrobiona dosc topornie -- zrzucasz animacje modeli
>
> z blendera i potem ladujesz obrazki klatka po klatce)
>
Właśnie tak robię.
>
>
> Fakt, ze ja tutaj nie implementowalem zadnych animacji
>
> szkieletowych, i nawet nie ma mozliwosci ladowania modeli.
>
> Tym niemniej sporo roboty juz jest tam wykonane, i mysle,
>
> ze moglbys dosc niewielkim sumptem to wykorzystac.
>
> (W razie czego sluze pomoca)
>
>
Bardzo dziękuję. Może rzeczywiście przesiądę się do projektowania tego w OpenGl.
Chrząszcz 0.0.9 potrafi już zapisać i wczytać grę, są też specjalne zdolności zależne
od klasy (np. teleportacja dla wizardów). I są misje, gra jest dzięki nim nieco
trudniejsza.
W OpenGl - trochę już próbowałem, myślałem o wykorzystaniu modeli MakeHuman, nawet
zrobiłem trochę skryptów dla Blendera (w Pytonie)... Ale to daleka droga.
Pozdrawiam,
Paweł Biernacki
-
5. Data: 2013-09-10 20:40:28
Temat: Re: chrząszcz
Od: "Ghost" <g...@e...pl>
Użytkownik "xuesheng" <p...@g...com> napisał w wiadomości
news:ffc46f78-181c-411a-a244-ef6a8a18ec80@googlegrou
ps.com...
W dniu wtorek, 10 września 2013 13:17:39 UTC+3 użytkownik
g...@g...com napisał:
> Hej,
>
>> gdybys chcial pozwiedzac swoje labirynty w 3d,
>> to swego czasu zaimplementowałem w C++/SDL/OpenGLu
>> engine "portalowy".
>To doskonały pomysł, chrząszcz 3D. Przyszedł mi oczywiście do głowy i
>pewnie spróbuję to zrobić.
Nie przestawaj. Powinienes dojechac co najmniej do "chrzaszcz 11D".
-
6. Data: 2013-09-10 20:56:13
Temat: Re: chrząszcz
Od: xuesheng <p...@g...com>
W dniu wtorek, 10 września 2013 21:40:28 UTC+3 użytkownik Ghost napisał:
[...]
>
> >To doskonały pomysł, chrząszcz 3D. Przyszedł mi oczywiście do głowy i
>
> >pewnie spróbuję to zrobić.
>
>
>
> Nie przestawaj. Powinienes dojechac co najmniej do "chrzaszcz 11D".
;))))))
Dobre.
Może w zamyśle nieco sarkastyczne, ale po głębszym namyśle...
-
7. Data: 2013-09-10 21:06:00
Temat: Re: chrząszcz
Od: "Ghost" <g...@e...pl>
Użytkownik "xuesheng" <p...@g...com> napisał w wiadomości
news:64a23199-bbef-464f-837a-6cdbb842c747@googlegrou
ps.com...
W dniu wtorek, 10 września 2013 21:40:28 UTC+3 użytkownik Ghost napisał:
[...]
>
>> >To doskonały pomysł, chrząszcz 3D. Przyszedł mi oczywiście do głowy i
>
>> >pewnie spróbuję to zrobić.
>
>
>
>> Nie przestawaj. Powinienes dojechac co najmniej do "chrzaszcz 11D".
>;))))))
>Dobre.
>Może w zamyśle nieco sarkastyczne, ale po głębszym namyśle...
Wszechswiat jest 11 wymiarowy. W kazdym razie wg niektorych modeli.
-
8. Data: 2013-09-11 09:33:15
Temat: Re: chrząszcz
Od: g...@g...com
W dniu wtorek, 10 września 2013 20:01:23 UTC+2 użytkownik xuesheng napisał:
>
> > gdybys chcial pozwiedzac swoje labirynty w 3d,
> > to swego czasu zaimplementowałem w C++/SDL/OpenGLu
> > engine "portalowy".
>
> To doskonały pomysł, chrząszcz 3D. Przyszedł mi oczywiście
> do głowy i pewnie spróbuję to zrobić.
>
>
>
> > jeszcze gdzies w mainie wywolac glutInit -- i trzeba
> > byc ostroznym, bo jak sie zepsuje odpalone w trybie
> > pelnoekranowym, to moze zmienic rozdzielczosc i wtedy
> > jest klopot)
>
> Miałem ten kłopot ;)
No wlasne, ja tez :)
Ale rozumiem, ze w koncu udalo sie odpalic?
(to jest tak zrobione, ze mozna robic rocket-jumpy
i nawet wypuszczac grappling hooka, a potem go skracac
walkiem od myszy)
> > Fakt, ze ja tutaj nie implementowalem zadnych animacji
> > szkieletowych, i nawet nie ma mozliwosci ladowania modeli.
> > Tym niemniej sporo roboty juz jest tam wykonane, i mysle,
> > ze moglbys dosc niewielkim sumptem to wykorzystac.
> > (W razie czego sluze pomoca)
> >
> >
>
> Bardzo dziękuję. Może rzeczywiście przesiądę się
> do projektowania tego w OpenGl.
Ja zachecam, glownie dlatego, ze mam wrazenie, ze
daloby sie to zrobic dosc latwo. No i odnioslem
wrazenie, ze oba projekty sa napisane w podobnym
stylu
> Chrząszcz 0.0.9 potrafi już zapisać i wczytać grę, są też specjalne zdolności
zależne od klasy (np. teleportacja dla wizardów). I są misje, gra jest dzięki nim
nieco trudniejsza.
Brzmi super.
Z checia zobacze w wolnej chwili (jezeli uda mi sie takowa znalezc).
Troche drazniace bylo dla mnie to, ze nie moglem odpalic gry zaraz
po skompilowaniu, tylko musialem jej zrobic "make install", i to
nawet nie do dowolnego katalogu wskazanego skryptowi ./configure
przez --prefix, ale do domyslnego katalogu (/usr/local), bo w przeciwnym
razie sie wykrzaczal, ze nie moze znalezc obrazkow.
pozdrawiam!
-
9. Data: 2013-09-11 20:18:00
Temat: Re: chrząszcz
Od: xuesheng <p...@g...com>
W dniu środa, 11 września 2013 10:33:15 UTC+3 użytkownik g...@g...com napisał:
[...]
> Ale rozumiem, ze w koncu udalo sie odpalic?
Tak.
> Ja zachecam, glownie dlatego, ze mam wrazenie, ze
>
> daloby sie to zrobic dosc latwo. No i odnioslem
>
> wrazenie, ze oba projekty sa napisane w podobnym
>
> stylu
;))))
[...]
> Troche drazniace bylo dla mnie to, ze nie moglem odpalic gry zaraz
>
> po skompilowaniu, tylko musialem jej zrobic "make install", i to
>
> nawet nie do dowolnego katalogu wskazanego skryptowi ./configure
>
> przez --prefix, ale do domyslnego katalogu (/usr/local), bo w przeciwnym
>
> razie sie wykrzaczal, ze nie moze znalezc obrazkow.
>
A może nie skompilowałeś ponownie po ustawieniu prefiksu? Kompilator dostaje makro
DATADIR i zmiana prefiksu bez ponownej kompilacji nic nie daje, to jest raczej nie
zmienia katalogu z którego obrazki są czytane. Mnie się udało zainstalować do
$HOME/TEST, tylko zrekompilowałem po ustawieniu configure --prefix=$HOME/TEST.
Pozdrawiam,
Paweł Biernacki
-
10. Data: 2013-09-20 13:31:01
Temat: Re: chrząszcz
Od: xuesheng <p...@g...com>
W dniu wtorek, 10 września 2013 13:17:39 UTC+3 użytkownik g...@g...com
napisał:
> Hej,
>
> gdybys chcial pozwiedzac swoje labirynty w 3d,
>
[...]
Zrobiłem wersję 3d, tak na próbę, nazywa się chrząszcz2:
https://docs.google.com/file/d/0B7KLeyeL98gIY3E5Q2cw
YWw4Vjg/edit?usp=sharing
Ale prawdę mówiąc nie jestem przekonany. Wygląda ładniej, bo to OpenGL, tylko w takim
labiryncie łatwo się zgubić. Może trzeba dorzucić jakieś obiekty gwoli orientacji,
albo mapę. W rzucie izometrycznym jest łatwiej, bo od razu widać które drzwi są
otwarte no i gdzie się jest.
Pozdrawiam,
Paweł Biernacki