Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 23.09.2005, 17:34 Titel: Variablenverschlüsslung? |
|
|
Hallo Leute.
Angenommen ich habe meine Variablen so gemacht, um sie in eine Variable zu bekommen:
Code: | ubertragen=sp(nummer).x+sp(nummer).y*10000+sp(nummer).leben*100000 |
Wie bekomme ich dann die x koordinate, die y koordinate und die Leben raus? |
|
Nach oben |
|
|
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 23.09.2005, 20:17 Titel: |
|
|
sorry... ich kenn mich da jetzt ÜBERHAUPT nicht aus... kannst du das bitte nochmal posten? (bin ich der einzige ders ned checkt?) |
|
Nach oben |
|
|
Devilkevin aka Kerstin
Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 23.09.2005, 21:01 Titel: |
|
|
@psygate: Also ich kapiers ...
Wie stellst du dir das bitte vor? Ich sehe da theoretisch und matematisch keine Lösung
Ich würde jede Variable einzeln Verschlüsseln _________________ www.piratenpartei.de |
|
Nach oben |
|
|
Lutz Ifer Grillmeister
Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 23.09.2005, 21:08 Titel: |
|
|
ich nehme stark an, du möchtest mehrere werte in eine variable schreiben, in dem du die werte mit verschiedenen 10er potenzen multiplizierst.
oder einfach:
Code: | ergebnis = (variable1 * 1) + (variable2 * 1000) + (variable3 * 100000) |
seh ich das richtig?
du bekommst die werte wie folgt zurück:
Code: |
variable1 = (ergebnis) mod 1000
variable2 = (ergebnis - variable1 * 1) mod 1000000
variable3 = (ergebnis - variable2 * 1000)
|
ich hoffe, das ist verständlich.
AAAAAAAAAAAAaaaaber:
das ganze funktioniert nur theoretisch - computer speichern werte a) in Dualer Form (also nicht im 10er-System sondern im 2er-System) und b) werden so große Zahlen, wie deine Ergebnisse in Gleitkommadarstellung gespeichert ( also: die ersten was-weiß-ich-nicht-wievielen Ziffern, und wo das Komma hin muss - 5,4e3 wäre zum Beispiel die Zahl 5400 - 5,4 mit dem komma drei weiter rechts), was aber nochmal ne gewisse ungenauigkeit bedeutet.
Wenn ich dir nen rat geben darf: speichers anders.
mir will nämlich ehrlichgesagt auch nicht so recht in den kopf, was daran jetzt verschlüsselt sein soll. zugegeben, nach speicherung in datei lässt sich der wert nicht mehr ganz so einfach direkt auslesen, aber der aufwand, durch vergleichen von speicherständen auf die richtige stelle zu kommen, ist minimal.
Teuflische Grüße
Lutz Ifer |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 23.09.2005, 21:13 Titel: |
|
|
Na ja, der springende Punkt ist, das man übers Netzwerk nicht so viel übertragen kann, ohne das es laggt wie sau. Also mach ichs so!
Kann man das mit Mod in FB einfach eintragen? |
|
Nach oben |
|
|
d.j.peters Gast
|
Verfasst am: 24.09.2005, 00:29 Titel: |
|
|
Wenn es noch nicht gesagt wurde.
Bei der Art Deiner "Kompremierung" darf x und y nie negativ sein.
Es ist auch fraglich ob sich es lohnt 4 oder besser direkt 6 Bytes zu übertragen.
Grüsse Joshy
Code: | option explicit
const numofplayers = 10
const lastplayer = numofplayers -1
type SPIELER
x as short
y as short
leben as short
transvalue as integer
end type
dim as SPIELER players(numofplayers)
dim as integer i,tmp,x,y,leben
for i=0 to lastplayer
with players(i)
.x =rnd * 1000
.y =rnd * 1000
.leben=rnd * 5
.transvalue = .leben * 1000000 + .y * 1000 + .x
print "player:";i , .x , .y, .leben
end with
next
print
for i=0 to lastplayer
with players(i)
tmp = .transvalue
leben = tmp \ 1000000
tmp = .transvalue - leben * 1000000
y = tmp \ 1000
x = tmp - y * 1000
print "player:";i,x,y,leben
end with
next |
|
|
Nach oben |
|
|
marzec
Anmeldungsdatum: 13.10.2004 Beiträge: 267
|
Verfasst am: 24.09.2005, 11:43 Titel: |
|
|
die menge der übertragenen datein hat nichts mit lag zu tun. lag wir bestimmt durch die art deiner verbindung, wieviele jumps es bei diversen weiterleitungen machen muß, die länge der leitung etc. etc. _________________ Yagl - yet another gameprogramming library |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 24.09.2005, 13:07 Titel: |
|
|
@DJPeters:
Ich hab mir auch gedacht, ich teile einfach die Variablen durch 10000 oder was auch immer, und dann hab ichs. Aber: Angenommen ich übertrage 1 und 99, teile dann 199 durch 100, dann kommt ja 2 raus, nicht 1. Das könnte man zwar dadurch bekämpfen, das man immer eine 0 zwischen die einzelnen Zahlen macht, dadurch würde aber die Variable so groß werden, das sie kein Integer mehr wäre(glaube ich zumindest).
Das das lag an der Verbindung liegt stimmt, aber wenn es über DSL laggt(und nebenbei manchmal falsche Daten überträgt), aber übers Heimnetzwerk klappt, dann ist denke ich irgendwas falsch. Ich poste hier einfach mal den Code, wäre schön wenn mir einer den Fehler, bzw. Verbesserungsmöglichkeiten sagen könnte:
http://fb.exp-soft.de/fbnp/?view=51 |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 24.09.2005, 13:30 Titel: |
|
|
Dann schreib halt
Code: |
wasweissich = 199 mod 100
|
jb |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 24.09.2005, 14:57 Titel: |
|
|
Aber wenns, wir marzec sagt, gar nicht daran liegt, dann hilft das auch nicht... |
|
Nach oben |
|
|
marzec
Anmeldungsdatum: 13.10.2004 Beiträge: 267
|
Verfasst am: 24.09.2005, 15:14 Titel: |
|
|
in einem lan ( wie z.B. deinem Heimnetzwerk ) bewegen sich die pings in bereichen von meist max. 10ms. übers netz, egal ob jetzt 56k, dsl oder xdsl beginnt das ganze von 40ms bis einige sekunden. der ping innerhalb eines lans ist dabei relativ konstant da hier nix von jemanden weitergeleitet werden muß. im inet is das anders, packete müssen an bestimmten nodes in andere subnetze eingespeist werden, was bei der größe und der anzahl der teilnehmer natürlich auswirkungen auf die verzögerungszeit hat. auch zu bedenken sind physikalische übertragungsgeschwindigkeiten die auch nicht unbeschränkt sind.
vergiss das "verschlüsseln" oder besser packen deiner daten. was du brauchst ist ein algo der diese verzögerungen ausgleicht. suche nach quake 3 networking, diese methode ist recht ideal für echtzeit geschichten. _________________ Yagl - yet another gameprogramming library |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 24.09.2005, 15:19 Titel: |
|
|
Oder mal ne ganz andere Idee, steck einfach alle Variablen in einen String, schau dir dazu mal MKS$ zB an.. das könnte dir helfen. Das dürfte die einfachste Methode sein wenn du nicht auf externe Quake-Libs zurückgreifen willst. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
marzec
Anmeldungsdatum: 13.10.2004 Beiträge: 267
|
Verfasst am: 24.09.2005, 18:45 Titel: |
|
|
http://www.bookofhook.com/News/Quake3NetworkingModelExpl.html
das ist lediglich ein artikel über die innerein der Quake 3 networking engine. beschreibt recht gut wie man für schnelle spiele lag bekämpfen und aussmoothen kann. von einer library hab ich nichts gesagt.
die sache mit den strings:
überleg mal: 10 benötigt 1 byte binär dargestellt. als string brauch ich dafür 2 byte. nicht wirklich eine verbesserung imo. _________________ Yagl - yet another gameprogramming library |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 24.09.2005, 19:06 Titel: |
|
|
hm, den artikel les ich mir dann auch ma durch sry
was ich mit string meinte is, das wenn er zB 30 integer-zahlen hat, das er die nicht als 30 integerzahlen sondern als ein 90-byte-string durchgibt. Genau die umformung macht MKS$ ja schließlich, oder?
Wenn er nur werte von 1 bis 10 hat sollte er die sowieso als byte und nicht als integer speichern.. das kanner dann mit chr$ auch als string mitsenden. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 24.09.2005, 21:33 Titel: |
|
|
Also tut mir leid, aber ich versteh des englisch nicht so gut. Das einzige was ich verstanden habe, ist, das irgendwie die Spieldaten, die man braucht, an den Server gesendet werden, und der dann irgendwie was andere schickt oder so. Aber so richtig hab ich das nicht verstanden. Gibts da vielleicht auch ne Deutsche beschreibung? |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 24.09.2005, 22:54 Titel: |
|
|
und hinterher doch nix verstanden _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
marzec
Anmeldungsdatum: 13.10.2004 Beiträge: 267
|
Verfasst am: 24.09.2005, 23:46 Titel: |
|
|
deutsches zum thema game networking gibts leider nicht ( kaum, nix brauchbares ). english lernen soll helfen heh _________________ Yagl - yet another gameprogramming library |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 28.09.2005, 13:29 Titel: |
|
|
Also ich versteh nur Bahnhof.
Das einzige was ich verstanden habe, ist das irgendwie nur Updates gesendet werden, und das hab ich in meinem Code ja auch so gemacht.
Ach ja, zu Google:
"Des Klienten empfangen Logikblutgeschwüre unten:" |
|
Nach oben |
|
|
tilli
Anmeldungsdatum: 10.09.2005 Beiträge: 73
|
Verfasst am: 29.09.2005, 13:52 Titel: |
|
|
Moin allerseits,
Wenn nur eine Variable übertragen werden soll, kann man auch so vorgehen:
Code: | type byte4
union
all as integer
singel(0 to 3) as byte
end union
end type
dim value as byte4
value.all = 1
? value.all
? value.singel(0),value.singel(1),value.singel(2),value.singel(3)
value.all = 4453615
? value.all
? value.singel(0),value.singel(1),value.singel(2),value.singel(3)
sleep
|
Nur als Vorschlag - eine Unit kann man vielleicht auch als Text durchziehen ... Units sind in jedem Fall eine Nette kleine Variante...
Vielleicht bringt auch der Int64(=longinteger) etwas - da sollten 8 bytes zur Verfügung stehen.
CU2
Tilli |
|
Nach oben |
|
|
|