Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  13 1177
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Litt bakgrunn: Jeg lager et spill basert på Powder Game der man blant annet kan påvirke vind og lufttrykk.

Jeg har et rutenett og et koordinatsystem der hvert punkt har sin egen verdi som representerer lufttrykk. (Fra -128 til 127, der 0 er nøytralt.)

Det jeg trenger er et system der forskjeller i lufttrykk utjevnes over tid, som i "spillet" jeg linket til over. Hvis du bruker AIR og tegner litt, ser du at det bølger litt rundt før forskjellene stort sett har utjevnet hverandre.

Problemet er at alle mine forsøk på å lage noe lignende har endt i katastrofe (huff. PÅ bildet er blått lavt og grønt høyt.) og jeg finner ikke noe på google, ei heller finner jeg på noen bedre søkeord enn de jeg har. Håper derfor noen kan gi meg en pekepinn.

Beklager en potensielt uryddig post. Det heter ikke sengetid for ingenting.

Bumper denne da jeg fortsatt ikke har kommet noe lenger. Lurer du på noe, for all del, spør.
Sist endret av robhol; 13. juli 2009 kl. 22:33. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Hvor nøyaktig skal ting være? Powder Game ser ut til å bruke vektorer for luft i bevegelse ihvertfall. Hva er det du bruker nå?
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
I grove trekk har jeg et rutenett med celler der alle cellene har sin egen verdi som representerer lufttrykk. Jeg har så langt prøvd å holde meg til å la hver celle "kommunisere" med sine 8 nærmeste naboer i grid'en, dette for å gjøre hele opplegget med sperrer (BLOCK i PG) enklere.

Programmeringsspråket er C# bare så du vet det, hvis du fortsatt er interessert kan jeg poste kildekoden snart. Den er mest å regne som et eksperiment, men med mindre prosjektet viser seg å være kortlivet skal den ryddes opp i. Det viktigste nå er å få slengt sammen noe som fungerer.

Når det gjelder nøyaktighet er det veldig vanskelig å gi noe konkret svar, men for øyeblikket er det mest en PG-"clone" jeg sikter etter.
Sist endret av robhol; 13. juli 2009 kl. 23:42.
Med tanke på hvordan eksempelbildet du postet ser ut mistenker jeg sterkt at du har en bug i algoritmen din et sted, så post kildekoden.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
Den algoritmen som var der har gått i glemmeboken for lengst, noe som antakelig var like greit. Dette er det jeg har nå.

http://pastebin.com/m7425e9be

Det ser horribelt ut, men ikke skyt meg.

Testversjon her: http://robhol.ath.cx/CSSand.exe
Controls: vensteklikk for høytrykk, høyre for lavtrykk. Scroll- eller midtklikk for å sette ut blokker. Dette er en forjævlig måte å gjøre det på, men som sagt, ting skal helst funke først.

Den mest åpenbare feilen her er at lufttrykk som er "trengt opp i et hjørne" ikke blir nøytralisert, men blir liggende i hjørnet sitt.
Sist endret av robhol; 13. juli 2009 kl. 23:53.
Har bare såvidt sett over koden, men problemet ditt ser ut til å være synkronisering. Du kan ikke oppdatere lufttrykket til et punkt underveis, det fører til trøbbel. Du må "stue bort" det nye kalkulerte lufttrykket til alle punkter har fått regnet ut nytt trykk, så umiddelbart skifte alle punkter over fra "gammelt" til "nytt" trykk.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
Hvis jeg derimot lager en ny grid med resultatet fra beregningene fungerer det også dårlig, da det lagger noe sinnsykt. Nå fungerer ikke blokkplassering heller. Æsj.
Sist endret av robhol; 14. juli 2009 kl. 00:02.
Men blir det bedre resultater? Lag kan fikses, du trenger for eksempel ikke lage grid-et på nytt for hver gang, men la det være et persistent objekt.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
Nå er det sekundære rutenettet statisk, men problemet vedvarer.
http://robhol.ath.cx/cssstuck.gif
Det ser sånn ut, og "sitter fast" sånn, selv om overtrykket inne i denne boksen skulle forsvinne etter hvert.
Sist endret av robhol; 14. juli 2009 kl. 00:16. Grunn: img => url
Da får du eksperimentere litt med diverse forskjellige utregninger av gjennomsnittstrykket. La blant annet merke til at du ikke tok med trykket for punktet du beregner, mulig du trenger å ta det med? Sjekk også med undertrykk i stedet for overtrykk, mulig avrunding roter ting til.

Uansett vil du ikke få en "skikkelig" modell som i den første linken din, for det programmet gjør som sagt mye mer enn bare å beregne gjennomsnitt. Der antar jeg hver "luftpartikkel" simuleres som en vektor med retning og kraft.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
Jeg tror PG bruker samme system som jeg hadde planer om å bruke, og ikke noen luftpartikler. De telles i så tilfelle ikke sammen med alle andre partikler, og oppfører seg slett ikke på samme måte.

Dersom jeg regner med "gjeldende" flis/rute vil ikke forskjellen jevnes ut.

Jeg har heller ikke sagt jeg må ha med gjennomsnitt, jeg leter bare etter en bedre måte å få til dette på en måte som likner PG.
Sjekk ut kildekoden til noen av de spillene du prøver å emulere?
http://www.piettes.com/fallingsandgame/download.html
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
Mens jeg setter pris på svar, vær så snill og prøv å ha noe relevant å komme med. Spillet du linker til er for det første ikke det jeg ønsker å emulere, for det andre har det heller ikke noe lufttrykk/vind i seg.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Trådstarter
Har bestemt meg for like gjerne å slippe ut den lille kildekoden jeg har produsert så langt. Svært lite som faktisk fungerer ennå, men hvis du greier å få til denne distribusjonen av lufttrykk er jeg evig takknemlig.

Koden er på en måte en slags kladd og kunne sikkert vært skrevet mer effektivt, men dette er ikke spesielt viktig akkurat nå. Jeg har kommentert der jeg synes det kan være en god ide.

http://robhol.net/etc/CSSand_src.zip - Solution i VS2008-format
Sist endret av robhol; 16. juli 2009 kl. 14:54.