Witajcie, właśnie wkleiłem na fb link o generowanie światów z użyciem szumów Perlina, które jednak nie za bardzo nadają się do generowania obszarów zamkniętych (komnat).
Tak sobie myślę: atarynka nie jest za szybka, komnaty powtarzalne (zwłaszcza te tworzone w układzie blokowym) - gdyby ktoś się pokusił o depaker danych działający spod TBXL, to może okazało by się to przydatne do zwiększenia "pojemności"?
Tzn. widzę to tak: w jednym bloku pamięci ładujemy depaker, w drugim trzymamy spakowane dane, w momencie jak potrzebujemy podmienić dane o lokalizacji, odpowiedni fragment danych rozpakowujemy w "miejsce tymczasowe", a potem już proceduralnie składamy z nich dane pomieszczenie.
Ułatwiło by to życie zwłaszcza podczas korzystania z pamięci rozszerzonej - może dało by się trzymać depaker pod romem, a dane w przełączanym bloku pamięci rozszerzonej ?
Perlin nose jest OK do generowania heightmaps, ale średnio się nadaje do generowania zamkniętych obszarów. Załączam przykład generatora budynków z jednego mojego projektu. Każde pomieszczenie ma inny numer, w budynku do każdego pomieszczenia jest dojście z innego, pomieszczenia są rozdzielone drzwiami, większe pomieszczenia o nieregularnych kształtach są podzielone na obszary o różnym numerze.
Wow, narzędzie mocne. Czy ma powtarzalność (czy da się powtórzyć mapę za pomocą tej samej "liczby") ? Co w przypadku komnat jak w Montezumie ? Gdzie muszą być platformy, drabiny (schody) i klucze ?
Idealnym przykładem algorytmu dla mnie jest RiverRaid - oczywiście, nie jest to komnatówka, ani nawet platformówka, ale ogólnie rzecz biorąc, wątek jest o czym innym, a mały offtop na rozgrzewkę:)
IMHO, taki depaker musiał by działać w podany sposób: 1. Włączamy PEEK/POKE przełączanie banków pamięci. 2. TBXL ładuje bin pod wskazany adres (pod rom ?) 3. Dane ładują się zaraz za bin-en (ograniczenie bloku: 16kB-bin ?) 4. Przełączamy nowy (pusty) blok pamięci, gdzie będą rozpakowywane 5. Rozpakowujemy wskazany fragment komendą USR(...) 6. Przełączamy na kolejny blok pamięci przez PEEK/POKE 7. Rozpakowujemy kolejną porcję danych USR(...)
można do tbxl podłączyć zwykłego depakera w rodzaju exomizera, musiałby tylko sobie siedzieć w jakimś konkretnym miejscu pamięci. pytanie tylko, czy chcesz pakować bo się nie mieści, czy generować, bo tak łatwiej natrzaskać leveli?
@Pirx: w obu przypadkach (rozpakowywanie - komnaty, generowanie - plansze) chciałbym użyć obszaru $4000-$7FFF, a depaker/deflator/exomizer umieścić w obszarze pod rom. Oczywiście nie wiem, czy się tak da, ale jeżeli się da, to można by to wykorzystać :D //EDIT: że też nie da się w atarynce przełączać w blokach po 4K :(
Jak chodzi o generator plansz do platformówki to też coś mam z innego rozgrzebanego projektu :) Tu jest gwarantowane, że jest zawsze dojście od Start (S) do Exit (E), ale mogą być jeszcze jakieś sytuacje, w których gracz może utknąć (np. studnie bez wyjścia). Starałem się je jednak minimalizować.
Nie mam na tym kompie niestety źródeł (dopiero w przyszłym tygodniu mogę załączyć).
in the german Atari Magazin there once was a packer and depacker for TB XL (programmed in TB XL), I attach it here, maybe it is useful somehow.
There once was also a german demo-crew named TAT (The Atari Team) that did several demos, a Uridium clone named "Oxygene" and last not least a packer for TB XL written in TB XL (depacker was/is a COM-file). I guess they also used their packer/depacker with their game and some of their demos, attached the programs here.
z takim generatorem zaden dekompresor nie wygra ale jesli miala by to byc faktycznie dekompresja to moge zaproponowac tez LZ4 - bardzo krotki dekompresor, do leveli nadaje sie idealnie