Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ugoessner

Frischling

  • »ugoessner« ist der Autor dieses Themas

Beiträge: 52

Wohnort: Wedemark OT-Mellendorf

Beruf: Systeminformatiker

  • Private Nachricht senden

1

11.10.2015, 20:20

Variablentyp für Lebensenergie

Hallo Leute,

allgemeine Frage zu Spieleentwicklung:
Ich meine mal, dass das eine unsigned Variable und je nach dem wie hoch man den Wert setzen will eine unsigned char oder unsigned short variable sein sollte weil toter als tot ist quatsch also kleinste Lebensenergie=0.
Was meint ihr dazu?

Gruß Uwe.
#define __miniMAL 0x00

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

11.10.2015, 20:28

Das macht dann die Überprüfung ob der Spieler tot ist komplizierter. Bei einem unsigned musst du, bevor du Lebensenergie abziehst gucken, ob die nicht größer ist, als die noch vorhandene.
Bei einem normalen Integer ists ein einfaches <= 0 und fertig.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

11.10.2015, 20:29

Klingt erstmal vernünftig, allerdings haben reine unsigned Werte fiese Eigenheiten:
(50-60) > 0
Dank sei Underflow. Willst Du nicht haben.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

ugoessner

Frischling

  • »ugoessner« ist der Autor dieses Themas

Beiträge: 52

Wohnort: Wedemark OT-Mellendorf

Beruf: Systeminformatiker

  • Private Nachricht senden

4

11.10.2015, 20:37

Einen schönen Dank für die Antworten.

Das habe ich mir schon fast gedacht, das die Abfrage Lebensenergie<0 dann nicht funktionieren würde.
Ich hatte da erst gedacht, das der Compiler das so übersetzt, dass das signed-Bit im Bedingungsregister abfragt wäre zumindest sinnvoll.
#define __miniMAL 0x00

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

11.10.2015, 20:52

Nein, das wäre ja falsch. Unsigned ist immer positiv und somit die Abfrage < 0 immer false. Alles andere wäre unlogisch, wenn auch technisch möglich.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

6

11.10.2015, 23:36

Aus der Sicht "allgemeiner Spieleentwicklung" ist das für mich erstmal kein Quatsch. Vielleicht dient alles <0 zur Kostenberechnung bei der Wiederbelebung? Könnte ja sein.

Aus reiner Entwicklersicht klingt das Ganze nach "Don't optimize prematurely". Wie schon aufgezeigt wolltest du hier optimieren, hättest allerdings ungewollt Problemzonen verursacht, die du vorher nicht gehabt hättest. Sorgen um den Speicher musst du dir bei einer einzigen int-Variable wahrscheinlich noch nicht machen, oder?
WIP Website: kevinheese.de

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

12.10.2015, 06:38

Den richtigen Datentyp zu wählen ist an sich erstmal keine voreilige Optimierung, sondern das, was man immer tun sollte. Dennoch bin ich was Integer-Typen angeht etwas pragmatisch. Char und Short brauchen durch Alignment in der Praxis meist denselben Speicher wie ein Int und die Einschränkung auf den Wertebereich ist meist wenig hilfreich. Unsigned hat durchaus eine logische Berechtigung, ist aber auch durchaus mit seinen eigenen Problemen behaftet. (auto i=some_unsigned; i>0; --i)
Meist sehe ich daher in unsigned Typen relativ wenig praktischen Nutzen und eher eine Stolperfalle. Gerade in Zeiten von auto ist aus dem Variablennamen allein oft gar nicht mehr automatisch ableitbar für den Programmierer, was genau da für ein Typ irgendwo verwendet wird. Nur ist das bei unsigned eben schnell mal ein Problem es nicht zu wissen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

12.10.2015, 10:21

Gute Faustregel: Wenn es keinen expliziten, technischen Grund gibt, etwas anderes zu benutzen, dann nimmt man int, die Formulierung der Definition von int im C++ Standard selbst legt das schon nahe.. ;)

Zitat von »N4527 §3.9.1/2«

[...] Plain ints have the natural size suggested by the architecture of the execution environment; the other signed integer types are provided to meet special needs.

Werbeanzeige