Sistemele Lindenmayer (L-Systems) sunt un model matematic introdus de biologul Aristid Lindenmayer în 1968 pentru a modela procesele de creștere ale plantelor. Acestea sunt deosebit de eficiente pentru simularea structurilor și fractalilor asemănătoare plantelor.
Componentele ale sistemelor L:
Exemple de structuri care imită plantele se pot vedea în imaginea de mai jos:
În exemplul de mai sus, se folosește interpretarea “turtle” a stringurilor. Astfel, se întâlnesc următoarele simboluri:
O variantă în care se poate implementa ușor un L-System este folosind biblioteca turtle din Python. Astfel, pentru a inițializa biblioteca, se folosește următoarea secvență de cod:
# Initialize turtle t = turtle.Turtle() wn = turtle.Screen() t.speed(0) t.left(90) t.penup() t.goto(0, -wn.window_height() // 2 + 20) t.pendown() # TODO Your implementation goes here # Wait for user to close window wn.mainloop()
Funcții utile în implementarea unui sistem L, folosind turtle:
t.forward(distance) # Move forward t.goto(position) # Move to position, without drawing anything t.left(angle) # Turn left t.right(angle) # Turn right t.setheading(heading) # Set the rotation angle t.penup() # Stop drawing t.pendown() # Start drawing
Pentru a genera un dungeon 2D de bază folosind cellular automata, se urmează următorii pași:
Conway’s Game of Life este un cellular automata care simulează evoluția celulelor pe un grid bazat pe reguli simple. Deși este folosit în principal pentru studiul modelelor complexe care apar din reguli simple, aplicarea sa directă în generarea unui dungeon este limitată. Cu toate acestea, alte tehnici cellular automata au fost utilizate în mod eficient pentru a crea modele de dungeons 2D.
În Conway’s Game of Life fiecare celulă din grid este inițializată cu una din 2 stări posibile: vie sau moartă. Fiecare celulă interacționează cu cei opt vecini ai săi. La fiecare iterație, au loc următoarele tranziții:
Starea inițială constituie seed-ul sistemului. Prima generație este creată prin aplicarea regulilor de mai sus simultan la nivelul fiecărei celule din seed, vie sau moartă. Fiecare generație este determinată în funcție de generația precedentă. Regulile continuă să fie aplicate în mod repetat pentru a crea generații viitoare.
Pentru a implementa un dungeon folosind Conway’s Game of Life, se poate considera o celulă vie echivalentul unui zid, iar o celulă moartă drept podea.