Ich war so ca. bei 60 Zeilen der Erklärung des Problems als ich mir dachte, die Schwarte liest eh keiner, also hier in kurz, falls was unklar ist bitte nachfragen...
Ich programmier ein Multiplayer spiel.. mySQl... Hibernate für presitenz und verwaltung der Spieler- und Item- Klassen Instanzen läuft über hashMaps im Webapp...
Problem...
der Spieler bewegt sich, andere Spieler und Items kommen in "Reichweite" und müssen ins Spielfeld geaddet werden, andere "Verschinden", sind ausser "Reichweite" und müssen removed werden.
Normal würde ich hierzu die DB abfragen welcher user/itam
x < myX +distanz && x > myX -distanz && y < myY +distanz && y > myY -distanz
.. also in "Reichweite" ist... nur würde das bei 1000 Usern und einer tickZeit von 100ms nach Adam Riese 10.000 querys pro sekunde bedeuten... was.. recht... viel ist daher hatte ich es bisher so gemacht das Daten via hiberNate in KlassenInstanzen geladen werden und von Java aus verwaltet.
Also Daten der Tabellen users, positions und players liegen Java gesammelt in hashMaps vor undzwar mit der userID als jeweiligem Key und der Instanz der entsprechenden Klasse als Value.
Wie ich für mySQL den entsprechenden SQL querry schreibe weiss ich, nur 10.000/s querys werden die DB killen...
Was ich nicht weiss wie man für die Klassen einen entsprechenden Filter schreibt der mir dan nur eine List der userID´s ausgibt welche sich in besagtee "Reichweite"
befinden...
Hat da jemdn die Zündende Idee für mich oder könnte mir mit einem Link erfreuen, ich habe bereits nach SpieleEntwicklungstips gesucht aber anscheinend nicht die korrekten begriffe gewählt... auch die richtige bezeichnung für so einen filter (es gibt da bestimmt eine) würde mir helfen...
danke im vorraus
Ich programmier ein Multiplayer spiel.. mySQl... Hibernate für presitenz und verwaltung der Spieler- und Item- Klassen Instanzen läuft über hashMaps im Webapp...
Problem...
der Spieler bewegt sich, andere Spieler und Items kommen in "Reichweite" und müssen ins Spielfeld geaddet werden, andere "Verschinden", sind ausser "Reichweite" und müssen removed werden.
Normal würde ich hierzu die DB abfragen welcher user/itam
x < myX +distanz && x > myX -distanz && y < myY +distanz && y > myY -distanz
.. also in "Reichweite" ist... nur würde das bei 1000 Usern und einer tickZeit von 100ms nach Adam Riese 10.000 querys pro sekunde bedeuten... was.. recht... viel ist daher hatte ich es bisher so gemacht das Daten via hiberNate in KlassenInstanzen geladen werden und von Java aus verwaltet.
Also Daten der Tabellen users, positions und players liegen Java gesammelt in hashMaps vor undzwar mit der userID als jeweiligem Key und der Instanz der entsprechenden Klasse als Value.
Wie ich für mySQL den entsprechenden SQL querry schreibe weiss ich, nur 10.000/s querys werden die DB killen...
Was ich nicht weiss wie man für die Klassen einen entsprechenden Filter schreibt der mir dan nur eine List der userID´s ausgibt welche sich in besagtee "Reichweite"
befinden...
Hat da jemdn die Zündende Idee für mich oder könnte mir mit einem Link erfreuen, ich habe bereits nach SpieleEntwicklungstips gesucht aber anscheinend nicht die korrekten begriffe gewählt... auch die richtige bezeichnung für so einen filter (es gibt da bestimmt eine) würde mir helfen...
danke im vorraus