+49 2662 5076841 hello@infiniteapps.de
Stellenausschreibung Mobile Developer

Stellenausschreibung Mobile Developer

wir haben eine Stelle als Mobile Developer in unserem Team zu vergeben.
Gerne möchten wir sowohl Studenten die im Bereich Informatik, Medieninformatik oder die in einem gleichwertigen Studiengang studieren, als auch Entwicklern die Ihren Abschluss schon erfolgreich Abgeschlossen haben die Chance geben, Teil unseres Teams zu werden.

Das erwartet dich:

  1. Entwicklung und Design von mobilen Anwendungen mit dem Schwerpunkt Flutter.
  2. Integration verschiedener APIs zur Erweiterung der Funktionalität und Verbesserung der User Experience.
  3. Aktive Mitarbeit an der Produktsubstanz mehrerer bestehender Produkte und eine aktive Mitbestimmung der zukünftigen Produktroadmap mittels Design-Thinking

Das solltest du mitbringen:

  • Erste praktische Erfahrungen in der App-Entwicklung, insbesondere mit Flutter.
  • Kenntnisse in der Integration von APIs und dem Verständnis ihrer Funktionsweise.
  • Von Vorteil Erfahrungen in der Erstellung von eigenen APIs.
  • Ein Auge für ansprechendes Design und Benutzerfreundlichkeit.
  • Teamfähigkeit, Eigeninitiative und eine strukturierte Arbeitsweise.
  • Gute Deutsch- und Englischkenntnisse in Wort und Schrift.

Das bieten wir dir:

  • Eine spannende Position, bei der Du deine theoretischen Kenntnisse in die Praxis umsetzen kannst.
  • Die Möglichkeit, an anspruchsvollen Projekten für namhafte Kunden zu arbeiten.
  • Schnelle Resultate in deiner Arbeit durch kurze Entscheidungswege.
  • Flexible Arbeitszeiten (die sich ideal mit deinem Studium kombinieren lassen)
  • Eine marktgerechte Vergütung.
  • Möglichkeit der Übernahme nach erfolgreichem Studienabschluss
  • flexibler Arbeitsort, du kannst sowohl 100% remote arbeiten, hybrid (remote und vor Ort) als auch 100% vor Ort

Nicht warte, jetzt bewerben!
Wir freuen uns auf deine aussagekräftige Bewerbung per E-Mail an hello@infiniteapps.de.
Bei Fragen zur Position oder dem Bewerbungsprozess steht dir gerne Natascha Meyer unter 0173- 249 58 10 zur Verfügung.

Bewerbungsfrist: 31.08.2023

Wir freuen uns auf dich!

Dein Team von

Die Welt der Serious Games Entwicklung: Lernen, motivieren und inspirieren

Die Welt der Serious Games Entwicklung: Lernen, motivieren und inspirieren

Was sind überhaupt Serious Games?

Serious Games sind so viel mehr als nur Unterhaltung. Sie haben das Potenzial, tiefgreifende Auswirkungen auf die Bildung, die Unternehmenswelt und die Gesellschaft insgesamt zu haben. In diesem Blogeintrag werden wir die Serious Games Entwicklung untersuchen und wie diese Art von Spielen dazu beitragen kann, Lernen, Motivation und Inspiration zu fördern.

Es handelt sich um Spiele, die speziell entwickelt wurden, um Lernen, Training oder Verhaltensänderungen zu fördern, und zwar durch den Einsatz von spielerischen Elementen und Mechanismen. Im Gegensatz zu reinen Unterhaltungsspielen zielen Serious Games darauf ab, einen Bildungs- oder Trainingswert für die Spieler zu schaffen, indem sie komplexe Themen auf eine zugängliche und ansprechende Weise präsentieren.

Der Entwicklungsprozess für Serious Games

  1. Konzeption und Planung: Am Anfang steht die Ideenfindung und die Planung des Spiels. Hier müssen Entwickler und Designer das Ziel des Spiels klar definieren, den Bildungs- oder Trainingswert ermitteln und entscheiden, welche spielerischen Elemente und Mechanismen am besten dazu geeignet sind, dieses Ziel zu erreichen.
  2. Design und Entwicklung: Im nächsten Schritt erstellen die Entwickler und Designer die Spielwelt, die Charaktere, die Aufgaben und die Spielmechanik. Dabei ist es wichtig, die richtige Balance zwischen Spielspaß und pädagogischem Wert zu finden, um die Spieler bei der Stange zu halten und das Lernen zu fördern.
  3. Implementierung und Testen: Sobald das Spiel entwickelt ist, folgt die Implementierung und das Testen der verschiedenen Funktionen, um sicherzustellen, dass alles reibungslos funktioniert und die gewünschten Lernziele erreicht werden. Hierbei spielen Feedback und Iteration eine wichtige Rolle, um das Spiel kontinuierlich zu verbessern und anzupassen.
  4. Evaluation und Verbreitung: Schließlich müssen die Serious Games evaluiert werden, um den Erfolg des Projekts zu messen und festzustellen, ob die Lernziele erreicht wurden. Anschließend kann das Spiel verbreitet und für die beabsichtigte Zielgruppe zugänglich gemacht werden.

Anwendungsgebiete für Serious Games

Serious Games finden in verschiedenen Bereichen Anwendung, wie zum Beispiel:

  1. Bildung: Serious Games können dabei helfen, komplexe Themen für Schülerinnen und Schüler auf eine unterhaltsame und ansprechende Weise zu vermitteln, wodurch das Lernen leichter und effektiver wird.
  2. Gesundheit: Serious Games können genutzt werden, um Patienten über ihre Erkrankungen und Therapieoptionen aufzuklären oder um gesundheitsförderndes Verhalten wie regelmäßige Bewegung oder gesunde Ernährung zu fördern.
  3. Unternehmensschulungen: Serious Games können in Unternehmen eingesetzt werden, um Mitarbeiterinnen und Mitarbeiter in Themen wie Projektmanagement, Verkaufsfähigkeiten oder Führungskompetenzen zu schulen.

Fazit

Die Serious Games Entwicklung ist ein spannender Bereich, der das Potenzial hat, Lernen und persönliches Wachstum auf innovative und ansprechende Weise zu fördern. Durch die Kombination von spielerischen Elementen mit Bildungs- und Trainingsinhalten können Serious Games eine wirkungsvolle Methode sein, um Informationen zu vermitteln und Verhaltensänderungen zu bewirken.

Indem Entwickler und Designer eng zusammenarbeiten und auf die Bedürfnisse der jeweiligen Zielgruppen eingehen, können Serious Games sowohl effektive Lehr- und Lernwerkzeuge als auch unterhaltsame Spielerlebnisse bieten. In einer Zeit, in der die Digitalisierung immer weiter voranschreitet und traditionelle Lehr- und Lernmethoden an ihre Grenzen stoßen, bieten Serious Games eine vielversprechende Alternative, um das Lernen und persönliche Entwicklung zu revolutionieren.

In der Zukunft dürfte die Bedeutung von Serious Games weiter zunehmen, da immer mehr Branchen und Bereiche die Vorteile dieser innovativen Lernmethode erkennen. Mit der fortlaufenden Verbesserung von Technologien wie Virtual Reality (VR) und Augmented Reality (AR) könnten Serious Games noch immersiver und lehrreicher werden, was das Lernen noch spannender und effektiver gestaltet.

Letztendlich liegt die Kraft der Serious Games in ihrer Fähigkeit, Lernen und persönliche Entwicklung auf eine Art und Weise zu ermöglichen, die Spaß macht und die Motivation der Spieler erhöht. Indem wir diese Möglichkeiten weiter erforschen und nutzen, können wir dazu beitragen, eine Welt zu schaffen, in der Lernen und Wachstum für jeden zugänglich und inspirierend sind.

Wir freuen uns über eure Kommentare und eigenen Erfahrungen zu dem Thema!

Wir bauen einen OpenAI iPhone Kurzbefehl

Wir bauen einen OpenAI iPhone Kurzbefehl

ChatGPT ist ein heiß diskutiertes Thema und die Verwendung im Browser mittels Texteingabe ist mittlerweile einigen bekannt. Mit einem Apple iPhone lässt sich allerdings auch ein sogenannter Kurzbefehl erstellen, mit dem Anfragen an die OpenAI API gestellt und mittels Sprache beantwortet werden! Es gibt zwar bereits in der Kurzbefehle Gallery einen fertigen Kurzbefehl, allerdings finde ich diesen sehr groß und umständlich. Dieses kleine Hands-on soll außerdem zeigen, dass die Kurzbefehle App einiges kann, wenn man weiß wie sie anzuwenden ist. Auch User:innen ohne Programmierkenntnisse können hiermit kleine „Apps“ schreiben. Um dies zu demonstrieren bietet sich ein einfacher API Call mit der hervorragenden API von OpenAI sehr gut an.

Los gehts!

Voraussetzungen:

  • iPhone mit mind. iOS 12 bzw. aktuelles MacOS
  • OpenAI Entwickler Account für den benötigten Api-Key
  • Aktive Internetverbindung

Teil 1: Spracheingabe einrichten und in Variable speichern

Im ersten Schritt wird die App Kurzbefehle geöffnet. Dies funktioniert bspw. über die Suche:

Im nächsten Schritt klickt man auf das „+“-Zeichen oben rechts in der Ecke, um einen neuen Kurzbefehl zu erstellen:

Nun habe ich einen leeren Kurzbefehl erstellt, bei dem noch alle notwendigen Aktionen fehlen. Um diese hinzufügen, klicke ich auf Aktion hinzufügen, oder klicken unten in das Suchfeld Apps und Aktionen suchen.

Daraufhin öffnet sich dieses Fenster. Ich habe die für dieses Tutorial relevanten Bereich ausgeschnitten:

Als erstes muss die Aktion Text diktieren hinzugefügt werden:

Der eingesprochene Text muss dann in eine Variable gespeichert werden. Dafür wird im nächsten Schritt eine Variable angelegt. Unten wieder auf Apps und Aktionen suchen klicken und nach Variable konfigurieren suchen. Anschließend sieht man folgende Oberfläche. Für die Variable kann ich nun einen Namen vergeben. In dem Fall nenne ich sie Prompt – der Name ist komplett frei wählbar. Der Eintrag Diktierter Text sollte automatisch befüllt werden:

Kurze Zusammenfassung bis hierhin: wenn man den Kurzbefehl jetzt starten würde, käme ein Popup, dass um eine Spracheingabe bittet und einen Hinweis, ob man dem Kurzbefehl die Verwendung des Mikrofons gestatten möchte. Anschließend würde das Gesprochene von Sprache zu Text konvertiert werden und in die Variable Prompt gespeichert werden. Sehen würde man davon aber aktuell noch gar nichts.

Den Inhalt der Variable Prompt übergebe ich jetzt an die OpenAI Schnittstelle, die bspw. auch ChatGPT benutzt.

Teil 2 – Anbinden der OpenAI Schnittstelle und Einstellungen setzen:

Für den API Aufruf binde ich die Aktion Inhalte von URL abrufen ein. Nun müssen die Einstellungen angezeigt werden über den kleinen Pfeil rechts von der Aktion. Da ich eine Information zu der API schicken und nicht nur abrufen möchte, ist es zunächst wichtig die Methode von GET auf POST umzustellen.

Nun müssen bestimmte Parameter (Überschrift bei der App Kurzbefehle genannt) im Header eingetragen werden, um eine gültige Anfrage schicken zu können. Hier ist jetzt der API-Key notwendig, den ich mir zuvor bei OpenAI erstellt habe, in meinem Entwickler Account. Achtung: der API-Key kommt ohne das vorstehende Bearer. Dies ist aber notwendig und muss in diesem Fall von mir manuell hinzugefügt werden.

Ich trage also bei „Header“ als erste Überschrift „Authorization“ ein und in das dazugehörige Value Feld (rechts daneben) Bearer meinApiKey.

Nun kommt der sogenannte Body, hier „Haupttext“ genannt. Dieser besteht im Wesentlichen aus 4 Keys Value Paaren, nämlich model, prompt, max_tokens und temperature. Das model definiert welches Sprachmodel ich benutzen möchte. text-davinci-003 ist das Model, das sehr nah an die „Menschlichkeit“ der Antworten von ChatGPT rankommt. prompt erwartet den Input des Users, in meinem Fall die Spracheingabe, die bereits in Text umgewandelt worden ist – also die Variable „Prompt“. max_tokens definiert der Anzahl der auszugebenden Tokens für die Anfrage. Die Anfrage hat einen gewissen Preis, daher muss ich der Anfrage mitteilen, wie viel ich maximal ausgeben willf. Jedem Nutzer steht anfangs ein gewisses kostenloses Kontingent bereit, das zum Testen mehr als ausreichend ist. Grundsätzlich ist ein Token ca. 4 Buchstaben. Je nachdem wie viele Tokens man spendiert, ist die Antwort auch länger oder kürzer. Der letzte Parameter ist die temperature. Hierbei kann ein Wert von 0 – 2 vergeben werden. Je höher der Wert, desto allgemeiner die Antwort, je niedriger desto deterministischer. Alle weiteren Informationen sind hier sehr gut dokumentiert: https://platform.openai.com/docs/api-reference/completions/create

Konfiguration des API-Calls

Nun ist der API Aufruf soweit fertig und könnte auch schon ausgeführt werden. Leider sehe ich jetzt immer noch nichts von der Antwort.

Teil 3 – Antwort erhalten und JSON decodieren

Wie viele andere APIs auf dieser Welt, die tagtäglich Milliarden Informationen bereitstellen, bekomme ich auch hier eine Antwort im JSON Format.

Im vorherigen Teil wurde bereits von Key-Value Paaren geschrieben. Sogenannte Dictionaries, oder auch in diesem Kontext von Apple Wörterbuch genannt, funktionieren mit diesen Key-Value Paaren. Ähnlich wie bei einem richtigen Wörterbuch finde ich auf der einen Seite einen Key, bspw. das Wort „Essen“ und auf der anderen Seite einen dazugehörigen Value – „Food“. Wichtig: die Keys sind dabei immer statisch und der Value ist dynamisch. So kann ich in meiner Dekodierung festlegen nach welchem Key gesucht werden soll, um dann den dynamischen Inhalt auszugeben. Konkret sieht die Struktur der Antwort von OpenAI auf die Frage: Schmeckt Pepsi oder Coca-Cola besser? so aus:

{
    "id": "cmpl-6u2CIMjktuOioUpKScsSmWe1jR70S",
    "object": "text_completion",
    "created": 1678812834,
    "model": "text-davinci-003",
    "choices": [
        {
            "text": "\n\nDas ist eine Frage des Geschmacks. Beide Marken haben eine lange Geschichte und sind beliebt, so dass es schwer ist, eine zu bevorzugen.",
            "index": 0,
            "logprobs": null,
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 15,
        "completion_tokens": 54,
        "total_tokens": 69
    }
}

Die für mich relevanten Inhalte habe ich fett hervorgehoben. Meine Aktion soll nach dem Key „text“ suchen, in dem Array „choices“. Dafür müssen folgende Aktionen hinzugefügt werden: „Wörterbuch abrufen“ und „Wörterbuch aus Eingabe abrufen“. Als Variablenwert wähle ich nun „choices“ aus, wie im vorherigen Screenshot gezeigt.

„Choices“ ist ein Array, also im Grunde eine Liste von Einträgen. Daher muss ich jetzt noch eine Schleife einbauen, die alle Einträge durchsucht und diese ausgibt.
Dies wird mit der Aktion „Wiederholen mit jedem“ gemacht. Nun habe ich das „choices“-Array durchsucht, es fehlt aber noch der eigentliche Eintrag, den ich unter dem Key „text“ finde. Hierfür brauche ich wieder die Aktion „Wörterbuch aus Eingabe abrufen“, dieses Mal aber innerhalb der Schleife. Dazu muss ich die Aktion etwas länger gedrückt halten und rücke sie dann ein. Anschließend wird das „Wiederholen“ beendet.

Wie man im oberen Screenshot sieht, habe ich auch einen Kommentar hinzugefügt. In der Programmierung ist es gute Praxis Code zu kommentieren. An dieser Stelle habe ich beispielhaft einen Kommentar hinzugefügt, um darauf hinzuweisen, was als nächstes folgt.

Teil 4 – Ergebnis vorlesen lassen

Der letzte Teil beschäftigt sich nun mit dem Vorlesen lassen der Antwort von OpenAI. Im Gegensatz zu ChatGPT wird in meinem Beispiel nämlich kein Text an den User ausgegeben, sondern eine Audioausgabe.

Die letzten beiden Aktionen sind „Text in Sprache“ umwandeln und „Übersicht“. Bei „Text in Sprache“ wird die Variable „Wiederholungsergebnisse“ übergeben. Hier sind noch verschiedene Parameter für den Stimmengenerator möglich, wie Geschwindigkeit, Ton und Stimme. Abschließend wird die erstellte Audiodatei an die Aktion „Übersicht“ übergeben, die in diesem Fall einen kleinen Mediaplayer anzeigt, mit dem der Ton abgespielt werden kann.

Teil 5 – Zusammenfassung

In diesem Tutorial habe ich gezeigt, wie mit Hilfe der Kurzbefehle App, die auf iOS und MacOS verfügbar ist, eine Anfrage an die Schnittstelle von OpenAI geschickt werden kann. Im Gegensatz zum ChatGPT Ansatz kann hierbei mit einer Spracheingabe eine Frage bzw. Aufgabe an die KI gestellt werden und die Antwort anschließend als Ton auch wieder akustisch ausgegeben.

Vielen Dank fürs Lesen und ich freue mich über Kommentare.

Hello World!

Wir melden uns zurück mit einer frischen Webseite inkl. Blogbeiträgen!

In diesem Blog möchten wir regelmäßig Einblicke in unsere Arbeit und aktuelle Entwicklungen in der Softwarebranche geben. Wir werden über unsere Erfahrungen und Best Practices bei der Softwareentwicklung berichten und Tipps und Tricks geben, wie auch eigene Entwicklungsprojekte erfolgreich umgesetzt werden können.

Unser Fokus liegt dabei auf der Entwicklung von maßgeschneiderten Softwarelösungen, die auf die spezifischen Bedürfnisse unserer Kunden zugeschnitten sind. Ob es um die Entwicklung einer mobilen App, einer Virtual Reality Anwendung, Mobile Games oder einer komplexen Unternehmenssoftware geht – wir haben die Erfahrung und das Know-how, um Ihnen dabei zu helfen, Ihre Ziele zu erreichen.

Wir sind stolz darauf, dass wir bei der Softwareentwicklung auf höchste Qualität und Effizienz achten. Wir setzen auf agile Methoden und halten uns stets an bewährte Entwicklungspraktiken, um sicherzustellen, dass unsere Lösungen stets auf dem neuesten Stand sind und den höchsten Anforderungen entsprechen.

Wir freuen uns darauf, in unseren nächsten Beiträgen weitere Informationen und Einblicke in die Welt der Softwareentwicklung zu geben. Dran bleiben!