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.
Meddelanden - BjornEkelof
Sidor: 1
1
« skrivet: mars 24, 2013, 12:49:07 »
http://www.youtube.com/watch?v=UyenILFtcY4Frå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
« skrivet: december 17, 2011, 15:27:07 »
EZL: Ännu ett exempel på att det i allafall finns folk som har provat detta tidigare.
Jag hade som sagt var inte hittat något när jag sökt förut.
3
« skrivet: december 16, 2011, 13:00:14 »
INK: Trevligt, då finns det i allafall någon som gjort något liknande.
Visserligen en enklare approach, men det kanske är så man får börja.
Jag ska kolla igenom deras dokumentation och se om jag hittar någon nyttig info där.
4
« skrivet: december 16, 2011, 12:45:36 »
gondar: Jag tror man helt enkelt får säga åt programmet vilket spel som ska spelas och välja rätt databas efter det. Sedan för att den gamla inlärningen ens ska fungera så krävs det ju att kameran sitter på exakt samma ställe vid varje inlärning.
Jag tror att själva spelande delen egengtligen bara behöver bestå av att välja bland lyckade tidigare försök och inte bestå av så mycket beräkningar. Till att börja med i allafall.
Jag är medveten om att det troligen finns en hel del problem som jag inte ens har tänkt på ännu. Till att börja med så kommer jag självklart att börja med endast ett spel för att se om det ens verkar vara möjligt.
Om det finns andra mer lämpade programmeringsspråk så är det mycket möjligt att jag istället väljer något annat än c++. Tanken med den här posten är just att få förslag på vad som skulle vara det bästa tillvägagångssättet.
Jag har varit en aktiv programmerare i allafall de senaste 15 åren och är en inbiten datanörd sen barnsben. Så att lära mig ett till programmeringsspråk ser jag inte som någon omöjlighet. Men jag börjar nog med något jag redan kan.
Som du säger så kommer detta uppenbarligen bli ett lek/hobby projekt, om jag ens kommer att komma igång med det. Jag äger som sagt inte ens ett flipper just nu så det blir det första att ta tag i.
Jag tycker inte alls du är negativ utan ger bra konstuktiv kritik. Tack för det.
5
« skrivet: december 16, 2011, 11:47:15 »
När jag tänker efter så skulle man ju kunna göra ett annat inlärningsläge också där man själv spelar och AI:n bara observerar.
Det kanske skulle ge en ännu snabbare inlärningstid.
På så sätt skulle man också kunna lära datorn små trick som att förflytta kulan till andra flippern. Där man manuellt programerar in själva nyttan av ett sånt drag.
6
« skrivet: december 16, 2011, 11:13:29 »
Bundy: Vitsen är väl bara att se om det går att genomföra.
Jag ser egentligen inget vettigt användningsområde för det hela.
Det skulle kunna vara en rolig grej att ställa upp ett sånt spel på en tävling.
7
« skrivet: december 16, 2011, 10:59:07 »
rasmadrak: Ett neuralt nätverk kan nog vara lösningen på problemet. Jag har aldrig byggt någon sånt och vet knappt hur det funkar, men det lilla jag vet så känns det som att det kan vara passande. Och angående förvirring av kameror så kan det nog stämma, det hade jag inte tänkt på. Jag har ju faktiskt en kinect kamera, det kanske vore bättre att använda den. Fast jag vet inte om kinecten är tillräckligt snabb. När det gäller själva byggandet av spelplanen så kanske det är en grej som inte ens behövs egentligen. Höjdberäkning osv kan vara överkurs. JPN: Troligen är projektet mycket mer omfattande än jag inser just nu Jag vill inte koppla ihop med ett vr pinball för att då blir man beroende av att det ska finnas en modell av det aktuella spelet. Min idé är att programmet ska kunna lära sig vilket flipper som helst. Jag inser också att det troligen kan bli svårt att slå en mänsklig spelare pga. "fusk" som att skaka flippret. Jag tänker mig att om man ska utmana datorn så ska det vara på samma villkor, alltså inget skakande. Sedan tror jag det blir stort sett omöjligt att lära den diverse trick som att flytta kulan till den andra flippern m.m. Så där kommer människan helt klart att ha ett övertag. Det jag är mest intresserad av att göra är själva AI delen. Till en början så skulle man kunna göra så att man sätter ett antal punkter där man vill att bollen ska komma. Då borde man rätt enkelt kunna matcha upp dessa punkter mot kurvorna.
8
« 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.
9
« skrivet: januari 15, 2011, 22:59:34 »
Jag hoppas att det inte är så enkelt
10
« 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.
11
« skrivet: augusti 27, 2010, 18:24:15 »
Tack för svar då vet jag vad jag skall bjuda.
Display och lampor fungerar fint så det har nog fixats någon gång. Elektroniken i övrigt har nog aldrig setts över men alla funktioner fungerar.
12
« 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
|