Generació procedural de mapes D'ASCII a Prefabs
Resum En aquest article descric el disseny i la implementació d'un sistema de generació procedural de mapes desenvolupat com a vertical slice per a un estudi indie. El text cobreix les restriccions inicials i evolucionades, el flux de treball des d'un prototip ASCII fins a la generació de prefabs a Unity, la lògica de portes i habitacions, i les millores proposades. També incloc informació sobre Q2BSTUDIO, empresa especialitzada en desenvolupament de programari a mida, aplicacions a mida, intel·ligència artificial, ciberseguretat i serveis cloud aws i azure.
Restriccions clau que van guiar el disseny Perquè els mapes fossin jugables i coherents vam definir restriccions que van orientar cada decisió. Inicialment vam buscar simplicitat i robustesa. Les restriccions inicials van incloure no generar passadissos amples perquè les habitacions es col·loquen adjacents sense espais intermedis, obligar que cada habitació ocupi una cel·la quadrada n per n i permetre col·locació aleatòria de portes sobre les vores. Amb el temps les regles van evolucionar per fixar la posició de portes i oferir control al dissenyador sobre la connectivitat i la topologia del nivell.
Reptes resolts Els majors reptes van ser encaixar habitacions de diferents mides en una retícula sense solapaments, evitar ubicacions de portes que resultessin inaccessibles o il·lògiques i equilibrar aleatorietat amb la intenció de disseny. Aquestes restriccions van permetre suportar formes complexes de sala i garantir traçats deterministes quan era necessari.
Flux de treball pas a pas Vaig començar amb un sistema ASCII per visualitzar la retícula de manera ràpida i efectiva. Aquest prototip textual va facilitar la depuració i l'experimentació. Amb una font monoespaiada el resultat era clar i reproduïble. A partir d'aquí vaig implementar col·locació aleatòria d'habitacions cuidant que no se superposessin, cosa que va establir la base per al sistema.
Introducció de portes Al principi les portes es col·locaven a l'atzar sobre els murs, però això va crear problemes de connectivitat i cantonades conflictives. Es van afegir restriccions per impedir portes a les cantonades i regles per alinear portes oposades quan fos necessari. Més endavant es va passar de portes aleatòries a posicions fixes definides per plantilla, millorant la coherència entre sales i facilitant el treball del dissenyador.
Transició a prefabs La traducció de coordenades ASCII a posicions al món 3D de Unity va ser un salt important. Calia ajustar escales i pivots perquè els murs, terres i portes encaixessin exactament. Durant aquesta fase vaig crear plantilles d'habitacions a Unity que van permetre als dissenyadors reutilitzar formats i mantenir consistència visual i jugable.
Refactorització i contenidors de propietats Vaig refactoritzar la lògica de portes i vaig afegir un contenidor de propietats per a cada habitació que inclou mida, tipus i posicions de portes. Això va permetre canviar dinàmicament de portes aleatòries a portes fixes i afegir metadades com sala d'inici, sala de sortida o sales temàtiques de puzzle.
Eines per a dissenyadors Per millorar la usabilitat vaig afegir gizmos i indicadors visuals que representen a l'editor les portes i els espais transitables tal com apareixen al mapa ASCII. Així les portes a la vista ASCII es corresponien amb obertures als prefabs, facilitant ajustos ràpids per part de disseny.
Elements temàtics i de joc Vaig incorporar tipus de sales especialitzades: entrades, sortides, puzzles i habitacions de recompensa. Es va afegir lògica per definir clarament la sala d'inici i la sala de sortida i per classificar plantilles que serveixin a objectius concrets del nivell. Això ajuda a generar mapes amb un flux jugable coherent.
Millores previstes Entre les millores futures hi ha optimitzar la col·locació d'habitacions, que actualment escala en ordre n al quadrat, oferir gizmos més precisos, ampliar la biblioteca d'habitacions, permetre rotació de sales i integrar navegació AI mitjançant nav mesh. També és desitjable afegir més eines per connectar la generació procedural amb sistemes d'intel·ligència artificial i agents IA que enriqueixin l'experiència.
Sistema ASCII explicat La representació ASCII funciona com una retícula on cada caràcter simbolitza un element del mapa. Utilitzem, per exemple, un símbol de cantonada, un símbol de mur i un símbol d'espai transitable. La visualització utilitza una font monoespaiada per mantenir l'alineació. L'origen de coordenades se situa a la cantonada inferior esquerra, cosa que simplifica la generació i la conversió a coordenades matemàtiques a Unity.
Mides i lògica de murs Cada habitació es defineix com un bloc quadrat n per n on l'espai interior transitable és n menys dos per n menys dos i l'àrea total ocupada a la retícula inclou els murs. A ASCII el gruix de mur és una unitat, mentre que al món 3D el mur s'escala a 0.5 unitats i el pivot de la cantonada inferior esquerra es desplaça per a un alineament exacte.
Evitar passadissos amples En col·locar portes sobre les parets a la representació ASCII s'evita que les connexions generin passadissos de dues cel·les d'amplada no desitjats i es garanteix un passadís d'un tile quan correspon.
Validació de col·locació L'algoritme de col·locació comprova primer que la retícula té espai suficient i després que les cel·les transitables no estiguin ocupades. Si la col·locació falla, es registra el motiu i s'omet la sala. Això evita solapaments i manté la integritat del nivell.
Lògica de portes i connectivitat En el mode aleatori, les portes es col·loquen sobre murs evitant cantonades. En el mode de portes fixes, cada plantilla inclou una llista de posicions vàlides. Per col·locar una nova habitació, es pren una porta local, s'escull una porta corresponent de la sala candidata, es calcula la posició pivot restant coordenades i es valida que la sala no col·lisioni amb cel·les ja ocupades. Si la validació és correcta, la sala s'afegeix i s'actualitza la retícula.
Complexitat i optimització Actualment la comprovació de parells de portes escala com n al quadrat respecte al nombre de portes, per la qual cosa proposem limitar comprovacions a portes en veïnatge immediat, indexar portes per regió o categoritzar portes amb orientació NSWE per reduir combinatòria. Aquestes optimitzacions milloraran el rendiment en nivells amb moltes sales.
Exemple de flux Un flux típic col·loca la primera sala a l'origen; després, per a cada porta oberta, es proven connexions amb altres plantilles calculant pivots i realitzant la validació. Si una sala no hi cap, es registra i es continua. Amb portes fixes s'obtenen traçats deterministes i previsibles, cosa que facilita el control de disseny i la creació de formes no rectangulars com sales en L.
Beneficis de portes fixes Les posicions fixes ofereixen layouts deterministes, suport per a sales amb formes complexes i control directe per a dissenyadors que volen ajustar la connectivitat. Això és especialment útil quan es vol integrar contingut narratiu o reptes específics en ubicacions concretes.
Consideracions pràctiques per a la integració Per portar el sistema a producció convé afegir suport per a navegació d'IA, generar nav mesh després del muntatge del nivell, integrar serveis d'intel·ligència de negoci per analitzar mètriques de generació i obrir API per a agents IA que puguin modificar topologies en temps real. Q2BSTUDIO pot ajudar a integrar aquestes capacitats oferint solucions de programari a mida que inclouen serveis cloud aws i azure i consultoria en intel·ligència artificial i ciberseguretat.
Sobre Q2BSTUDIO Q2BSTUDIO és una empresa de desenvolupament de programari a mida amb experiència en aplicacions a mida, programari a mida i solucions integrades. Som especialistes en intel·ligència artificial ia per a empreses, agents IA i power bi per a analítica avançada. Oferim també serveis de ciberseguretat, serveis cloud aws i azure i serveis d'intel·ligència de negoci. Podem acompanyar projectes de generació procedural des de l'arquitectura fins a la integració en entorns productius garantint bones pràctiques de seguretat i escalabilitat.
Paraules clau per a posicionament Aplicacions a mida, programari a mida, intel·ligència artificial, ciberseguretat, serveis cloud aws i azure, serveis d'intel·ligència de negoci, ia per a empreses, agents IA, power bi.
Conclusió La generació procedural de mapes que va del prototip ASCII a prefabs a Unity permet iterar ràpid, validar regles de col·locació i oferir als dissenyadors control sobre la connectivitat mitjançant portes fixes. Amb una implementació robusta i millores en rendiment i eines de disseny, aquest enfocament resulta ideal per crear nivells variats i jugables. Si busques suport per portar aquesta solució a producció, Q2BSTUDIO pot proporcionar desenvolupament a mida, integració d'IA i seguretat i desplegament en serveis cloud aws i azure.




