Dodatkowe pola dla stworzeń 

Miałbym pewne pytania dotyczące możliwości zapisywania dodatkowych informacji dotyczących obiektu ‘Creature’ (planuję zrobić testowy eksperyment poprzez modyfikację ‘reproduction’ (i bez używania GenePools), z ewolucją ukierunkowaną na szybkość chodzenia stworzeń).

Do bezpośredniego użycia są pola ‘user1’, ‘user2’ i ‘user3’, ale tylko 3 ‘bezpośrednie’ wartości to za mało. Zastanawiałem się o kilku potencjalnych możliwościach zapamiętania dla ‘creature’ dodatkowych wartości (w tym kilka lub kilkanaście typu ‘multiline string’), ale niektóre z nich mogą być niewykonalne, niektóre są niewygodne.

Poniżej opisałem kilka takich potencjalnych pomysłów - czy są one dobre ?:

1. W polu np. ‘user1‘ można ‘upchać’ dowolnie wiele wartości (także typu ‘multiline string’), tworząc
pola ‘wirtualne’, ale ich obsługa byłaby skomplikowana.

2. Może można wykorzystywać już istniejące pola ? Np. ‘velocity’ lub ‘distance‘ – chciałbym tam wpisywać wartości, które mój program (expdef) chce (i tylko wtedy, kiedy on chce) wpisać, ale tam ktoś ciągle wpisuje jakieś wartości, a nie udało mi się znaleźć miejsca w programie (np. w pliku typu ‘expdef’), w którym mógłbym wyłączyć automatyczne zmienianie zawartości tego pola.

3. Najlepiej by było, gdyby do obiektu ‘Creature’ można było dodać sobie dodatkowe pola, tak jak np. do obiektu ‘ExpProperties’ (w ‘expdef’) można dodawać sobie pola, używając ‘property’.

4. Można próbować wykorzystać istniejące pola, które może nie byłyby modyfikowane ‘automatycznie’ przez interpreter świata (może takimi polami w ‘creature’ byłyby pola ‘źródłowe’: ‘model’ i ‘geno’ - jeśli nie byłyby potrzebne).

5. Do pola np. ‘user1‘ można przyłączyć nowy obiekt typu ‘geno’ (z 4 polami ‘multiline string’) lub nawet typu ‘creature’, a do pola ‘user2’ obiekt ‘genotype’ (ze swoimi podobiektami), a w nich do pola user1 i user2 (w tym drugim ‘creature’ czy ‘genotype’) można przyłączyć następny obiekt itd..
Czy te dodatkowe obiekty byłyby do swobodnego użytku użytkownika, czy może interpreter świata sam zacząłby się nimi zajmować ?

6. Dla stworzenia ‘creature’ można utworzyć jednocześnie drugi przyporządkowany mu obiekt ‘creature’ (jeden lub więcej) w utworzonej dodatkowej nieaktywnej ‘population’ lub ‘genotype’ w nieaktywnym ‘genepool’, ale też nie wiadomo, czy nie byłoby jakichś skutków ubocznych (np. automatycznego zmieniania wartości pól w tych polach).

7. Może istnieje jakaś prosta, naturalna metoda na nowe pola, której nie zauważyłem ?

Maciej Komosinski's picture

  1. Można tak zrobić.
  2. Lepiej tak nie.
  3. Tak, powinna być taka możliwość, ale obecnie jej (ciągle jeszcze) nie ma.
  4. Podobnie jak (2).
  5. Można by tak kombinować... ale nie warto.
  6. Można by tak kombinować... ale nie warto.
  7. Tak: w polach user1/2/3 można przechowywać obiekty Vector albo Dictionary, a one mogą z kolei przechowywać dowolnie dużo innych wartości i obiektów. W wersjach Framsticks nowszych od 3.2rc6 obsługiwana jest nawet serializacja i deserializacja takich obiektów co pozwala na ich bezproblemowy zapis i odczyt, natomiast w starszych wersjach wartości takich pól nie przeżyją zapisu i odczytu z pliku – więc jeśli to jest niezbędne, to tylko (1).