Frispel

sedan 2001

Visa inlägg

Denna sektion låter dig visa alla inlägg som denna medlem har skrivit. Observera att du bara kan se inlägg i områden som du har tillgång till.


Visa inlägg - BjornEkelof

Sidor: 1
1
http://www.youtube.com/watch?v=UyenILFtcY4

Från youtube:
On this episode, it's wall-to-wall pinball as we discuss the state of pinball, machines, tournaments, everything you can think of and more with some of the all-stars in the pinball world!

Hosts: Chase Nunes, Jon Kessler, Joseph Falbey
Guests: Kyle Seller, Bowen Kerins, Eden Stamm

2
Flippersnack / Datorstyrt flipper med AI
« skrivet: december 16, 2011, 01:47:22 »
Hej alla flipperfantaster.

Jag har börjat klura på en grej som ingen verkar ha provat tidigare, jag har inte hittat något på Google i allafall.

Jag tänker bygga ett datorstyrt flipperspel (det har jag hittat) som kan lära sig att spela flipper och lista ut reglerna på vilket spel som helst.

Målet är att skapa en AI som kan lista ut det mest optimala sättet att bygga poäng på och att kunna slå en mänsklig spelare

Jag har börjat skissa på hur det ska fungera och jag tänkte ventilera lite av mina idéer här för att se vad ni tycker.

Den hårdvara som jag tänkt använda är: ett flipperspel, en dator, 1 eller 2 webbkameror och någon typ av IO modul för att styra flipprar och uppskjutare.

Webbkamerorna kommer att fungera som datorns ögon. Jag är lite osäker på vad som blir enklast, men en webbkamera kommer i allafall att monteras ovanför flippret för att ”titta” ner på spelplanen och hålla reda på var kulan är. Den andra webbkameran är tänkt att hålla reda på poängen.

Man kan troligen lösa bollkoll & poängräkning med bara en webbkamera genom att ha den vinklad så att kameran ser både poäng och spelplan, eller att rikta med en spegel.

Ett annat alternativ som också bör fungera och tar mindre cpukraft, är att läsa ut poängen digitalt från flippret. Jag har inte kollat upp om det går, men jag gissar att det går. Det enda som skulle kunna vara något negativt med det som jag kommer på är att man då behöver dubbelriktad datakommunikation.

Programmet för att styra flippret har jag tänkt skriva i C++.

Så här har jag tänkt att styrningen/Ai:n ska fungera:

Det första steget är att ta en bild av en neutral spelplan precis som det ser ut efter att man startat ett nytt spel. Den bilden kommer att vara själva grunden som man sedan använder för att kunna spåra både kulans rörelser och förändringar på spelplanen. Förändringar på spelplanen är tex. att en lampa tänds.

Att hålla reda på poäng, styra flipprar och läsa bollposition borde vara rätt ”straight forward” att göra, det ser jag som den enklare delen av problemet.

Sedan till själva inlärningsdelen.

Jag har inte funderat så mycket på detta ännu, och jag hoppas att jag kan få lite tips och idéer om hur man på bästa sätt kan hantera detta.

Det här har jag kommit fram till:

Alla positioner kommer till en början att sparas i en databas. Bollpositionen kommer att läsas av så många gånger per sekund som kameran uppdateras. Jag har tänkt att använda en ps3 eye kamera, den kan köra i 60 fps - 640x480 eller 120 fps – 320x240. Högre fps = snabbare reaktion, men jag vet inte om den låga upplösningen räcker till att kunna spåra bollen tillräckligt bra. Det blir nog lite trail and error.

Genom att jämföra med tidigare postioner av kulan så kan man räkna ut intressanta saker som acceleration, hastighet och förväntad bana.

Efter en viss tid eller tex. när man missat en kula så gör man en operation för att frigöra minne och lära upp AI:n.

Om vi säger att ett spel tagit 37 sekunder och vi sparar i 60 fps så blir det  2220 positioner.

Det första man gör är att minska ner på antalet postioner genom att hitta avvikande punkter som man sedan kan interpolera mellan. Man kanske bör spara hastighet/acceleration i varje kontrollpunkt för att spara tid i eventuella senare beräkningar.

Sen till själva AI delen.

Jag tänker  att man gör så att varje gång en flipper skjuter iväg en kula så börjar man en ny poängkurva. En poängkurva börjar med en startposition där kulan lämnar flippern och slutar när kulan träffar en flipper igen eller förloras. Förutom själva kurvan så sparar man också poängskillnanden mellan start och stopp.

På så vis kan man betygsättea varje försök som AI:n gör. Kurvor som resulterar i drain tex. inte intressanta att spara.

Till en början när man inte har några poängkurvor alls så kommer AI:n att göra slumpmässiga försök och helt enkelt testa sig fram.

Efter ett tag när man har börjat få in data så kommer AI:n att börja prova tidigare ”lyckade” försök. Dels för att avgöra vad som går att återskapa gång på gång, och även att kasta bort såna kurvor som leder till slumpat beteende som tex. att skjuta på bumprar.

Ju fler kuvor som sparas destå bättre kommer även AI:n att förstå spelplanen. Genom att gå igenom alla punkter  i databasen så kan man bygga en virituell fysisk modell av spelplanen som sedan används till att ännu bättre kunna beräkna förväntad bana. Genom analysering av accelerationer kan man troligen även beräkna höjdskillnader på spelplanen (ramper).

Då och då kan man även på samma sätt som man rensade bort onödiga positioner även rensa bort "dåliga" kurvor.

Om flera kurvor liknar varann och har samma poäng så lägger man ihop dom och skapapar en starkare kurva. På så vis bygger man fram en vinnande stategi.

Sen börjar det bli riktigt klurigt.

När man har tusentals (miljontals?) kurvor sparade så är nästa steg att försöka lista ut serier av vinnande strategier och koppla ihop med förändringar av spelplanen. Jag lite osäker på hur man egentligen löser detta, men kanske man kan koppla kurvorna till en ny uppsättning data som försöker koppla ihop en serie av kurvor i någon sorts följd/tidsbaserad trädstruktur.

Det är här som spelets regler skapas.

Om du läst så här långt så är det nu dags att föja upp med en kommentar om vad du tycker om det hela.

Är det en bra idé?
Ser du några svagheter, brister, fel?
Har du förslag på förbättringar, frågor?

Jag är tacksam för all respons och ser gärna att du kommenterar.

/Björn

Ps. För tillfället äger jag inget flipperspel, men det kommer att införskaffas under nästa år.

3
Flippersnack / Williams relation till Tyskar
« skrivet: januari 15, 2011, 20:42:08 »
Jag satt och tittade lite i manualen till ett Williams Fire! och upptäckte några roliga detaljer.

Detta är från manualen, jag förkortar factory settings till FS:

The percentage of replays automatically awarded has a FS of 10% (German games have a FS of 15%)

For auto replay, the FS is 2.000.000 (German games have a FS of 1.600.000).

For auto replay, the FS is 01 (one replay level). (German games have a FS of 03).

The operator can set the backup high score value in the player 1 display using the credit button. The FS is 4.500.000. (The FS for german games is 5.500.000).

The FS for automatic high score reset is 3000. (German games have a FS of 750.

Games in wich the CPU jumper W7 is cut ("German games") automaticly have certain default settings.

osv...

Jag tyckte detta var enormt underhållande.

Är det gamla "hata tyskar för andra världskriget" känslor som är bakgrunden till denna särbehandling?

Är tyskarna helt enkelt dåliga på flipper och har bett om vissa av inställningarna. Dock så kanske det är lite motsägelsefullt då deras default rekord är högre satta.

Finns denna särbehandling av tyskar alltid på Williams spel?

Har ni några svar eller kanske egna frågor och tankar kring ämnet?

Låt höra.

4
Köprelaterat / Pris på ett Fire! i dåligt skick
« skrivet: augusti 27, 2010, 15:32:28 »
Jag hittade ingen värdering här, men vad kan det vara värt?

Alltså ett Williams Fire! med en spelplan som rätt säkert det aldrig gjorts något underhåll på. Allt gummi är uttorkat, ingen plunger, sega flipprar, spruckna plastdetaljer m.m.

Det behöver alltså en total genomgång.

Sidor: 1