dimecres, 14 de gener del 2026

Treball en branques i conflictes

 Treballar en branques diferents sense actualitzar sovint els canvis és un perill. Perquè es poden crear conflictes massius a l’hora de fer el merge, com ens ha passat en aquesta última fase: en fer merge de la branch il·luminació a la de prototip, on s’havien fet canvis notables a la UI, enemics, etc.

Els fitxers de Unity són llistes de text amb milers de números (IDs). Quan hem intentat ajuntar les branques, els números no coincidien i l'escena s'ha corromput.

Els conflictes eren tan massius que la solució manual que ofereix GitHub no servia.

Arribats aquest punt, la solució que hem trobat per no repetir tota la feina ha estat la següent:

  1. Hem posat totes les llums i assets creats per la il·luminació dins d'un objecte empty al centre (0,0,0) i n'hem fet un Prefab. Això ens permet "emportar-nos" la feina a una altra escena.

  2. Merge destructiu: des de GitHub Desktop → Branch → Merge into current branch. Es realitza un merge triant l'opció de descartar els canvis locals de l'escena conflictiva en favor de la branca principal (Resolve using Theirs). Això respecta l'estructura del HUD, la UI i els scripts nous que s'han fet a prototip.

  3. Hem llançat el nostre Prefab a l'escena nova. Com que el punt de referència era el mateix, tot ha quedat on estava abans.

  4. L'únic que hem hagut de repetir és el càlcul de les llums (lightmaps) i marcar alguna geometria com a static.

Lliçons

  • Merges diaris: No s'ha de deixar passar més d'un dia sense ajuntar la feina de tots. Si els canvis són petits, Git els entén; si són gegants, exploten.

  • Tot en Prefabs: Si treballes dins de Prefabs en lloc de fer-ho directament a l'escena, potser t'estalvies alguns d’aquests conflictes.


dimarts, 13 de gener del 2026

Scriptum: Memòria del desenvolupament del videojoc

Visió general del joc:

Scriptum és un videojoc de plataformes i aventura en tres dimensions, desenvolupat en català i adreçat a un públic infantil i juvenil. El títol està pensat per a ordinador, amb versions per a Windows, Linux i navegadors web. 

La història del videojoc se centra en el personatge d’en Lèxic, que, després de viatjar durant anys, torna al seu poble, però el troba totalment canviat. Uns éssers malvats han robat tots els llibres de la biblioteca i la gent ha oblidat tot el que sabia, tots els coneixements adquirits. Per això, en Lèxic comença una aventura per recuperar els llibres, restituir els coneixements i retornar la cultura a la seva comunitat. Amb aquesta missió, en Lèxic comença l’aventura. 

Scriptum ha estat creat amb la finalitat de promoure la preservació de la cultura, conscienciant els més joves sobre la importància de la lectura, l’adquisició de coneixements i la vivència d’una experiència educativa. 


Preproducció: conceptualització i planificació

En aquesta fase es desenvolupa el disseny inicial del joc, les mecàniques bàsiques, l’estil visual i el concepte artístic. També es decideixen les eines i el programari, així com es prepara un pressupost amb un estudi pel projecte.

GameDesign

La planificació i l’organització és clau en la preproducció, desenvolupant una metodologia de treball amb eines com el diagrama de Gantt i la metodologia Kanban.

Kanban

Diagrama Gantt


Producció: desenvolupament i creació del joc

Durant aquesta fase l’equip s’ha organitzat per dur a terme les tasques de producció, pel desenvolupament del videojoc.

S’ha iniciat la creació de l’animàtica, amb el storyboard i el guió tècnic.


Les tasques de modelatge, creació de mapes UV i texturització s’han fet en aquesta fase, del personatge principal (en Lèxic), els enemics i el Final Boss. Per modelar i crear els mapes UV s’han utilitzat programaris de 3d, com Maya i Blender. Per les textures, a part d’aquests programes, s’ha fet servir Substance Painter de Adobe, i Adobe Photoshop per crear textures pròpies.
Modelatge del tauró i el vaixell a Blender
Modelatge del tauró i el vaixell a Blender

Modelatge del far a Maya
Modelatge del far a Maya

Texturització d'en Lèxic a Substance Painter
Texturització d'en Lèxic a Substance Painter

Texturització del Final Boss a Substance Painter
Texturització del Final Boss a Substance Painter

Texturització d'un prop a Adobe Substance


Després s'integren les textures amb el material a Blender o directament a Unity.

Tauró i vaixell amb la textura aplicada al material
Tauró i vaixell amb la textura aplicada al material

El far amb la textura aplicada al material
El far amb la textura aplicada al material


Després s'ha preparat els rigs dels personatges  i la creació de les animacions necessàries, 
Skinning del Final Boss

Es produeix la música ambiental i els temes principals, així com la creació de sons.

Es dissenya la interfície gràfica per implementar els botons, els menús, la barra de vida i altres elements visuals. 

També es dissenyen les diferents escenes, el menú principal, la pantalla de victòria, la de fi de partida.

Es construeix el greyboxing dels nivells.

Greyboxing del nivell 1
Greyboxing del nivell 1

En aquesta fase de  desenvolupament es crea la lògica del videojoc, implementant els diferents sistemes perquè el joc funcioni. És l'hora de la programació: es programen les mecàniques principals, els sistemes d'interaccions, la navegació entre escenes i es fan útils els elements de la interfície. 

També s'incorporen els dissenys definitius dels personatges, s'organitzen els assets, el disseny general dels espais de cada nivell. Es substitueixen els elements visuals finals pel greyboxing. El disseny dels nivells ja està acabat.

Integració dels assets al nivell 1
Integració dels assets al nivell 1

Integració dels assets al nivell 2
Integració dels assets al nivell 2

Integració dels assets al nivell del Final Boss
Integració dels assets al nivell del Final Boss



Les animacions s’han fet amb blender, les hem fet dintre de Action Editor i s'han organitzat amb NLA per tenir els diferents tracks de cada animació dintre del mateix FBX del personatge..

AutoIK


Utilitzem Unreal engine, per crear la cinemàtica, Ja que te eines com landscape, foliage i sequencer. que son molt útils per crear l’entorn i fer les animacions.


Landscape Sculpt i Paint 


foliage

Sequencer

Les animacions dels personatges de la cinemàtica son de mixamo, i es va tenir que fer un retargeting IK d’aquestes, per adaptar-les als nostres personatges.

La banda sonora i els sons del joc s'incorporen i es programen correctament.

La cinemàtica ja queda finalitzada, a banda dels retocs finals de llum i altres, es renderitzen els plans a HD_720.


Postproducció: efectes i acabats, proves i millores

En aquesta etapa final  s'ha definit les fites per la finalització del joc, garantint els requisits del projecte.

Un cop comprovats els bugs i les millores, es resolen les errades, s'incorporen les millores sol·licitades i determinades pel mateix grup de treball. Es crea un document de control d'errors i monitoratge.

Monitoratge dels bugs
Monitoratge dels bugs


S'acaba d'enllestir el treball visual, amb els efectes de postprocessament i la il·luminació, tant del joc com de la cinemàtica.

Es publica el projecte, amb versions Windows, Linux, i una versió Web.

Es crea el tràiler amb la cinemàtica i un gameplay del joc.

dimarts, 6 de gener del 2026

Com es crea un sistema de guardat manual?

Per fer un sistema de guardat en un videojoc s'han de tenir clar aquests aspectes: 

  • Quina informació que es vol guardar (per veure amb quins scripts s'haurà de comunicar el sistema). 
  • A on s'emmagatzema de manera temporal aquesta informació mentre el joc està en funcionament.
  • A on s'emmagatzema aquesta informació de manera permanent (Save). 
  • En quin moment i en quin ordre es carrega aquesta informació permanent a la partida (Load).

Tot això influeix molt a l'hora de dissenyar un sistema de guardat, ja que com aquest s'ha de comunicar constantment amb altres scripts (com els d'estats del jugador, els d'estats dels pickups, la interfície d'usuari…) s'ha de vigilar molt l'ordre en què les funcions de tots aquests scripts afecten al joc.

dimarts, 9 de desembre del 2025

MODELATGE DELS DOS ENEMICS

 El modelatge dels dos enemics, s'ha gestat a Maya, amb les eines de modelatge que el programa facilita.

Els personatges són una bola que porta un barret d'un vaixell de paper al cap, amb el text d'un poema de Miquel Martí i Pol, fent homenatge a la poesia catalana, un personatge senzill.

El personatge de l'ocell, va començar essent molt quadrat per acabar en formes més arrodonides i naturals, amb un casc que li tapa mitja cara, unes ales i una cua que formen part de l'armadura, texturitzades amb un text. Les textures estan fetes amb Substance Painter d'Adobe, exportades per després introduir-les amb Maya.



Enemic A 
                                                     Enemic A





Enemic B
                                                    Enemic B


   

RIG DELS PERSONATGES



L'esquelet dels personatges de Scriptum ha estat una odissea, fets a Maya, un procés lent que s'inicia amb la creació de l'esquelet, instaurant os rere os, seguint un ordre, des de l'os arrel a l'ultim, emparentant i creant la jerarquia.
La part més entretinguda i amb més temps dedicat, la de la col·locació controladors. El procediment ha tractat d'anar creant els controladors amb corbes de formes de cercle, diferenciats per colors, i anar emparentant amb l'os corresponent, per agafar la posició exacta, desemparentant, crear grups, deixant els valors dels atributs de la corba que fa de controlador, en posició i rotació,  a 0, escala a 1.  Així es representa la posició neutra del personatge, sense variacions, això permet que a l'hora d'animar sigui tot més net.
Un cop creats tots els controladors, ordenats en jerarquia, s'han creat les constraints pertanyents, relacionades amb cada os, per després moure els controladors i que consecutivament es moguin els ossos del personatge.




RIG LÈXIC
                                                  RIG LÈXIC



RIG ENEMIC B
RIG ENEMIC B


RIG ENEMIC A
RIG ENEMIC A


RIG FINAL BOSS
RIG FINAL BOSS




diumenge, 7 de desembre del 2025

Pipeline del modelatge d'una peça

En aquesta entrada explicarem quina és la metodologia per modelar una peça de l'entorn del Nivell 2. Com que aquesta peça és central en el disseny del nivell, farem el pipeline complet, tot i que de manera accelerada, ja que al ser d'estil low-poly i materials que simulin paper no cal que sigui realista. 

Primer aïllem el blockout de la peça a Blender i fem un disseny ràpid del concept art. En aquest nivell la temàtica és marina, així que farem que el túnel sigui un tauró (amb el sostre emissor de llum per il·luminar-lo) i la base un vaixell envoltat de tentacles. 


Blockout

Concept Art

Per fer el tauró hem fet un nou blockout més semblant a la seva forma i utilitzat l'eina d'esculpir, però sense modificar la geometria per estalviar temps i no fer retropologia. 

Escultura ràpida

Geometria amb quads

Per fer els tentacles s'ha fet servir un cilindre subdividit i el modifier Curve per donar-li la forma desitjada, per després fer-li un parell de ventoses i preparar el mapa UV abans de duplicar-lo i fer algunes variacions.

Geometria del tentacles

Per fer el procés més amè, de tant en tant anem completant peces senceres en comptes de modelar-ho tot de cop. Per exemple en aquest punt els tentacles estan llestos per ser texturitzats a Adobe Substance Painter. L'estètica que es busca és "fet a mà", com si pogués ser una peça feta amb cartó pedra i pintada a mà, així que es busca que sigui irregular i que s'entrevegi el cartó de sota. Un cap acabat de pintar, s'exporten les textures i es tornen a importar a Blender per comprovar que es vegin bé.

Texturitzat dels tentacles

A continuació fem una versió molt més low-poly de la peça per fer el mesh collider que s'utilitzarà a Unity. Si donés problemes sempre es podria modificar o fer servir la versió original per fer el collider, tot i que faria servir massa polígons. 

Preparació del mesh collider

En aquest cas, com és un element únic de l'escenari i no s'ha de col·locar en més llocs, es poden moure els tentacles al seu lloc original (fent servir el blockout de referència) i emparentar tant el mesh com el collider amb un empty que estigui a les coordinades 0,0,0. D'aquesta manera un cop importat a Unity només cal deixar anar l'FBX a aquestes coordinades perquè els tentacles siguin al seu lloc. 

Preparació de l'exportació

Per últim, ja a dins de Unity s'han d'extreure les textures i el material de l'FBX per fer servir el shader més adient en cada cas (Unity fa servir un material bàsic automàticament) i afegir el component Mesh Collider a la geometria dels tentacles, substituint aquesta per la versió collider feta a Blender. 

Importació a Unity

Fent servir aquest sistema de treball es poden terminar de fer el tauró i el vaixell, per tenir el conjunt complet a Unity, llest per ser testejat!



dissabte, 6 de desembre del 2025

 



FBX De Blender a Unity sense perdre el cap

 Exportar animacions entre diferents softwares sempre pot donar problemes, en aquest cas explicarem la millor configuració que em trobat per fer-ho des de blender, en el nostre pipeline per fer el videojoc.

Al fer una animació amb blender i exportar-la a UNITY ens podem trobar amb el problema etern: el personatge es veu bé a Blender, però arriba a Unity mirant a terra, gir de 90 graus 

El problema: Blender considera que "Amunt" és l'eix Z, mentre que Unity fa servir l'eix Y.


La finestra d'exportació de FBX de Blender té mil opcions i marcar la incorrecta pot trencar-ho tot.

La solució: Hem d'assegurar-nos que a Blender les transformacions estan aplicades tant a la mesh com al esquelet (Ctrl+A) abans d'exportar. A l'exportador FBX, hem configurat l'opció Apply Scalings a "FBX All" perquè faci la conversió d'eixos correctament sense que haguem de rotar el personatge manualment dins del motor de joc

Ara passem a descriure els "Settings" que ens han donat millor resultat al exportar un FBX d'un personatge que conté 4 animacions separades amb NLA. Que Unity reconeixerà automàticament cada animació per separat en importar-lo.

Apply Scalings: FBX All

És el truc per evitar que el personatge arribi a Unity gegant (escala 100) o diminut (escala 0.01). Això "planxa" l'escala a 1,1,1.

Apply Transform (Experimental): ACTIVAT 

Aquesta és la solució màgica per al problema de la rotació (-90º). "Cuina" la rotació real als vèrtexs perquè el personatge surti dret a Unity sense haver de tocar eixos estranys.

(Si no tens aquesta casella, fem servir Forward: -Y Forward / Up: Z Up).

Smoothing: Face (o Normals Only)

Apply Modifiers: DESACTIVAT  (Molt important)

Tenir-ho activat en personatges amb esquelet (Armature) és un error greu. Si s'activa, Blender intenta "enganxar" l'esquelet a la malla de forma estàtica, trencant les animacions

Triangulate Faces: DESACTIVAT

Add Leaf Bones: DESACTIVAT

Si ho actives, Blender afegeix ossos extra inútils a la punta de cada dit i al cap. Això només serveix per embrutar la jerarquia dins de Unity

Only Deform Bones: ACTIVAT

Així només exportes els ossos que realment mouen la malla, deixant enrere els ossos que Unity no necessita per res.

Bake Animation: ACTIVAT

Key All Bones: DESACTIVAT 

NLA Strips: ACTIVAT

Li diu a l'exportador: "exporta'm els clips separats que he organitzat al NLA Editor".

All Actions: DESACTIVAT

Force Start/End Key: ACTIVAT

Afegeix un keyframe al principi i al final de cada animació per assegurar que els loops (cicles com caminar) quedin perfectes i no facin salts.

Esperem que els nostres aprenentatges a l'hora de fer el videojoc os siguin útils. 

 

Treball en branques i conflictes

 Treballar en branques diferents sense actualitzar sovint els canvis és un perill. Perquè es poden crear conflictes massius a l’hora de fer ...