Toon posts:

Botsingsdetectie, waarom is het nog steeds zo slecht?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het valt me op dat vrijwel alle spellen waarin je rondloopt een slechte botsingsdetectie hebben waarbij handen en armen doorheen muren gaan en voeten doorheen de grond gaan. Concreet viel het me laatst bij Overwatch op waarbij het wel heel erg sterk gebeurde. Nu begrijp ik natuurlijk wel dat er flink wat rekenwerk nodig is om dit te voorkomen, ik vraag me af wat er nodig is om dit goed door te voeren en waarom het niet gebeurt.
Volstaat 4 kernen niet en moeten we binnenkort eens de stap naar 8 kernen zetten, worden de 4 kernen die de meesten van ons hebben onvoldoende benut doordat er nog steeds te gebrekkig wordt gemultithread (wellicht mede dankzij DX11) of zijn programmeurs een beetje lui met dit aspect van het spel? Als ik het goed heb begrepen dan zijn enkele spellen waarbij de CPU de bottleneck is maar zijn er ook veel spellen waarbij 3 van de 4 kernen maar voor 50% of minder worden gebruikt, dan is er toch een flinke reservecapaciteit om voor de botsingsdetectie te gebruiken? Of zouden veel mensen het prima vinden dat dit slordig is geïmplementeerd omdat het hen niet de extra benodigde resources waard is om dat goed te implementeren?

Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 08:39
Collision detection is best een lastige rekenklus die flink resources kan kosten. Of cores tijdens het spelen lange tijd niet heel erg actief zijn is niet per se relevant, het gaat vooral om de pieken (en de daaruit volgende drops in FPS). De vraag is dan hoeveel prioriteit je aan collision detection wil geven en hoeveel de spelervaring erdoor verbeterd.

Daarnaast is er nog een ander probleem; hoe handel je de collisions af? Stel je hebt standaard animaties gemaakt, maar wat ga je doen als deze niet in de ruimte passen? Ga je dan proberen de animatie on the fly aan te passen (vb. normaal beide armen in de lucht, nu maar eentje helemaal en de ander half of niet). En hoe definieer je alle mogelijke aanpassingen die wel of niet toegestaan zijn? Je zou de animaties dan een soort "prioriteiten" mee moeten geven wat wel en niet aangepast kan worden en hoe.

Ander alternatief is om dan maar heel veel ruimte rond characters te houden, maar dat speelt ook vreemd (kun je bijvoorbeeld nooit een wall huggen). Of je zou animaties die niet "passen" kunnen skippen, maar dan moet je wel op het moment van starten eerst doorrekenen (voor zover mogelijk) of een gehele animatie (niet) past.

Kortom, het probleem is wat complexer dan alleen berekenen of er een collision zal zijn; het is vooral lastig om ze goed af te vangen zodat het er toch nog natuurlijk uitziet.

[ Voor 8% gewijzigd door Morrar op 08-06-2016 23:35 ]