Button Zentrieren - Let's Game Dev

Sdílet
Vložit
  • čas přidán 26. 08. 2024
  • Mein Kanal: bit.ly/LetsGame...
    bit.ly/LetsGame...
    ----Mehr Coole Infos ----
    Buchempfehlungen:
    Manchmal besser und schneller als Google:
    bit.ly/JavaKurz...
    Über den Aufbau von Videospielen und der Mathematik dahinter:
    bit.ly/GameEngi...
    Zum Lernen von OpenGL (3D Programmierung):
    bit.ly/OpenGLSu...
    2D und 3D Spiele in Java:
    bit.ly/KillerGa...
    Wie man eine Story und Charaktere aufbaut:
    bit.ly/VideoGam...
    Kostenloses Java ebook von Galileo:
    openbook.galile...
    ---------------------------------
    Kamera: Canon 600D + Magic Lantern: bit.ly/600_D
    Mikro: Zoom H1 (Also wenn ich's mal zutze^^): bit.ly/Zoom_H1A
    Schnitt: Magix Video Pro X4

Komentáře • 64

  • @DerNivel
    @DerNivel Před 10 lety

    dein intro ist immer noch das beste :D

  • @saladoc311
    @saladoc311 Před 10 lety +2

    Prinzipiell ist das ganze richtig, Divisionen sind teurer als Multiplikationen. Aber wenn wir davon ausgehen, dass du bei den Pixelgrößen eh mit int arbeitest ist die * 0.5 Methode umständlicher. Ein optimierender Compiler wird nämlich eine division durch 2 durch einen 1-Bit-Rechtsshift ersetzen was so ziemlich die billigste Rechenoperation ist, die man machen kann. D.h. in C(++) könnte man einfach xPos = (fensterBreite + buttonBreite) / 2 oder explizit, wenn man dem Compiler nicht vertraut, (fensterBreite + buttonBreite) >> 1 verwenden.

  • @Theosalik
    @Theosalik Před 10 lety

    Sehr gut erklärt!

  • @internetceo
    @internetceo Před 10 lety

    Ich mag deinen Videostil! Hau ruhig mal mehr Content raus :D

  • @LetsGameDev
    @LetsGameDev  Před 10 lety +1

    Ein Kommentar für unsere Bit-Shifter:
    besonders bei UI anpassungen empfiehlt sich das Big-Shifting nicht.
    1. Es ist schwerer zu lesen.
    2. wenn mann dann von 0.5 plötzlich auf 0.4 wechseln muss, dann muss man das >>1 plötzlich eh kicken.
    3. die 0 bis 1 darstellung ist gerade durch ihren Normierungscharakter einfacher anzuwenden

  • @timo-98
    @timo-98 Před 10 lety

    Super, habe alles verstanden!

  • @FelkCraft
    @FelkCraft Před 10 lety

    Diese Grundlage hat scheinbar vielen Leuten gefallen, das ist schön, aber kommen denn auch wieder anspruchsvollere Themen? :)

  • @N1n35-42
    @N1n35-42 Před 10 lety

    Schön erklärt, dennoch sollte bedacht werden, dass es sich hier um UI-Programmierung handelt. Das bedeutet, dass diese Berechnung nur einmal durchgeführt werden und dann die Position des Elementes feststehen sollte. Da aber meist nicht sehr viele UI-Elemente vorhanden sind (dies würde auch die Übersichtlichkeit stark beeinträchtigen) ist der Performance-Gewinn (Ob dieser überhaupt minimal vorhanden ist, ist eine ganz andere Frage) zu gering um diese Schreibweise zu rechtfertigen. Desweiteren geht das auch auf Kosten der Lesbarkeit des Codes und wenn man nachträglich nur eine Seite der Berechnung ändern möchte ist dies auch nicht möglich ohne die Gleichung wieder in ihren ursprünglichen Zustand zu versetzten. Den einzigen Vorteil den ich da sehe ist, dass man weniger Tippen muss. Aber ob es sich dafür wirklich lohnt..

  • @hoodwatcher8496
    @hoodwatcher8496 Před 10 lety

    In Programmiersprachen ist das Ganze viel einfacher als in HTML bzw. in CSS. Da arbeitet man dann mit Prozentangaben oder mit dem bekannten "margin:0 auto;" wobei sich "auto" auf den Abstand links und rechts bezieht und sich dieser ebenso automatisch der Bildschirmbreite anpasst. Ähnlich wirds dann erst, wenn man das Element absolut positioniert. Dann bekommt das Element ein "left:50%;" und ein "margin-left:- [elementbreite]". Das ist aber dann auch wieder blöd, wenn das Element keine feste Breite hat, sondern ebenfalls per Prozent abhängig von der Bildschirmbreite ist. Programmieren ist manchmal echt einfacher ^^

    • @omniskop
      @omniskop Před 10 lety

      Du kannst noch dem HTML Element das Attribut align="center" geben und es im CSS mit
      vertical-align: middle
      versuchen, dass klappt aber auch nur manchmal.

    • @hoodwatcher8496
      @hoodwatcher8496 Před 10 lety

      Ja, aber ich benutze eigentlich nie solche Attribute in HTML-Tags. Du bist damit nämlich viel unflexibler. Da ich sowieso mit nem CMS ( Typo3 ) arbeite und dafür Seitenvorlagen erstelle, sind dann solche Sachen nicht gut. Du musst ja allgemeine Seitenvorlagen machen. Meistens ist das nur Startseite und eine Unterseite. Im Typo3 kannst du dann den Inhaltselementen auch so Positionierungen mitgeben. Diese macht Typo3 aber in Form einer Class und nicht mit einem Attribut. Wenns dann gar nicht geht, muss man auch mal auf Javascript bzw. JQuery zurückgreifen und damit einzelne Sachen den Elementen mitgeben, ist aber oft ungeschickt.

  • @KemirenDesigns
    @KemirenDesigns Před 10 lety +1

    Wäre es nicht in einem ganzzahligem Koordinaten-System (Müsste man ja wegen absoluten pixelzahlen eh haben) nicht schneller, per Bit-Shifting zu arbeiten? also zb:
    (screen.w - btn.w) >> 1

  • @hhund8214
    @hhund8214 Před 10 lety

    Was ist der Unterschied zwischen "C" und "C++" welche Vorteile bietet das eine gegenüber dem anderen?
    Umd was würdest du eher bevorzugen

    • @thock_enjoyer
      @thock_enjoyer Před 10 lety

      www.lmdfdg.at/?q=was+ist+der+unterschied+zwischen+c+und+c%2B%2B

  • @Giga4ever
    @Giga4ever Před 10 lety

    Das mit dem /2 langsamer als 0.5 stimmt nicht. Wenn du durch 2 teilst werden nur die bits verschoben. Rechnest du mal 0.5 wird die Zahl erst nach double und dann zurück nach integer umgewandelt. Das gilt aber nur in diesem speziellen Fall, wo do einen Integerwert durch einen 2^irgendwas teilst.

  • @mr.gamescripter6591
    @mr.gamescripter6591 Před 9 lety

    Cool, danke :)

    • @mr.gamescripter6591
      @mr.gamescripter6591 Před 9 lety

      Hab es auf eine andere Prog. Sprache übertragen und es funktioniert suuuuuper!!! Nach dieser Formel hab ich schon sooo lange gesucht! DANKE!!!

  • @martin_pryor2989
    @martin_pryor2989 Před 10 lety +7

    Tut mir leid aber das war das 1. wirklich langweilige Video das ich von dir gesehen habe. Das war viel zu simpel :/

  • @thock_enjoyer
    @thock_enjoyer Před 10 lety

    Im Corona SDk kann man einfach x / 2 und y / 2 nehmen da dort die Sprites automatisch zentriert werden.

    • @thock_enjoyer
      @thock_enjoyer Před 10 lety

      x = display.contentCenterX / 2
      y = display.contentCenterY / 2
      Edit
      btn.x = display.contentCenterX / 2
      btn.y = display.contentCenterY / 2

    • @thock_enjoyer
      @thock_enjoyer Před 10 lety

      DizzyNiho oder halt * 0.5

    • @etaxi341
      @etaxi341 Před 10 lety +1

      *Besserwisser Modus activated*
      btn.x = display.contentCenterX * 0.5
      btn.y = display.contentCenterY * 0.5
      *Besserwisser Modus deactivated* :DD

  • @xN811x
    @xN811x Před 10 lety

    Könntest du mal erklären, was ein Vector ist?

    • @hanspeter2210
      @hanspeter2210 Před 10 lety +3

      wie heißt es in "ich - einfach unverbesserlich" so schön
      Mein Name ist Vector, eine mathematische bezeichnung für einen Pfeil mit einer fest definierten länge und richtung.
      Oder meinst du vector als eine art dynamisches array?

  • @falkusmoino486
    @falkusmoino486 Před 10 lety

    Hallo Tom , Ich weiß ja nicht ob du das kennst aber wenn ja ist Patrick Washington DC´s Java DVD zu empfehlen , ist auf English und ist jetzt auch nicht so auf Spiele Programmierung spezialisiert .. ist soetwas trotzdem hilfreich für einen Anfänger ? MfG Falk :)

  • @Morre1998
    @Morre1998 Před 10 lety +1

    Hey Tom, ich fange am Montag bei einer Firma an als Schul-Praktikant als QA-Manager was muss ich dort machen :( Bitte schnell antworten habe mich vorher nicht Infomiert ^^

  • @Fledermaus8
    @Fledermaus8 Před 10 lety

    Kannst du bitte mal ein Video zur Wahl der Programmiersprache machen???

    • @thock_enjoyer
      @thock_enjoyer Před 10 lety

      Ist doch egal welche Programmiersprache du benutzt solange du eine gute Engine/Library hast.

    • @Fledermaus8
      @Fledermaus8 Před 10 lety

      DizzyNiho Ich kann mich einfach nicht entscheiden. Außerdem möchte ich mir dann ein gutes Buch zur Sprache kaufen, das auch auf Spieleprogrammierung eingeht.

    • @thock_enjoyer
      @thock_enjoyer Před 10 lety

      Fledermaus8 Ich programmiere in C# und Lua. Ich kann dir Lua empfehlen da es leicht zu lernen ist und es viele Engines und Librarys zum scripten benutzen z.B CryEngine, Corona SDK... Das einige Problem ist das es so gut wie keine Deutschen Bücher gibt du musst also gut Englisch können. Wenn du für PC entwickeln willst empfehle ich Love2D für Mobile Geräte Corona SDK.
      Links:
      www.lua dot org
      love2d dot org
      coronalabs dot com

    • @Flehwah
      @Flehwah Před 10 lety

      dazu gibts schon ein video ^^

    • @Fledermaus8
      @Fledermaus8 Před 10 lety

      Flehwah Echt? Wie ist der Link davon?

  • @hanspeter2210
    @hanspeter2210 Před 10 lety +1

    mal ein halb xD
    ne mal ehrlich, ich kann doch wohl von nem aktuellen compiler erwarten, dass der wenn ich i=i+1 schreibe, der keine 32 bit addition ausführt, sondern einen viel kürzeren inkrement befehl verwendet. Gleiches bei anderen Rechenarten
    Ach ja, und von wegen optimieren, das ist performanter...
    Soll Intel doch einfach nen schnelleren Prozessor bauen!

    • @hanspeter2210
      @hanspeter2210 Před 10 lety

      Andreas Eckmayr
      erzähl das mal Spieleentwicklern, die vertreten leider meine leicht ironische Ansicht. Es ist nämlich leider ein Lösung, keine gute, aber eine Lösung

  • @RepublikSivizien
    @RepublikSivizien Před 10 lety

    Es geht noch schneller: (wScreen-wButton)>>1 (also Right-Shift).

  • @volkerking7634
    @volkerking7634 Před 9 lety

    shiftright
    geht noch schneller
    +/- 1px bei einem ungeraden Button Pixelmass. Ist wurscht sieht keiner!

  • @TheKlikluk
    @TheKlikluk Před 10 lety

    Sehr cooles Video dieses mal, mit deinem gelaber rund um den F****n Button...

  • @The4Bawdy
    @The4Bawdy Před 10 lety

    was ist mit Hearteater

  • @Flehwah
    @Flehwah Před 10 lety

    man KÖNNTE es noch beschleunigen indem man mit nem Bitshift dividiert :DD

    • @Flehwah
      @Flehwah Před 10 lety

      uuund wie es aussieht war schon jemand schneller xD

    • @hanspeter2210
      @hanspeter2210 Před 10 lety

      stimmt, aber ein schlauer compiler sollte sehen, dass das durch zwei rechnen schneller durch einen shift zu realisieren ist

  • @MrDavibu
    @MrDavibu Před 10 lety

    Du hast vergessen das du das ganze noch runden musst.
    Ohne einen Integer Wert bringt das ganze nicht ;)

    • @MarvinBlum
      @MarvinBlum Před 10 lety

      Nicht wenn du sowieso mit ints rechnest. Und normal hast du ja die Auflösung als Ganzzahlen ;)

    • @MrDavibu
      @MrDavibu Před 10 lety

      Du rechnest aber mit einer Float Zahl.
      Das läuft meines Wissens garnicht.
      Wenn ich mich nicht total täusche wird da ne Exception geschmießen.
      2. Man berrechnet immer schlechte Eingabe-Werte das ist die Pflicht eines Programmieres.

    • @MarvinBlum
      @MarvinBlum Před 10 lety

      [gelöscht]

    • @danielkreitsch
      @danielkreitsch Před 10 lety

      MrDavibu In Java und C# ist das auf jeden Fall nicht so, da wird bei Integer automatisch gerundet.

    • @Varibam
      @Varibam Před 10 lety

      In dem gegebenen Beispiel handelt es sich um sogenannten "Pseudocode" der auschließlich der Erklärung dient. Streng genommen fehlen nämlich auch noch die Seikola am ende der Codezeile, using bzw. include Anweisungen etc. .. Was die Auflösung angeht. Soweit ich informiert bin verwenden alle Engines und Frameworks int werte. Dein Monitor kann ja keine halben Pixel darstellen. :) Bei Unity 3D und XNA kann ich sagen das es ohne Typecast funktioniert.

  • @psy.wordex
    @psy.wordex Před 8 lety

    sollte eig alles logisch sein^^