Toon posts:

[AI]Artificial intelligence in games

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik las net een revieuw van het spel STALKER en met Half life 2 in gedachte wilde ik vragen wat ongescripte intelligentie is. Ik kan me niet indenken hoe AI in een spel niet gescript kan zijn. Een doel is toch al een script? zoals een karakter die over straat loopt om bij de bakker een brood te halen is toch al een script?

Ik heb geen technische achtergrond dus zou graag willen weten hoe programmeurs dit kunnen verwezelijken en gedachtes hoe ver dit kan gaan?

Dank

blacky

  • SyS_ErroR
  • Registratie: Juni 2002
  • Nu online
een script is bijvoorbeel dit:

iedere keer als jij naar links springt dan doet de enemy dat ook.

een non scripted AI is bijvoorbeeld:
iedere keer als jij naar links springt dan "denkt" de enemy na wat het slimste is om te gaan doen.

Een scripted AI is dus simpelweg iets wat zich steeds identiek herhaalt.
Een karakter die over straat loopt om een brood te halen _kan_ een scripted event zijn, het is zeer zeker _geen_ scripted event als het karakter de eerste keer over een klein hondje struikelt, terwijl de tweede keer er geen hondje is, en de derde keer het karakter het hondje nog net kan ontwijken

snappie? :P

  • Koetjeboe
  • Registratie: Maart 2002
  • Laatst online: 10:56

Koetjeboe

Boe, zegt de koe

Denk dat de grens zowiezo een beetje vaag is omdat je in princiepe een total spel dmv scripts kan maken.

Ik gok dat ze hier bedoelen dat er geen ingewikkelde acties vooraf dmv scripts zijn vastgelegd en dat de AI zelf alles aan elkaar breid aan de hand van factoren (is mijn health laag probeer dan zoveel mogelijk de vijand te ontwijken en schakel over op sniper rifle en kijk ondertussen uit of er een medic/health iets in de buurt is)

Maar dit is dus technisch ook allemaal mogelijk met scripts :+

Verwijderd

Als voorbeeld het stukje uit de HL2 trailer waar de soldaten de deur door trappen. Als het gescript zou zijn dan zou de NPC altijd hetzelfde reageren: door het raam schieten en de deur intrappen.

Wat er in het filmpje gebeurd is dat de speler een tafel door de deur schuift. en de AI niet naar binnen kan (hij probeert de deur te openen). De AI krijgt van te voren een lijst met acties mee wat hij kan doen als er iets gebeurd, bv bij het achtervolgen van een vijand waar ze een deur tegenkomen:
  • Probeer de deur te openen
  • Lukt dat niet, probeer hem in te trappen
  • Is de deur hardnekkig, blaas hem op
Had de speler er geen tafel voor geschoven, dan had de NPC nooit getrapt (en waarschijnlijk zelfs niet door de ruit geschoten). Een script geeft alleen voor 1 moment, 1 locatie een precieze reactie: het veranderd nooit, het wordt gewoon aan of uit gezet.

Verwijderd

Als je goed doordenkt is alles scripted.

Het gaat om "motivatoren".

Jij hebt honger, signaal komt aan en je loopt naar de koelkast.

In een spel niet veel anders: jij maakt een move, wordt gezien (signaal komt aan) en de "vijand" reageerd gebasseerd op zijn gescriptte tegenactie (dekking, terugvuren, weglopen, waarschuwen etc) waarbij die verschillende tegenacties tegen elkaar gewogen worden op basis van omgevingsfactoren (en gescriptte "feiten" zoals specifieke karakters die "bang zijn", "overmoedig" of geen alarmbel in de buurt etc. Los daarvan kun je ook nog random inprogrammeren voor de fun of geleerde tactieken waarbij de vijand van jouw tactiek leert en die onderschept (bijv als je altijd een deur barricadeert dat er dan gelijk eerst door de deur geschoten wordt en vervolgens een handgranaat naar binnen tobesure / of dat een specifieke route beter beveiligd is omdat je die gemiddeld vaker neemt / of dat je reactiesnelheid linksom iets lager is als rechtsom...) Kortom genoeg mogelijkheden...

[ Voor 32% gewijzigd door Verwijderd op 07-07-2003 01:58 ]


Verwijderd

Verwijderd schreef op 07 July 2003 @ 01:55:
Als je goed doordenkt is alles scripted.
Ja, er wordt altijd verteld wat er gedaan kan worden. Het verschil met scripted scenes en non-scripted scenes is dat bij scripted er stap voor stap verteld wordt wat er gedaan wordt, en het altijd hetzelfde is :)

Verwijderd

Topicstarter
Dus nonscripting in dit geval betekend dat er wel degenlijk scripting gebruikt word maar dat niet statisch is en veranderd hoe de hoofdpersonage te werk gaat of de omgeving veranderd?

Dus net zoals die ouwe tekst adventures, je geeft aan een locatie of actie een aantal variabelen mee. Die een voor een word afgegaan en in ranking word de beste uitgevoerd.

Als voorbeeld de man die naar de bakker gaat, hij koopt het goedkoopste brood (geld gerelateerd), hij brengt een paraplu mee op een regenachtige dag(tijd gerelateerd), hij koopt geen brood(hoofdkarakter heeft zich in de bakkerij heftig bezig gehouden :)

  • Kwartjuh
  • Registratie: Mei 2002
  • Laatst online: 28-12-2025
Verwijderd schreef op 07 July 2003 @ 01:00:
Als voorbeeld het stukje uit de HL2 trailer waar de soldaten de deur door trappen. Als het gescript zou zijn dan zou de NPC altijd hetzelfde reageren: door het raam schieten en de deur intrappen.

Wat er in het filmpje gebeurd is dat de speler een tafel door de deur schuift. en de AI niet naar binnen kan (hij probeert de deur te openen). De AI krijgt van te voren een lijst met acties mee wat hij kan doen als er iets gebeurd, bv bij het achtervolgen van een vijand waar ze een deur tegenkomen:
  • Probeer de deur te openen
  • Lukt dat niet, probeer hem in te trappen
  • Is de deur hardnekkig, blaas hem op
Had de speler er geen tafel voor geschoven, dan had de NPC nooit getrapt (en waarschijnlijk zelfs niet door de ruit geschoten). Een script geeft alleen voor 1 moment, 1 locatie een precieze reactie: het veranderd nooit, het wordt gewoon aan of uit gezet.
Klopt...gedeeltelijk :) Zie je, die soldaat die door de ruit schoot was wél scripted. Kijk maar eens naar waar hij schiet... constand dezelfde plek, waar de player ook zit... (is wel vaag overigens :? )

-[ Het Kwartjuh Valt... ]-


Verwijderd

Verwijderd schreef op 07 July 2003 @ 11:18:
Als voorbeeld de man die naar de bakker gaat, hij koopt het goedkoopste brood (geld gerelateerd), hij brengt een paraplu mee op een regenachtige dag(tijd gerelateerd), hij koopt geen brood(hoofdkarakter heeft zich in de bakkerij heftig bezig gehouden :)
Dat zou idd goed kunnen :)
Kwartjuh schreef op 07 July 2003 @ 11:41:
Klopt...gedeeltelijk :) Zie je, die soldaat die door de ruit schoot was wél scripted. Kijk maar eens naar waar hij schiet... constand dezelfde plek, waar de player ook zit... (is wel vaag overigens :? )
Dat was me ook opgevallen, maar toch noem ik het niet scripted... weet niet waarom :)

  • Freek
  • Registratie: December 2001
  • Laatst online: 23-12-2025
Scripted is het idd altijd. Non-scripted ai is volgens mij meer dat de NPC zelf een keuze maakt uit een aantal scripts/opties.

  • LordMithril
  • Registratie: Augustus 2001
  • Laatst online: 27-12-2025
non scripted kan gewoon niet..
dan zou een mannetje daar gewoon blijven staan niks doen.

wat de makers bedoelen met niet gescript is gewoon dat ze niet altijd hetzelfde doen maar zich aan de situatie aanpassen..

code:
1
2
3
4
5
6
7
8
9
10
11
If player move beyond 6 meter
   check surrounding
   if surrounding = safe then
       follow player to next waypoint
       if onroute surrounding = hostile then
           find cover
       endif
   else
       stay in cover and clear surrounding
   endif
endif

als je het speelt zal je merken dat de mannetjes vedomd slim reageren.. maar het is en blijft scripted, ze hebben alleen meer keuzes.
bij oudere games zou het zijn
code:
1
2
3
If player move beyond 6 meter
   follow player
endif


zo zie ik t althans :)

Bier, Whiskey en Metal!!


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
mag ik even zeggen dat bij hl2, de scripting alleen maar is verplaatst?

het is namelijk zo dat bij hl1, en veel andere games, de 'bots' dingen doen als de gebruiker bijv. over een bepaalde lijn is, of door een bepaalde deur loopt.

maar bij hl2 is het zo dat de scripting verplaatst is naar het beest ipv naar het level
daar is het dus zo dat de 'bot' constant check of bijv, de gebruiker binnen een straal van xx meters van hem vandaan is voordat ie iets gaat doen.
dit is onafhankelijk van het level

verder beweren ze dat hl2 bots ook gaan 'zoeken' naar hun slachtoffer. zo gaan ze bijv andere ingangen zoeken als je er 1 blokkeerd.
dit is niet moeilijk te programmeren, en is ook helemaal in de bot verwerkt.

This message was sent on 100% recyclable electrons.


  • Koetjeboe
  • Registratie: Maart 2002
  • Laatst online: 10:56

Koetjeboe

Boe, zegt de koe

Nonscripted kan voor alle duidelijkheid wel, alleen zouden de dev's dan bij elke kleine verandering het spel moeten recompilen. Daarvoor zijn dus scripts, waarin je snel dingen kunt aanpassen en indien nodig direct het resultaat kunt aanschouwen. Ook zijn scripting talen vaak een stukje makkelijker dan de 'echte' programmeer talen (nadeel van scripting is dan weer dat het langzamer is dan hard coding, maar de flexibiliteit maakt het meer dan waard).

Verwijderd

Van dat langzaam zul je niet veel merken. Tegenwoordig zijn computers zo snel. En het nadeel van hard coding is dat de code veels te groot kan worden. Als je 1000 keer "hallo" op het scherm wil tonen kun je dat hard coded doen door het 1000 keer te typen maar een lusje van 2 regels gebruiken is dan veel nuttiger. Bespaart dus ook ruimte.

Verwijderd

Topicstarter
Als ik dit zo zie ontwikkelen. Hoe kunnen programmeurs de moeilijkheidsgraad beinvloeden. Naar mijn mening voor elk stukje non scripting valt een stuk controle weg.

Ik zag in de HL demo als ik het me goed kan herrineren dat de hoofdpersonage bijelkaar gebonden vaten los schoot dat naar een groep monsters rolde en door de ontploffing wegvaagde (?)

Nu dat is allemaal heel erg mooi maar zoals we nu en vroeger gewend waren is het oplossend vermogen van spellen erg liniair (waar is de geheime deur). Toen gekoppeld aan een actie (hendel overhalen dan geheime deur) daarna tijds verbonden (na overhalen hendel 2 minuten om er door heen te gaan). Dit in kombinatie met hele reeksen van acties zoals die gebonden vaten en dat gekoppeld aan geavanceerde intelligentie kan een spel heel mooi maken maar ook onspeelbaar of alleen weggelegd voor een kleine groep.

Hoe ver denken jullie dat dit kan gaan?

  • damouzer
  • Registratie: Oktober 2000
  • Laatst online: 18-12-2025
non-scripting, kun je zien als scripts die reageren op variabelen.

Voorbeeld: Vijand hoort jou schieten, maar ziet jou niet. Hij zou zich nu dus kunnen gaan verstoppen.

Heb je een vijand die doof is (hoezo vaag voorbeeld :P) die hoort jou schoten niet. Dus zou hij blijven staan totdat hij jou ziet.

Het blijft allemaal voorgeprogrammeerde sh#t, als er steeds meer variabelen worden toegevoegd aan een spel, dan kan de vijand daar steeds beter op reageren.

Dus betere games :)

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 31-12-2025

SinergyX

____(>^^(>0o)>____

non-scripted lijkt mij gewoon niet te bestaan. Alles wat de dev's maken in het spel is scripted.. ook al gaat een enemie jojo'en als ie jou ziet, of knikkeren, het blijft scripted (ook als zit er een 8500x if/else in).

Is er dan wel sprake van AI? als je uit gaat van het scripted/non-scripted idee is er dus helemaal geen AI (je moet beginnen met een "script" voordat je iets kan laten beginnen).

Veel variabelen zal zeker een rol spelen tot het bereiken van non-scripted, maar domweg een gast in een map zetten zal helaas geen rambo creeeren. Zal je rambo eerst moeten maken.

Maar zoals blackeye zegt, hoe meer variabelen, hoe minder linniair het wordt, des te "elite" het spel wordt. Slechts een aantal heeft het denkvermogen nog om de "trigger" te vinden. Stel dat ze die sommen/raadsel van een wiskunde raadsel topic in een spel zouden opnemen? scripted, maar voor 80% helaas niet meer te spelen.

Zolang de Dev's maar grotere en complexere scripts maken, zullen wij steeds meer gaan geloven dat de tegenstanders echt "slim" worden, uiteindelijk toch een Matrix system? ;)

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


  • MissingDog
  • Registratie: Augustus 2002
  • Niet online
Er zit hier een groot valluik in verborgen; de manier waarop gescript wordt varieert nogal. Soms is het zoals BassieP noemt op NPC of Level niveau gescript, maar soms zit het ook dieper...een lerende engine, waarbij er dus een daadwerkelijk individu schuilt in ieder character, wat interactie heeft met z'n omgeving en dus ook de objecten om hem/haar heen kan herkennen en kan leren wat deze voor hem/haar kunnen betekenen. Het leren binnen een game-engine is beperkt, maar toch noodzakelijk. Als een NPC vanaf een afstand waarneemt dat jij zijn/haar maatjes opblaast met een boobytrap, dan zal hij/zij gedwongen zijn om beter op te letten en misschien je claymores wel onschadelijk maken, maar de valkuilen over het hoofd zien (afhankelijk van wat er als eerste dodelijk geweest is zeg maar)...daar 'leren' andere NPC's weer van. Echte AI is nog een toekomstverhaal, maar binnen enkele jaren zal character/level based scripting vervangen worden door een soort van 'collectief bewustzijn' van de NPC's, waardoor veel meer onvoorspelbare scenario's mogelijk worden.

  • Hydra
  • Registratie: September 2000
  • Laatst online: 17-12-2025
Beetje vaag gelul hier, er is weldegelijk een groot verschil tussen scripted sequences en de AI van HL2. In HL2 bedenkt een tegenstander wat de makkelijkste manier is om jou om zeep te helpen, het is niet vooraf vastgelegd, tegenstanders reageren op jouw acties i.p.v. een statische serie handelingen uit te voeren.

Scripting is dat als Player over lijn X loopt, beest Y van A naar B loopt, daarbij een maatje ophaalt, en de speler gaat beschieten, en dit ELKE keer doet simpelweg omdat een speler over een onzichtbare lijn stapt. Als een dergelijk script is afgelopen is het gewoon weer een dom monsters, terwijl tegenstanders als in HL2 wel slim blijven, omdat ze zich aanpassen aan de huidige situatie.

https://niels.nu


  • SinergyX
  • Registratie: November 2001
  • Laatst online: 31-12-2025

SinergyX

____(>^^(>0o)>____

maatk het wat uit dan, blijft scripted dus, alleen met veel variabelen. Er is een script hoe dit "monster" zal moeten denken.

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


  • Hyp3rman
  • Registratie: September 2002
  • Laatst online: 01-12-2022
Script is toch gewoon iets wat volgens een bepaald verloop MOET gaan en niet kan reageren op omgevings variabelen? kijk maar naar het script van een toneelstuk/film.

Dit is een taak vooooooooor HYP3RMAN!!!!


Verwijderd

BasieP schreef op 07 July 2003 @ 17:04:
mag ik even zeggen dat bij hl2, de scripting alleen maar is verplaatst?

het is namelijk zo dat bij hl1, en veel andere games, de 'bots' dingen doen als de gebruiker bijv. over een bepaalde lijn is, of door een bepaalde deur loopt.

maar bij hl2 is het zo dat de scripting verplaatst is naar het beest ipv naar het level
daar is het dus zo dat de 'bot' constant check of bijv, de gebruiker binnen een straal van xx meters van hem vandaan is voordat ie iets gaat doen.
dit is onafhankelijk van het level
nope, scripting niet verplaatst... in HL1 word er ook nix gescript in code of map. De bot draagt de scripting. Dat is zo bij HalfLife, dat is zo bij MaxPayne en dat is zo bij Half Life 2... voor zover ik weet draagt de bot ALTIJD de scripting bij zich, en heeft de map daar weinig mee te maken, afgezien van een paar referentiepunten (info_targets bij HL1 bijv.) (en ja, ik map voor MaxPayne en HL1, dus ik weet best waar ik het over heb)

[ Voor 11% gewijzigd door Verwijderd op 08-07-2003 13:54 ]


Verwijderd

De AI in halflife was grotendeels gescript in het level. Alle leuke triggers die je neer zet om een monster om het hoekje te laten komen is feitelijk een script. Het mooiste voorbeeld in de trailer van halflife 2 van ongescripte events zijn als je medestanders van verdekt punt naar verdekt punt rennen als de speler naar voren gaat. Aan het eind gaan ze zelfs door de ramen schieten en bewaken ze de deur. (dat kan natuurlijk ook allemaal gescript worden, maar ik vertrouw op de woorden van de presentator dat het niet gescript was, waardoor het een indrukwekkend stukje ai is)

En ik merk dat veel mensen de term scripting verkeerd opvatten. De AI bestaat namelijk in halflife(en elk ander spel) uit 2 delen. Het geprogrameerde/slimme(dekking zoeken als er geschoten wordt) gedeelte en de gescripte events(om het hoekje komen als de speler er aan komt). Vooral in halflife was het soms goed te merken aan de AI dat ie grotendeels gescript was. Kijk naar de scientists bij het openen van deuren. Jij loopt er naar toe en op een bepaalt moment als je dicht bij genoeg bent gaat zo'n scientist de deur openen. Dat was scripted.

Wat ze in halflife2 proberen is om het tweede gedeelte/gescripte gedeelte zoveel mogelijk de laten beredeneren in het geprogrameerde gedeelte. Waardoor het maken van levels waar de AI complexe acties uitvoerd veel gemakkelijker word. Natuurlijk kan er vanwege de verhaallijn is er altijd een stukje gescript, maar met een inteligentere AI hoeft er minder gescript te worden.

Om even terug te komen op het voorbeeld van iemand die een brood haalt, dat kan natuulijk gescript zijn. Maar zoals jij het daar zegt lijkt het er op dat je de werkelijke/geprogrameerde AI en scripting door elkaar haalt.

Een gescripte AI krijgt aleen te weten dat ie een brood moet halen. HIj krijgt zelfs de route erbij. Gebeurt er onderweg iets anders(er vallen broden uit de lucht) dan negeert hij dat(tenzijn dat er ook bij in gescript is, waardoor een scripter/programeur elke situatie in moet bouwen). Een goeie geprogrameerde AI bedenkt eerst zelf dat ie een brood moet halen omdat het huis leeg is. Zijn eerste impuls is dan om naar de bakker te gaan. Merkt ie onderweg dat er broden uit de lucht vallen dan zal hij opnieuw zijn doelen bekijken en merken dat het vlugger is om een brood op te vangen om die mee te nemen naar huis. Als de AI dat zelf kan bedenken dan scheelt dat gigantisch veel regels programeerwerk, omdat de AI zelf op dingen kan reageren en niet afhankelijk is van de scripting.
Pagina: 1