Was steckt hinter Stadia?

Der Spielestreaming-Dienst Stadia versteht sich als neue Plattform. Wer für diese Plattform entwickeln möchte, kann sich unter stadia.dev dafür bewerben. Auf der Seite erhält der Leser daneben weitere Informationen über die Plattform.

stadia.dev

Auf der Hardwareseite wird aktuell eine 2,7-GHz-Hyperthread-x86-CPU mit AVX2 SIMD und 9,5 MB L2- und L3-Cache, eine AMD-GPU mit HBM2-Speicher und 56 Recheneinheiten mit einer Leistung von 10,7 Teraflops, 16 GB RAM mit einer Bandbreite von bis zu 484 Gbit/s und SSD-Speicher in der Cloud genutzt.

Auf Softwareseite wird Linux genutzt. Google nutzt hierbei die Linux-Distribution Debian als Grundlage. Als Grafikschnittstelle müssen die Spiele Vulkan benutzen. Dazu wird eine API bzw. ein SDK mitgeliefert, welches Funktionalitäten für die Verwaltung von Spielständen, die Nutzung der Multiplayer-Modi und der Funktionen für die Unterstützung der Unterbrechung und Fortsetzung des Spieles liefert.

Zurzeit unterstützen das Entwicklerwerkzeug Unity und die Unreal Engine den Spielestreaming-Dienst. Daneben existieren weitere Werkzeuge von Google, welche bei der Entwicklung von Spielen für Stadia helfen.

Evoli in Pokémon Go selektiv entwickeln

Das Pokémon Evoli kann sich in unterschiedlichste Pokémon weiterentwickeln. In der ersten Generation waren dies Aquana, Blitza, Flamara. Mittlerweile sind noch Folipurba, Glaziola, Nachtara und Psiana hinzugekommen. Wird ein Evoli in Pokémon Go entwickelt, so wird es sich zufällig entwickeln.

Ein Evoli in der Stadt

Mit einem kleinen Trick lässt sich die Entwicklungsform eines Evoli allerdings steuern. Dazu muss dem Pokémon vor der Entwicklung ein bestimmter Name gegeben werden:

Rainer -> Aquana 	
Sparky -> Blitza 	
Pyro   -> Flamara 	
Linnea -> Folipurba 	
Rea    -> Glaziola
Tamao  -> Nachtara 	
Sakura -> Psiana

Wurde der entsprechende Name vor der Entwicklung vergeben, so entwickelt sich das Evoli in die entsprechende Form. Pro Form lässt sich der Trick exakt einmal anwenden.

ExecutorService unter Java nutzen

Wenn unter Java die Ausführung von Quelltext parallelisiert werden soll, so können hierfür Threads genutzt werden:

Thread thread = new Thread(new TestRunnable());
thread.start();

In diesem Beispiel wird für eine auszuführende Aufgabe ein Thread erstellt und dieser anschließend gestartet. Nun kann es Fälle geben, in welchem mehrere Threads die gleiche Aufgabe ausführen sollen, allerdings nicht unbedingt die entsprechende Anzahl von Threads angelegt werden soll. Für eine solche Aufgabe eignet sich ein ExecutorService. Im ersten Schritt sollte ein Runnable definiert werden. In diesem Interface wird eine run-Methode definiert, die den auszuführenden Quellcode enthält:

public static class TestRunnable implements Runnable {

    @Override
    public void run() {
        // Do something
    }
}

Nun kann der ExecutorService angelegt werden und mit einem Threadpool ausgestattet werden. Anschließend werden die neuen Instanzen des Runnable, mittels der execute-Methode, an den ExecutorService übergeben.

// Executor service
ExecutorService executorService = Executors.newCachedThreadPool();

// Add jobs to executor service
for (int i = 0; i < 100; i++) {
    executorService.execute(new TestRunnable());
}

// Shutdown executor service
executorService.shutdown();
executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);

Damit würden die Aufgaben abgearbeitet. Allerdings würde der ExecutorService nun bis zu einem Timeout noch bestehen bleiben. Stattdessen wird er im Beispiel kontrolliert heruntergefahren. Nach der Ausführung der shutdown-Methode nimmt der ExecutorService keine neuen Aufträge mehr an; bestehende Aufträge werden allerdings noch abgearbeitet. Über die Methode awaitTermination wird sichergestellt das der Service wartet, bis alle Aufgaben abgearbeitet sind. Bei der Methode wird ein Timeout angegeben, nach welchem der Service zwangsweise abgeschaltet wird. Damit werden die Aufgaben Stück für Stück abgearbeitet, ohne entsprechende viele Threads zu öffnen. Stattdessen werden Threads aus dem Threadpool wiederverwendet.

Java-Bibliothek für HBCI

Wer elektronisch auf Konten zugreifen möchte, kann hierfür das Homebanking Computer Interface, kurz HBCI, bzw. FinTS nutzen. Soll die Nutzung der Schnittstelle in einer Anwendung passieren, wird eine Bibliothek zur Nutzung des Protokolls benötigt. Für die Entwicklung unter Java bietet sich hierbei die Bibliothek hbci4java an.

hbci4java auf GitHub

hbci4java unterstützt die neuen, durch die Richtlinie PSD2 geforderten, Mechanismen, sodass der Zugriff auf Konten auch nach der Umsetzung der Richtlinie möglich ist. Der Quelltext der Bibliothek ist auf GitHub zu finden. Lizenziert ist die Bibliothek unter der LGPL in Version 2.1. Damit ist die Bibliothek freie Software.

Was bringt Entwicklung bei Pokémon Go?

In Pokémon Go können Pokémon, wie in vielen Spielen der Reihe, entwickelt werden. Die Frage, die sich stellt, ist, ob sich die Entwicklung eines Pokémon lohnt. Die Antwort darauf ist relativ einfach: im Prinzip ja. Allerdings kommt es auf einige Feinheiten an. Pokémon können im Spiel auf zwei Arten trainiert werden, über Power-Ups und die Entwicklung.

Die Entwicklung des Pokémon erhöht die WP

Bei der Entwicklung wird die WP-Zahl um ein gutes Stück angehoben, bei einem Power-up sind es meist um die 50 Punkte um die sich der WP-Wert erhöht. Die Reihenfolge, also erst Power-Ups und dann die Entwicklung oder umgekehrt spielt hierbei keine Rolle. Allerdings sollte mit der Entwicklung gewartet werden bis ein bestimmtes Trainerlevel erreicht ist. Ab Level 30 kann bedenkenlos entwickelt werden. Daneben sollte bei der Entwicklung darauf geachtet werden, das am besten nur Pokèmon mit hohen IV-Werten entwickelt werden.