Det är ganska dött här, så jag tänkte se om det går att få igång en diskussion om ett ämne som jag har stört mig på ett bra tag nu. Hur skall man synka gameplay-tillstånd med animering/visualiserings-tillstånd?
När jag gjorde fps var det enkelt. Så länge jag spelade upp en vettig animation så spelade inte det så stor roll, eftersom det inte fanns så många speglar och fienderna rörde sig inte mer än åt ett håll.
När jag gick över till 3rd-person och side-scrollers så började jag med en enum. Det är dock en hel del problem med att få det se bra ut. Foot-skating och ljud och andra effekter som inte är i-synk med animationen. Att komma fram till att 0.039f sekunder in i animationen skall ett ljud spelas och om karaktären rör sig 15.3f enheter i sekunden så ser det inte skit ut, och dessa värdena kommer oftast till genom att man gissar och testar sig fram.
Att komma fram till dessa enum-states som karaktären kan vara i, resulterar oftast i en hög med nästlade if-satser och förutom i de mest triviala fall så är den ganska grötig.
Den vettigaste lösningen på att synka ljud och händelser till animationen, som jag kommit på, är att markera händelser i dess time-line och på samma sätt animera en förflyttningsvektor. Problemet då är att det ställs högre krav på att animationerna synkas på rätt sätt, och där har jag ingen smart lösning. Det närmaste jag har kommit är ett tool där jag kan rita upp en fsm:er som bestämmer animation samt gameplay, men då har jag problemet hur jag skall hantera mouse-look och liknande varierande indata.
Hur brukar ni göra/någon som har någon bra idé?
