Archiv der Kategorie: Unsinn

Meine Aufgabe heute: Erklären Sie das Arrangement von Bohemian Rhapsody am Beispiel des Bieres

Aufgabenstellung

Ein Bekannter von mir gab mir die Aufgabe das Arrangements von Bohemian Rhapsody exemplarisch anhand des Bieres zu erklären.

Ansatz – Approach

  • Analyse des Originals
  • Bestimmung des Zielkanals –> YouTube
  • Heraushören des Arrangements des Originals
    • Intro
    • Ballade
    • Solo
    • Opernteil
    • Hardrockteil
    • Outro
  • Heraushören der einzelnen Instrumentenspuren
  • Einrichten der DAW in Form eines Cubase-Projektes
    • Programmierung der MIDI Instrumente
      • Klavier
      • Schlagzeug
    • Festlegung der Tempospur
      • 72 bpm
      • 137 bpm
      • 90 – 60 bpm
    • Aufnahme der Audiospuren
      • Bass
      • Solo-Gitarren
      • Riff-Gitarren
      • Gesangsspuren
    • Home-Mixing und -Mastering der Spuren
    • Ausleitung als WAV-Datei
  • Einrichtung eines Video-Editor-Projektes
    • Aufnahme von Handy-Videospuren vor einer Greenwall (Galaxy S9)
    • Schnitt und Arrangement der Videospuren
    • Produzieren des Videos
  • Upload zu YouTube

Lösung – Solution

tempospur.PNG
Die Tempospur zeigt die unterschiedlichen Tempos zwischen 72 bpm, 137 bpm und dem langsamer werdenden Ende (von 92 bpm bis 63 bpm)
Intro
=====
 Ist es ein Bierchen
 in meiner Fantasie
 Und macht mich sehr breit
 König der Hydrologie
 Führ es zum Hals
 Fühl das Gerstenmalz
 und zieeeeeeeeeeh
 Ich brauch nur Bierchen
 ich brauch keine Sympathie
 Weils wie Wasser läuft
 sich gut säuft
 bisschen viel
 schönes Spiel
 Doch dort wo das Bier fließt
 ist mir das egal - ich wills ich wills
 Papa killte ein Pils
 setztes an und trank es leer
 und nun hab ich keines mehr

Balladenteil
============
 Papa ich hatt' so nen Durst
 doch scheinbar war dir der jetz völlig Wurst
 Papa uhuuuhuuuu
 Ich wollte ein Bier
 doch du vernichtest es zu schnell
 was soll das
 lass es doch - lass es doch
 ich will doch nur auch eins1
 Zu spät schon alles leer
 ich geh schiffen in das Meer
 völlig durstig es ist schwer
 Machts gut Saufkumpanen
 ich muss jetzt gehen
 lass euch hinter mir zurück
 denn die Pflicht die ruft
 Papa uhuuhuuuuu
 ich such noch ein Bier
 Manchmal wünscht ich ich wär nie geboren

Soloteil
========
(Solo)

Opernteil
=========
 Ich sah die Silhouette einer Flasche
 geh schnell hin
 trink sie aus
 bevor sie bald weg ist
 denn wenn sie dann weg ist
 hast du keines mehr - oje
 Ich bin schneller, Ich bin schneller,
 Ich bin schneller, Ich bin schneller,
 Ich bin als du - gib mir das Pils
 Ich bin ein armer Mann ständig such ich Bier
 Er ist ein armer Mann ständig sucht er Bier
 doch keiner gibt ihm mal ein Bierchen schnelll her
 Helles Pils - dunkles Pils
 ich trink es was solls
 Er trinkt was solls
 und darauf ist er stolz
 lass ihn ruhig
 Er trinkt was solls
 und darauf ist er stolz
 lass ihn ruhig
 und darauf ist er stolz
 lass ihn ruhig
 Bier, Bier, Bier, Bier, Bier, Bier, Bier
 Die Pizzaria Mama Mia Pizzaria hat schon zu
 Der Belzebub, macht Heißhunger auf das Bier
 Das Bier
 Das Bier
 Das Bier

Hardrockteil
============
 So du denkst du lässt mich trocken sitzen und gehst
 So du denkst dass ich dass schon irgendwie versteh'
 Oh Baby - tu mir das nicht an baby -
 Geh einfach raus - geh einfach raus du sollst gehn

Outro
=====
 Ich trink auch mal Schnäppes - ich trink auch mal SChnäppes - ich trink auch mal Schnappes - und Bier

5 Dinge die man bei der Produktion von Ballermann-Hits beachten muss. Wie produziert man einen Ballermann Hit? Das Ballermann-Rezept …

Intention

Die wenigsten Musiker machen sich Gedanken über den kommerziellen Plastik-Pop, welcher für die Feiermeute auf Mallorca oder für die Apres-Ski-Macher im Schirm aufbereitet wird. Die Musik gilt als niveaulos und frivol, was die Urlaubsgedanken weg von Moral, Anstand und anderen Pflichten bringen soll.

Ich wollte mal die ganzen Meinungen aus den Foren verifizieren und habe mir wirklich erfolgreiche Ballermann-Hits vorgenommen, angehört und versucht meine persönlichen Schlüsse aus dem Material zu ziehen.

Was macht einen Ballermann-Hit aus? Ist er wirklich so primitiv, wie es manch einer vermutet?

Meine ersten drei Versuche

Wie die meisten Leser jetzt vermuten, benötigt man eine Musiksoftware wie Cubase als DAW mit einigen Software-Instrumenten oder „echten Hardwaresynthesizern“. Ich persönlich nutze ausschließlich Software-Instrumente (VST Instrumente), die ich in meiner DAW eingebunden habe. Die folgenden Softwareinstrumente kommen unter Cubase bei mir zum Einsatz

  • Groove Agent für den Beat
  • Presets von Sylenth1 für die Melodien und Euronsynth-Akkorden
  • Retrologue 2 für das Nachstellen von analogen Synthesizer-Sounds
  • Samples (Hey! Hou! Wooosh!!! usw…)
  • Einen Rauschgenerator (weißes Rauschen) für Riser-Sounds (also diese Wind-Woosh-Übergänge zwischen Song-Teilen)
  • Sidechain-Kompressoren für Bass und Riser-Sounds, damit die Kick möglichst unbelegt/frei und durchsetzungsfähig bleibt (habe ich noch nicht perfektioniert).

Hier meine Ergebnisse:

Platz 3 bei der Teilnahme am Recording.de Ballermann-Contest BSC22. Der Refrain kommt aus meinem „Wellerman Deutsch“-Video von Youtube was mittlerweile 2,6 Mio. Views und 1.000.000 Spotify Streams hat.
Mein Song: „Wenn ich Bier trink, dann bin ich froh“ mit Cubase Arrangement
Das Gejubel habe ich von einem Video der Fans der isländischen Nationalmannschaft entnommen

Schonmal ein guter Anfang. BPM und Melodien passen, habe noch keine mehstimmigen Harmonien und keinen Millenial Whoop reingesungen. Die Performance lässt auch noch etwas zu wünschen übrig.
Mikrofon: Mit einem SM-57 eingesungen, was ich hinter einem Pop-Schutz hatte

Hier ist noch etwas älterer Versuch mit einem anderem Lied:

Mikrofon: Mal mit den RHODE NT-1 eingesungen

Ein Rezept

Hier hatte einer das folgende Rezept veröffentlicht:

1. Da hätten wir die Geschwindigkeit. 
Sie ist wie alle Hits an einen bestimmten Herzrythmus des Menschen angelehnt. Und auch eine gewisse Kopfnickfrequenz muss eingehalten werden. Daher ist diese Art typischer Pop immer so um 125-130 bpm angelegt. 

2. Dann hätten wir sanfte Instrumente. 
Was sie machen, ist klassisches Songwriting. Wichtig ist, dass sie nicht experimentell sondern funktionell sind. Bei der Mucke gehts nicht um Sounds, sondern um gefällige Harmonie. 

3. Chords & Melodie (kein ACID-Geschranze, TB303-Riffs oder modulares Synthesizer-Gedudel….)
Ohne Harmonien gehts mal GARNICH.
Und hier dürften die meisten scheitern. Ein Hit schreibt man nicht mal eben einfach so. Hier sind absolut Kenntnisse von Harmonielehre und Melodiekomposition erfordderlich. Wer das nicht beherrscht.. soll Minimal machen. 

4. Text
Geht er nicht gut über die Lippen, – ist er zu lyrisch – zu verstrickt – zu künstlerisch – zu schicki micki, hat man verloren. Jeder kennt die Texte und das hat mehrere Gründe. Nicht weil sie dumm sind, sondern weil die Wort- und Satzstruktur und die Wortklänge in sich selbst stimmig sind und gut mit Zunge und Zähnen harmonieren. 

5. Produktion
Ist die Komposition im Kasten muss das ganze auch noch erstklassig klingen. Und zwar ausproduziert und perfekt gemischt. Das ist hier kein Rotz-Rock, sondern Hochglanz-Plastik-Pop. 

von Ari (scheint mittlerweile im Forum gesperrt zu sein)
  • Die folgenden Texte kommen gut an
    • Frivole bis hin zu obszönen Texten
    • Verbindung mit ausgelassender Feierei und starkem Alkoholkonsum
    • Geld egal / keine Kohle / ab ins Dispo / scheiss auf dein Geld usw …
    • Metaphern über Sonne, Palmen, Strand und Meer auf Mallorca
    • Je einfacher und absurder der Text, desto höher ist die Wahrscheinlichkeit die feierende Meute damit zu erreichen.
  • Einsatz von Risern, Swooshes und Reverse-Becken beim Übergang in eine anderen Part (z.B. in die Bridge oder den Refrain)
  • Durchsetzungsfähige Kick, oft mit Ducking-Bass (gerne Sägezahnbass)
  • Bass-Drops
  • Eurodance-Synthesizer die Sägezahn-Akkorde spielen
  • Döpp Döpp Döpp (oft genutzte Gesangshook, gerne im Chor mit einschlägiger Melodie)

Höre ich mir die „echten“ Ballermann-Hits mal an, stelle ich fest dass da i.d.R. doch mehrere Akkorde als nur C-Dur+Dominante(G)+Subdominante(F) und 120-130 BPM vorhanden sind… faszinierend ist, dass Mickie Krauses „Schatz schenk mir ein Foto“ sogar aus 9 Akkorden (mit Tonartwechsel) besteht. Es handelt sich aber ausschließlich um Dur- und Moll-Akkorde.

In fast jeder modernen Ballermann-Produktion sind die folgenden Elemente zu hören:

Beispiel: Schatzi Schenk mir ein Foto

Gemessen: 140 BPM (also kein 125 – 130 weil Herzschlagrythmus)

Tonart: A Dur / nach Tonartwechsel H Dur
Es handelt sich also nicht um C-Dur, wie es oft für Ballermann Hits behauptet wird.

Harmonien

Wenn man sie auf einer Gitarre nachspielt, hören sich die Harmonien fast so an, als seien sie einem spanischem Gitarrenlied entsprungen.

Intro

A, E, D, E

Bridge-Akkord

C#m

Strophe

2x (F#m, E, Hm)

Bridge Refrain (… hast du ein Foto oder hast du ne Nummer dabei)

Hm, F#m, C#m, F#m, Hm, F#m , D, Hm, E

Refrain (Schatzi schenk mir ein Foto….)

2x (A, E, D, E)

Bridge-Akkord

C#m

Wiederholung

Strophe, Bridge Refrain, Refrain, (jetzt kein Bridge Akkord), Bridge Refrain, Refrain

Tonartwechsel (… die Stühle in den Himmel… [Riser Sound Drums weg und wieder einblenden])

Refrain 2 Halbtöne höher (auf H, F#, E, F#) gesungen mit „La la la lalalala“ – und dann noch 3x normal

Outro

Bleibt auf H-Dur, endet mit Applaus und Gejubel Samples und einer Explosion auf dem letzten Bass-Drum-Hit (evtl. auch mit Bass Drop)

Fürchterlich uninstrumental aber sehr erfolgreich 🙂 . Wer also gerne als Ballermann-Star 300 Tage im Jahr auf der Bühne (oder auf einer Bierkiste) stehen möchte muss als Referenz mind. einen Ballermann-Hit landen. In allen Videos von Mickie akquiriert er haufenweise Frauen damit der frivole Textteil neben der Alkoholverherrlichung zur Geltung kommt

Mickies Produktionen

Ich habe ein YouTube-Video entdeckt, in dem Mickie bei XTREME SOUND in Köln ist:

Mickie bekommt bestimmt Vergünstigungen wenn er Werbung für XTREME SOUND macht 🙂 … er ist aber nur einer von vielen Chartplatzierern die von dieser Firma produziert wurden.

Auf der Website von XTREME SOUND findet man einen ganzen Haufen bekannter und unbekannter Künstler. Im Grunde hat alles den selben Sound/die selbe Lautheit. DJ Ötzi, Möhre, Almklausi u.v.m. stehen auf deren Liste – alles keine namenlosen Künstler.

Ohne die Songs von Xtreme Sound hätten die Deutschen wohl weniger zu feiern, denn das Studio allein steht für etwa dreiviertel aller Stimmungs-Hits.

Tipps der Macher hinter Mickies Hits

Zum Arrangement:

Seine Kompositionen reicht Pfeil mal unaufgefordert bei Tonstudios ein, mal wird er für Auftragsproduktionen für konkrete Künstler angefragt. Im Durchschnitt erreichen Xtreme Sound so Woche für Woche 20 neue Titel, von denen die allermeisten jedoch mangels Aussicht auf Erfolg nicht veröffentlicht werden. Um die 70 Songs produziert das Studio pro Jahr, wobei den Machern mit ihrer jahrelangen Erfahrung und dem Wissen um aktuelle Trends oft die optimale Kombination aus Künstler, Song und Produktion gelingt. Ein Riesenmarkt im nationalen Musikgeschäft. Mit ganz eigenen Regeln.

Stern Interview mit XTREME SOUND

Zum Text (Nummer 5) – Die Leute müssen sich den Ref. aufs T-Shirt drucken wollen…

„Beim Schlager ist die Melodie wichtiger und die Texte drehen sich mehr um die Themen Partnerschaft und Liebe. Bei Ballermann-Liedern ähneln sich viele Songs und haben einen schnellen Beat. Dafür kommt’s hier mehr auf den Text an.“ Gerade der Refrain muss so sein, dass die Leute sich wiedererkennen und damit identifizieren können. „Am besten ist er so geil, dass sie sich ihn aufs T-Shirt drucken lassen würden“, so Pfeil.

Stern Interview mit XTREME SOUND

Fazit

Ballermann-Hits bestehen fast ausschließlich aus Synthesizer-Klängen und Riser-Sounds, haben aber oftmals mehr als nur 3 Akkorde. Das ultimative funktionierende Rezept gibt es nicht. Der Sound und die Texte sind bei vielen Stücken ähnlich, da XTREME SOUND in Köln zwei Drittel der Ballermann-Stars produziert, mixt und mastered.

Mal abgesehen von der Produktion gehört ein natürliches Talent Menschen zu animieren dazu. Wer den Pausenclown in der Schule markiert hat, sollte damit gute Voraussetzungen mitbringen. Wer zusätzlich eine Gleichgültigkeit gegenüber der Tatsache hat, dass er ausschließlich vor betrunkenen Menschen spielen wird und viel harte Arbeit investieren möchte, ist hier richtig – obgleich die Erfolgschancen aufgrund zahlreicher Newcomer nicht besonders hoch sind. Mickie Krause hat z.B. für seine Videos 20 Strandschönheiten aufgegabelt und dazu animiert sich mit ihm zum Affen zu machen :-). Wer eher im stillem Kämmerchen Musik prodziert und Songs writet, wird nicht besonders weit kommen.


„.. auf Mallorca wird darüber entschieden, welche Lieder zum Hit werden…“

Pfeil von XTREME Sound Köln

Zitat aus dem Forum: „Wer woran scheitern möchte, ist jedem selbst überlassen. Fakt ist – diese Musikrichtung ist alles andere als einfach! „

.NET: Spionagetool / Tool was periodisch Screenshots erzeugt / Screenshot tool / Spy Tool

Terms of use – Nutzungbedingungen

Do not use this for illegal purposes. This is a free tool to demonstrate how you can spy third persons or just generate screenshots in a folder (maybe a netdrive).

Dieses Tool darf nicht für illegale Zwecke genutzt werden und dient lediglich der Demonstration von Prozessen, die komplett versteckt im Hintergrund und unentdeckt Spionageaktivitäten ermöglichen.

Warranty – Garantie

I promise that this file is absolutely virus free and will not damage anything or give data to third persons!
Ich verspreche dass dieses Tool absolut virusfrei ist und keinen Schaden am Rechner anrichtet, geschweige denn Daten an dritte Personen weitergibt.

Description – Beschreibung

A hidden tool shall generate periodic screenshots every minute (i.e on a net drive or the directory it has been started in) and be stopable remotely.
Ein unentdeckbares Tool generiert jede Minute periodisch Screenshots in dem Verzeichnis, in dem es gestartet wurde (z.B. auf einem Netzlaufwerk) und es auch zur Not gestoppt werden kann.

Approach – Ansatz

A hidden executed process is running in the background, which is not shown in the task bar and labeled as MS Office process in the Task Manager.
Ein versteckter Prozess gibt sich als Microsoft Office Anwendung aus und ist nicht im Taskmanager unter „Anwendungen“ auffindbar. Er wird nicht in der Taskbar angezeigt.

Prerequirements – Vorraussetzungen

  • .NET Framework
  • Someone can execute the process on a netdrive / Jemand muss die Exe am Netzlaufwerk vorher starten

Solution – Lösung

  • Download and unpack the following tool on a netdrive: ScreenshotTool
  • Double click the process (this will not damage s.th. on the computer!!!)
  • The tool is producing a screenshot every minute in the folder it has been started in.
  • To stop the tool, rename close_.txt to close.txt (otherwise a restart of the computer will stop the process and there is nothing pointing to it).

Fazit

On the screenshot you see the only hint to recognize the running tool. It is not shown in the Task Manager. Via Filesharing/Samba it is possible to spy other persons in a network without getting discovered by virus scans.

taskmanager

 

Code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.IO;

namespace screenshot
{
    public partial class Form1 : Form
    {
        // Die Dateien werden im Pfad erzeugt, wo die Exe gestartet wird
        public string outputPath = Application.StartupPath;

        public Form1()
        {
            InitializeComponent();

            // Das Fenster bekommt keinen Border Style
            this.FormBorderStyle = FormBorderStyle.None;

            // Das Fenster wird nicht in der Task Bar angezeigt
            this.ShowInTaskbar = false;
        }

        // Entfernt das Programm aus dem Taskmanager -> Anwendungen
        protected override CreateParams CreateParams
        {
            get
            {
                var cp = base.CreateParams;
                cp.ExStyle |= 0x80;  // Turn on WS_EX_TOOLWINDOW
                return cp;
            }
        }
         
        // Erzeuge einen Screenshot
        private void button1_Click(object sender, EventArgs e)
        {
            // Prüfe ob eine close.txt existiert
            if (File.Exists(@"" + outputPath + "\\close.txt"))
            {
                this.Close();
            }


            // this.Opacity = 0.0;  // Verstecken der Form vor dem Screencopy
 
            // Screencopy erstellen und in BildschirmBMP ablegen
            Screen   Bildschirm      = Screen.PrimaryScreen; // Hauptbildschirm
 
            using (Bitmap BildschirmBMP = new Bitmap(Bildschirm.Bounds.Width, // Ziel-Bitmap
                                          Bildschirm.Bounds.Height,
                                          PixelFormat.Format24bppRgb))
            {
                using (Graphics BildschirmGR = Graphics.FromImage(BildschirmBMP))
                {
                    // Graphics erzeugen
                    BildschirmGR.CopyFromScreen(Bildschirm.Bounds.X, 
                                                Bildschirm.Bounds.Y, // Abbild erstellen 
                                                0, 
                                                0,
                                                BildschirmBMP.Size);
                }

                // this.Opacity = 1.0;  // Wieder anzeigen der Form nach dem Screencopy

                // Screencopy speichern mit Datum ein Zeitstempel
                BildschirmBMP.Save(outputPath + @"\output_" + DateTime.Now.Year + 
                "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "__" + 
                DateTime.Now.Hour + "_" + DateTime.Now.Minute + "_" + 
                DateTime.Now.Second + ".png"); // Nur mal so zum speichern
            }

        }

        // Rufe jede Sekunde auf (Timer ist ein Toolbox Element)
        private void timer1_Tick(object sender, EventArgs e)
        {
            // Jede Sekunde ausführen
            button1_Click(null, null);
        }

        // Sobald das Programm gestartet ist, starte den Timer
        private void Form1_Load(object sender, EventArgs e)
        {
            // Beim Start einmal ausführen
            button1_Click(null, null);
            timer1.Start();
        }
    }
}

Persönlicher Bericht: Mein Einstieg in die HTML5 Spieleentwicklung mit phaser.io

Intention

Viele Entwickler, die selber schon leidenschaftlich ein Spiel gezockt haben, träumen von der Umsetzung eigener Spieleideen.

Bei mir ist es hier nicht anders. Ich habe viele Ideen und viele davon sind unsinnig. Man würde sie vermutlich in die Kategorie „Trash“ stecken. Aber gerade professionell anmutende Spiele mit Trash-Faktor sind es, die viele Spieler fesseln. Die meisten Spiele, die nicht als „Trash“ gekennzeichnet sind, sind unter reellen Bedingungen absoluter Humbug.

Beispiele:
* Ein Klempner aus Brooklyn der Pilze frisst und auf Schildkröten rumtrampelt
* Eine Steinschleuder die kleine Vögel auf grüne Schweine schießt
* Prügelnde Kontrahenten, die Energiebälle schießen und mit Hubschrauberkicks durch die Gegend fliegen
* .. etc

Obwohl diese Spiele absolut unrealistisch sind, haben diese eine „Spielephysik“, die aber nicht unbedingt realisitsch sein muss.
* Super Mario springt und fällt auch wieder auf den Boden
* Ein Angry Bird schubst Teile seiner Welt an, diese stürzen um und schubsen wiederum weitere Teile an, solange bis das Schweinehaus zusammenfällt.
* Die Sequenz des Schießens bei Ryu/Ken benötigt eine gewisse Zeit in der sie angreifbar sind. Wenn Chun Li in der Luft ist kann Guile sie mit seinem Flip-Kick unbeschadet runterholen.

Distanziert betrachtet haben mich diese Spiele gefesselt und viel Zeit gekostet, waren aber konzeptuell absoluter Quatsch. Ob ich als Hobbyentwickler und Familienvater in meiner Frezeit die Zeit finde, an einem Spiel zu entwickeln, möchte ich an diesem Punkt noch bezweifeln aber ich lasse mich jetzt mal überraschen.

Aus diesem Grund wollte ich während meines Urlaubes den Einstieg in die HTML 5 Spieleentwicklung so hinbekommen, dass ich grundsätzlich ein 2D-Spieleentwicklungsproblem angehen kann.

Idee

Die erste Idee ist nichts weltbewegendes und sie ist absoluter Quatsch:
Beer Througher Professional

Wir haben eine Person, die ein Bierglas über einen Tisch wirft. Während das Bierglas über den Tisch fliegt, soll die Kamera mitscrollen (wie bei Angry Birds). Am Ende soll die Kamera stehen bleiben, dass Bier auf ein Trampolin fallen (oder auch nicht – je nachdem wie stark geworfen wurde) und dem Biertrinker, der faul auf der rechten Seite liegt, in den Mund gekippt werden.

Grundlagenforschung

Nachdem ich nun Google nach dem Thema „HTML 5 Canvas Games“ befragte, landete ich in dem Forum http://www.html5gamedevs.com in dem ich mich auch prompt registrierte um meine Idee den „Profis“ vorzustellen. Ich wollte mir Anregungen und Tipps holen, die mich bei der Umsetzung dieser Spieleidee als HTML5 Spiel befähigen.

Dazu schrieb ich diesen Forenbeitrag:

Während ich auf Antwort wartete, stöberte ich etwas in dem Forum und stieß auf die eigene Forenrubrik „Phaser.io“. Hierbei handelt es sich um ein HTML 5 Canvas Spieleframework, welches momentan scheinbar eine relativ weite Verbreitung hat.

Meine erster Beantworter auf den Forenbeitrag schlägt außerdem die Nutzung einer Bibliothek namens „PIXI.JS“ für das 2D Rendering vor, die angeblich auch in phaser.io vorhanden ist, ebenfalls wie diverse Spielephysik, auf die man direkt über die Phaser-Framework-Methoden zugreifen kann. Desweiteren gibt es Add-Ons, die man zwar für kleines Geld dazukaufen muss, aber welche die Funktionalitäten von Box2D hinzufügen:

http://phaser.io/shop

Hier ist eine Box2D Wasserpartikeldemo:

http://google.github.io/liquidfun/

Um kleine Javascripte auszuprobieren wurde auf der Seite von phaser.io folgendes Minitool empfohlen:

http://jsfiddle.net/

Entschluss

Ich werde mich daher in Phaser.io einarbeiten, da es als Werkzeugkasten die meisten Features für die Entwicklung von Spielen bietet.

Phaser kann man im Web unter der folgenden URL finden:

http://phaser.io/

Einstieg in Phaser.io / Erfahrungsbericht:

Die Entwicklungsumgebung

Zunächst stellt sich die Frage, welche Entwicklungsumgebung man nutzen möchte.

Da ich von Online-Quellcodeeditoren wie Codeanywhere begeistert bin, wollte ich die auf der Website phaser.io vorgeschlagene Cloud9-Variante testen. Hierbei handelt es sich ebenfalls um einen Online-Quellcodeeditor

http://c9.io <- Cloud9 Quellcodeditor

Erste Hürde: „First, sign up to the website using GitHub, and once this is completed, you will be redirected to your dashboard.“

Hierzu musste ich mich erstmal bei GitHub (ja hatte noch keinen Account 😉 ) anmelden und das Hello World Tutorial durchgehen, was mich 20 Minuten gekostet hat. Im Tutorial musste man einen „Branch“ anlegen und diesen mit dem „Master“ wieder vereinigen.

Der benannte Vorteil von GitHub: “ You don’t have to worry about losing data on your hard drive or managing a project across multiple computers“

Es lebe die Cloud!

In GitHub musste ich zunächst den Cloud9 Editor authorisieren auf mein Repository zugreifen zu dürfen:
„Authorize application
Cloud9 by @cloud9Deploy would like permission to access your account“

Auf dem Cloud9 Dashboard angelangt, erzeugt man ein neues Projekt von der URL
http://github.com/photonstorm/phaser.git

Diese URL scheint das komplette Phaser-Framework zu beinhalten.

Meine erste Überraschung beim Cloud9 Editor:
* Man kann PHP Code anlegen, der interpretiert wird
* Es gibt eine Ubuntu Command Line Zeile, in der man BASH-Kommandos ausführen kann

Der Cloud9 Editor bietet einen Debugger, den hatte ich für PHP schon länger gesucht, allerdings bleibt die Ausführung nicht bei den Breakpoints hängen. Evtl. muss man etwas konfigurieren?

Zurück zu phaser.io . Ich will ja erstmal mein Hello World Projekt erstellen :). Also mal gucken ob mir das die eingerichtete kostenlose Umgebung auch erlaubt…

Ich habe nun den gesammten root-Folder des Phaser-Ordners in den Ordner „Phaser“ kopiert, da man in der kostenlosen Version von Cloud9 nur einen Workspace nutzen darf.

Da ich mit Chrome arbeite, hat sich zum Switchen zwischen den Tabs (Editor <-> Tutorial <-> WordPress) die Tastenkombination STRG+BILD Hoch / STRG+Bild Runter als praktisch erwiesen. Auffällig ist, das der Cursorfokus des aktuellen Tabs nicht verloren geht.

Im Ordner phaser/Ressources/tutorials befinden sich alle Tutorials, die auf der Seite phaser.io aufgeführt sind. Ich hatte den Fehler gemacht über die Cloud9-Bashconsole die ZIP-Dateien mit wget runterzuladen und mit unzip zu entpacken. Dies ist unnötig.

Über den RUN-Button des Cloud9-Editors ist schnell eine geöffnete HTML-Datei geladen und mit dem Preview-Button auf den Bildschirm gebracht.

Schnell habe ich die ersten beiden Tutorials durch…

http://phaser.io/tutorials/making-your-first-phaser-game/part2

Es ist nicht nötig den Run-Button bei jedem Versuch neu zu klicken sondern es reicht aus den Refresh button zu klicken.

Fazit

* Die kostenlose Variante von Cloud9 (http://c9.io) ist sehr zu empfehlen.

* Ich hätte das GitHub Tutorial nicht benötigt, da lediglich GitHub für den Login von Cloud9 genutzt wird.

* Ich kann nun relativ schnell rechner- und ortsunabhängig an einem Canvas-Spiel entwickeln

Erste Schritte mit dem Framework

Meines Erachtens macht es durchaus Sinn auf der Hauptebene seines Cloud9 Workspace das Phaser-Framework mit den Tutorials als Nachschlagewerk zu nutzen. Die Hauptstruktur eines Phaser-Projektes sieht so aus:

var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update });

function preload() {

    game.load.image('sky', 'assets/sky.png');
    game.load.image('ground', 'assets/platform.png');
    game.load.image('star', 'assets/star.png');
    game.load.spritesheet('dude', 'assets/dude.png', 32, 48);

}

var platforms, player, cursors, stars;
var score = 0;
var scoreText;

function create() {

    //  We're going to be using physics, so enable the Arcade Physics system
    game.physics.startSystem(Phaser.Physics.ARCADE);

    //  A simple background for our game
    game.add.sprite(0, 0, 'sky');

    //  The platforms group contains the ground and the 2 ledges we can jump on
    platforms = game.add.group();

    //  We will enable physics for any object that is created in this group
    platforms.enableBody = true;

    // Here we create the ground.
    var ground = platforms.create(0, game.world.height - 64, 'ground');

    //  Scale it to fit the width of the game (the original sprite is 400x32 in size)
    ground.scale.setTo(2, 2);

    //  This stops it from falling away when you jump on it
    ground.body.immovable = true;

    //  Now let's create two ledges
    var ledge = platforms.create(400, 400, 'ground');

    ledge.body.immovable = true;

    ledge = platforms.create(-150, 250, 'ground');

    ledge.body.immovable = true;

    // The player and its settings
    player = game.add.sprite(32, game.world.height - 150, 'dude');

    //  We need to enable physics on the player
    game.physics.arcade.enable(player);

    //  Player physics properties. Give the little guy a slight bounce.
    player.body.bounce.y = 0.2;
    player.body.gravity.y = 300;
    player.body.collideWorldBounds = true;

    //  Our two animations, walking left and right.
    player.animations.add('left', [0, 1, 2, 3], 10, true);
    player.animations.add('right', [5, 6, 7, 8], 10, true);
    
    cursors = game.input.keyboard.createCursorKeys();
    
    stars = game.add.group();

    stars.enableBody = true;

    //  Here we'll create 12 of them evenly spaced apart
    for (var i = 0; i &lt; 12; i++)
    {
        //  Create a star inside of the 'stars' group
        var star = stars.create(i * 70, 0, 'star');

        //  Let gravity do its thing
        star.body.gravity.y = 6;

        //  This just gives each star a slightly random bounce value
        star.body.bounce.y = 0.7 + Math.random() * 0.2;
    }    
    
    scoreText = game.add.text(16, 16, 'score: 0', { fontSize: '32px', fill: '#000' });

}

function update() {
        //  Collide the player and the stars with the platforms
    game.physics.arcade.collide(player, platforms);
    
    //  Reset the players velocity (movement)
    player.body.velocity.x = 0;

    if (cursors.left.isDown)
    {
        //  Move to the left
        player.body.velocity.x = -150;

        player.animations.play('left');
    }
    else if (cursors.right.isDown)
    {
        //  Move to the right
        player.body.velocity.x = 150;

        player.animations.play('right');
    }
    else
    {
        //  Stand still
        player.animations.stop();

        player.frame = 4;
    }

    //  Allow the player to jump if they are touching the ground.
    if (cursors.up.isDown &amp;&amp; player.body.touching.down)
    {
        player.body.velocity.y = -350;
    }    
    
    // Prüfe ob die Sterne auf die Plattform treffen
    game.physics.arcade.collide(stars, platforms);
    
    // Prüfe ob der Spieler mit einem Stern kollidiert, falls ja gehe in die 
    // Funktion collectStar
    game.physics.arcade.overlap(player, stars, collectStar, null, this);
}

function collectStar (player, star) {

    // Removes the star from the screen
    star.kill();

    //  Add and update the score
    score += 10;
    scoreText.text = 'Score: ' + score;


}

Fazit

* In der Preload-Methode werden die Grafiken (PNGs) geladen. Spritesheets sind dabei Animationen, die als PNG vorliegen und die einzelnen Frames nebeneinander beinhalten.
* Die Objekte werden mit game.add.sprite in der entsprechenden Reihenfolge in der Create-Methode hinzugefügt
* Phaser besitzt 3 Physikengines. wobei Arcade die einfachste sein soll
** Arcade Physics
** Ninja Physics
** P2.JS Full-Body Physics
* Kollisionen werden immer in der Update-Prozedur abgefragt
* Tastatureingaben werden in der Update-Prozedur abgefragt
* Velocity ist die Geschwindigkeit, die ein Objekt bekommt

Anwendbarkeit

Wir haben hier eine fixe Welt, ich möchte aber sowas wie ein scorllendes Spiel nach dem Angry Birds Vorbild haben. Dafür brauche ich ein Beispiel. Die Frage ist, ob man Tilemaps, welche vorwiegend für scrollende Jump-and-runs wie Super Mario oder Giana Sisters verwendet werden benutzen sollte.

Ich suche also ein Beispiel das ich idealerweise nutzen kann…

Durchgehen der Phaser.io Examples

N

Debugging

Der Cloud9 Editor bietet die Möglichkeit, Break Points zu setzen. Ob diese Breakpoints nun das PHP oder Javascript debuggen können habe ich nicht rausgefunden, da sie keine Auswirkung haben. Allerdings hat mein Google Chrome Debugger auch recht nützliche Funktionen für das Debuggen. Nachteil ist, das man die Cloud9 Umgebung kurz verlassen muss. Man kann allerdings die URL (siehe Screenshot) des gestarteteten Webservers einfach in einen neuen Tab pasten.

Hierbei wunder ich mich wie lange dieser Webserver von c9.io laufen wird, da er ja für einen kostenlosen Account massig Systemressourcen frisst.

 

Canvas_debugging_with_chrome

Neuer Trend: Sharktrash aus Amerika

Ich habe soeben beschlossen nach 3 Jahren Fachthemen eine Kategorie „Unsinn“ zu eröffnen.

In Anlehnung an den Artikel von Florian Breidenbach möchte ich nun eine kleine lustige Sammlung posten :).

Interessant mit welchen Storymutanten die Drehbuchautoren arbeiten müssen um einen Innovationscharacter in den gemeinen Haifilm zu bekommen.

Es lebe der B-Movie!!!

It is interesting which kind of story mutants are used to generate an innovative character for the evil shark films.

B movies forever!!!!

ghost-shark715

sand_sharks sharkcano sharknado sharknado-2-banner sharktopus two_headed_shark_attack

sharkalanche

avalanche-sharkssharkicane sharkquake supershark tscharknamidinoshark