Avatar billede searchjob Nybegynder
11. maj 2006 - 00:02 Der er 15 kommentarer

Idé søges til bedste muligt 'no-lag'

Hejsa.. Jeg vil gerne have at vide, hvordan man laver det bedste system til  at hente brugernes kordinater som de 'står' på i mit spil.

Kom i tanke om, at hvis man skulle finde kordinaterne, og hvis der var 200 brugere online, og de klikkede rundt i mit spil - hvor så den skulle opdatere MySQL med felterne - så ville det jo få mysql til at overbelaste totalt?

Hvordan kan jeg lave det bedste ud af, at vise de online brugere, som er online på min server's kordinater?


Er det meningen man skal bruge en sådan stor side, hvis man skal lave et spil som jeg beskriver? - eller findes der en nemmere mulighed?

Fordi - når andre brugere logger på mit spil, så kan de jo ikke se de andre online brugere i spillet.

Det kun hvis der kommer en ny ind, MENS man selv er inde, man kan.

- Nogle idéer?
Avatar billede kimg Nybegynder
11. maj 2006 - 00:37 #1
Det lyder som noget du kan klare med Shared Objects, gemme koordinaterne på brugeres egen PC.
Jeg ved ikke om du kender til Shared Objects men her er et link du kan kigge på http://www.kirupa.com/developer/mx/sharedobjects.htm

Kim
Avatar billede searchjob Nybegynder
11. maj 2006 - 00:39 #2
Vi siger jeg sidder på mit spil.
Så kommer du ind, så skal du kunne se hvilke kordinater jeg står på.

Hvordan gøres dette, uden at bruge mysql ved hver gang man rykker rundt i spillet?

Hvis den gemmer på brugerens  egen computer, viser den jo stadig ikke de andres brugere.
Avatar billede idiotbarn Nybegynder
11. maj 2006 - 01:18 #3
Jeg er ikke vanvittig meget inde i det med hensyn til hvor hurtigt det er...men hvad hvis du bruger application variabler? Nedenstående er til asp, men de findes også i andre sprog...

http://www.w3schools.com/ASP/asp_applications.asp
Avatar billede searchjob Nybegynder
11. maj 2006 - 07:59 #4
det jo netop der, det går galdt.
for hvis jeg skal udtrække deres kordinater fra databasen, så skal jeg vel også skrive til den - og det er der som det kommer til at overbelaste.
Avatar billede idiotbarn Nybegynder
11. maj 2006 - 09:47 #5
kan det ikke lade sig gøre at hente variablerne ud fra datbasen når man starter, men så ellers bruge application variablerne til at vedligeholde positionerne. Så bruge dem som noget der minder om din database, hvor alle kan tilgå variablerne?
Avatar billede searchjob Nybegynder
11. maj 2006 - 11:55 #6
Hvis jeg skal hente variablerne fra starten, kræver det jo også en database til at kunne udskrive de brugere og positionerne.
Avatar billede _k Nybegynder
11. maj 2006 - 15:28 #7
Svaret er en dedikeret socket-server. Du spurgte angående sockets for et par dage siden, så du sidder vel ellerede med en?

Ellers ville servere såsom Flash Media Server 2, Moocks Unity Server (http://www.moock.org/unity) eller open source initiativet Oregano (http://www.oregano-server.org) kunne det du har brug for. De kan nemlig alle håndtere mange samtidige brugere.

Er du en haj til Java og ved du ikke hvad du skal lave i din sommerferie, kan du også bygge din egen ;)
Avatar billede searchjob Nybegynder
11. maj 2006 - 15:39 #8
har min egen socket server i visual basic..
og alt virker, bortset fra jeg mangler en idé til at loade brugerne som er ONLINE på serveren, med deres kordinater.

Det jo svært at vide hvor de står henne på deres positionerne, hvis der er andre online, og man først lige er kommet ind?
Avatar billede _k Nybegynder
11. maj 2006 - 15:46 #9
Yep, og så er svaret jo en multi user server a lá den type jeg nævnte ovenfor. Har du sådan en server kørende holder den fint styr på hvor dine brugere er henne - altså forudsat at du har kædet deres bevægelser på skærmen hos klienten sammen med serverens logik.
Avatar billede searchjob Nybegynder
11. maj 2006 - 16:14 #10
Har en multi connecter.. Som viser alle på clienten..
Når en flytter positionerne, sender den til serveren.

Men hvis en ny bruger kommer ind, hvordan skal han så vide hvem som er i spillet, når han ikke har været der før, og set de andres positioner?
Avatar billede _k Nybegynder
11. maj 2006 - 16:41 #11
Hvis du anvender FMS2 har du et shared objekt til rådighed som du kan kode op imod fra klienten. Hvis du sidder på din egen server der ikke er bygget til Flash, kan du principielt gøre det med sockets. Men lige dér er jeg nok mere til besvær end hjælp ;)

Hvis du skulle være i tvivl, så er det et større projekt du har rodet dig ud i. Samtidig administration af mange brugere på mange klienter er ikke ligefrem superlet. Især ikke hvis man selv vælger at programere serversiden. Men som med alt andet: "har man tid og tålmodighed skal det nok kunne lade sig gøre".
Avatar billede searchjob Nybegynder
11. maj 2006 - 17:30 #12
Ved ikke om du har forstået det rigtigt...

for mig lyder det som sort snak ;-)

Hvis jeg ville overbelaste min server, havde jeg jo bare lavet et php dokumentet med xml-træer med

<user>
    <name>..</name>
    <x>220</x>
    <y>22</y>
</user>

- og min server er kun én server og én client (en multiserver, til flere connections)
Avatar billede _k Nybegynder
11. maj 2006 - 20:52 #13
Vi kan da godt tage den fra begyndelsen. Når du vil arbejde med mange brugere i Flash har du 3 muligheder:

1: Bruge serverside scripting og en database. Fint nok til asynkrone applikationer, men noget værre hø hvis vi er ude i noget realtime multiplayer
2: Købe en multiuser server som er bygget til at acceptere mange connections og holde styr på dem. Hvordan sådan en virker er sådan set underordnet, for den giver dig et API med metoder der hjælper dig til at gøre det du vil.
3: Lave din egen server eller bygge videre på en eksisterende. Det giver stor fleksibilitet, men medmindre du er godt hjemme i netværksprotokoller og java-programmering vil det tage år for dig at bikse noget brugbart sammen.

Med andre ord svømmer du mod meget store bølger hvis du ikke 100% forstår hvad det er jeg mener med ovenstående smøre. Det er supersvært for mig at vurdere dit niveau og rådgive derefter når du spørger i øst og vest. Så hvis du er interesseret i mere hjælp hvor vi ikke snakker forbi hinanden må du først og fremmest præcisere hvad det er du vil lave og dernæst tilkendegive om du er hjemme i OOP-, Java- og netværksprogrammering.

Til sammenligning vil jeg sige at jeg selv som Flashudvikler med en del års erfaring, ikke ville røre ved det du beskriver medmindre kunden er villig til at lægge på den sjove side af 100.000 alene for programmeringen...
Avatar billede searchjob Nybegynder
12. maj 2006 - 09:10 #14
1. jeg har en server, og det virker fint.
2. det er kodet således serveren står og modtager og sender indkommende data tilbage.
3. det er flash som holder styr på kommandoer med XMLSocket.prototype.onData

Jeg bruger mysql og flash og php, men det jo ikke det mit spørgsmål er.
Mit spørgsmål er hvordan jeg får loadet alle brugerne i starten - altså dem der i forevejen er på clienten - uden brug af xml og mysql da det vil overbelaste , hvis folk rykker på deres positioner hele tiden
Avatar billede _k Nybegynder
12. maj 2006 - 12:16 #15
Det er cool at du får det til at lyde så simpelt, for det er det nemlig ikke.

Det du bliver nødt til at konstruere er en serverside logik som holder styr på brugerne. Og når jeg siger "konstruere" mener jeg helt fra bunden opbygge nogle klasser som tilføjer eller fjerner brugere efter behov. Personligt ville jeg nok bygge logikken med noget server side XML, men verden er åben og du bestemmer selv. Logikken skal så naturligvis også have et interface til at modtage og sende data til klienterne.

På klientsiden skal du så lave dine kald til serveren når brugeren flytter rundt. Det kan vel gøres supersimpelt ved kun at supplere navn, x-, og y-position til serveren.
Du skal også på klientsiden bygge nogle klasser/metoder til at holde styr på alle de andre personer som kommer ind. Det er relativt simpelt med attachMovie-metoden, men det kunne jo være sjovt hvis der var forskel på de mc'er der blev attachet. F.eks. kunne jeg godt tænke mig min avatar havde nissehue på - det skal du så evt. også tage hensyn til klient-side. Klientsiden skal jo så også kunne modtage (eller selv spørge?) efter listen med andre brugere som er på lige nu. Men det lyder til at du allerede har konstrueret den del af det.

Jeg tænker selv "Remoting" hvis det skal være helt godt, altså hvis du vil skabe nogle sockets du kan sidde og lytte på. Så får du mere rå og ligetil data både ud og ind af din applikation - og det lyder det jo som om du har det godt med.

Hvis du alligevel på et tidspunkt bliver træt af at skulle lave det hele selv, så giv de multi user servers jeg nævner ovenfor et kig. Der er jo en grund til at de er blevet lavet og at de er både open source og kommercielle succeser. Du er ikke den første der har villet lavet det du vil - og folk der er knap så hardcore til at programmere som du øjensynligt er, vælger som regel den "nemme" løsning: at trække på andres erfaringer, bruge deres produkt og kun bruge den udviklingstid det kræver at sætte sig ind i deres API'er. Det er nu lidt mere trygt at træde i fodspor der allerede er sat og undgå den mio. fejl man uværligt selv løber ind i hvis man begynder forfra ;)

Held og lykke med det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester