Suche Flash-Ersatz

Indy

New member
Ich suche als Ersatz für Flash ein Programmiersystem für Online-Spiele.
Folgende Features sind dabei erforderlich (bitte mit Manualseiten und/oder kurzen Programmbeispielen):

- Als Datei vorliegende Bilder lassen sich ins Programm einbauen
- Objekte sind klickbar und können so den Start einer Funktion auslösen; nicht nur rechteckige Objekte, sondern beliebige Formen
- Clipping Tool(Mask) für teilweise Darstellung von Objekten
- Scrollbare Textfelder und Texteingabefelder
- Getimete Funktionsaufrufe, also in xxx Millisekunden oder alle xxx Millisekunden
- Variablen vom Typ "Funktion"
- Verschachtelte Programme (d.h. ein Programm lädt ein anderes und kann dann mit ihm kommunizieren)
- Starten von PHP-Dateien und Empfang der Antwort (z.B. für Datenbanken und unfälschbare Uhrzeit-Abfrage)
- unlesbarer Programmcode (für Passwörter und Quizfragen-Lösungen)
- Online-Kommunikation, d.h. Übertragung von Daten zwischen den Programmen von Usern, die zur gleichen Zeit im Programm sind
(Wenn dafür ein Server gebraucht wird, bitte diesen mit angeben)

Vollständige und teilweise Lösungen dieses Problems werden mit Extrapunkten im neuen Spiel honoriert
(kann ich dann mit Hilfe von PHP/SQL ins Spiel einbauen)
 

DarkShadow44

Stammuser
Ich suche als Ersatz für Flash ein Programmiersystem für Online-Spiele.
- Objekte sind klickbar und können so den Start einer Funktion auslösen; nicht nur rechteckige Objekte, sondern beliebige Formen
- Clipping Tool(Mask) für teilweise Darstellung von Objekten
- Variablen vom Typ "Funktion"
- Verschachtelte Programme (d.h. ein Programm lädt ein anderes und kann dann mit ihm kommunizieren)
Klingt als ob du etwas suchst das genau wie Flash ist, aber nicht Flash. Diese "Ansprüche" sind zu direkt und werden kaum zu 100% erfüllt werden können.

Ich vermute du willst im Browser bleiben? JS + WebGL. Alternative ein Framework das die Arbeit abnimmt, z.B. Unity für Klickibunti.

Als Datei vorliegende Bilder lassen sich ins Programm einbauen
Muss jede Game-Engine können
Objekte sind klickbar und können so den Start einer Funktion auslösen; nicht nur rechteckige Objekte, sondern beliebige Formen
Clipping Tool(Mask) für teilweise Darstellung von Objekten
Zu Spezifisch, kann aber alles gemacht werden
Scrollbare Textfelder und Texteingabefelder[
]Getimete Funktionsaufrufe, also in xxx Millisekunden oder alle xxx Millisekunden
Etwas spezifisch, kann aber alles gemacht werden
Variablen vom Typ "Funktion"
Was heißt das?
Verschachtelte Programme (d.h. ein Programm lädt ein anderes und kann dann mit ihm kommunizieren)
Klassen und Funktionen? Kann praktisch jede Game-Engine.
Starten von PHP-Dateien und Empfang der Antwort (z.B. für Datenbanken und unfälschbare Uhrzeit-Abfrage)
Kann praktisch jede Gameengine, Stickpunk HTTP Request
unlesbarer Programmcode (für Passwörter und Quizfragen-Lösungen)
Muss ein Server machen, Flash ist ebenso lesbar
Online-Kommunikation, d.h. Übertragung von Daten zwischen den Programmen von Usern, die zur gleichen Zeit im Programm sind
Muss ein Server machen, such dir einen aus. Wenn du eh PHP willst, warum fragst du nach dem Server?
 

Indy

New member
Zur näheren Erläuterung:
Variablen vom Typ "Funktion" gibt es offline schon in C++. Das heißt, dass man Variablennamen eine Funktion zuweisen kann und diese z.B. auch anderen Funktionen als Variable übergeben kann.
Ein Beispiel: (in C++; in ActionScript ist die Syntax dafür leicht anders)

#include <iostream.h>

function Operate(int operator(int,int),int op1,int op2):int {
return operator(op1,op2);
}

function Add(int x1,int x2):int {
return x1+x2;
}

function Mult(int x1,int x2):int {
return x1*x2;
}

void main() {
cout<<Operate(Add,3,3); //gibt 6 aus
cout<<Operate(Mult,3,3); //gibt 9 aus
}

Puh, ich hoffe dass die Syntax stimmt; ich habe lange nicht mehr C++ programmiert.

"Klassen und Funktionen? Kann praktisch jede Game-Engine. "
Nein, es handelt sich wirklich um verschiedene Programme, die unabhängig voneinander laufen können. Die Ausgabe des geladenen Programms wird dann als Teilbild des darüber stehenden Programms dargestellt.

"Wenn du eh PHP willst, warum fragst du nach dem Server? "
Weil mein Homepageserver Homepages liefern und PHP-Programme ausführen kann, aber keine eigenständigen Flash- oder Flash-Nachfolger-Programme. Adobe Flash hat für die Kommunikation eine Lösung geliefert: einen Server, dessen wesentliche Funktion es ist, den Kontakt zwischen User-Computern herzustellen und somit die Server-Funktionen den Clients zu überlassen.
 

bitmuncher

Moderator
Du suchst Node.js in Verbindung mit WebGL und HTML5. Diese Kombination dürfte deine Anforderungen weitestgehend erfüllen. Alternativ könntest du auch Java-Servlets mit Tomcat oder JBoss als Server verwenden. Damit lassen sich sogar Echtzeit-Anforderungen erfüllen.
 

DarkShadow44

Stammuser
Nein, es handelt sich wirklich um verschiedene Programme, die unabhängig voneinander laufen können. Die Ausgabe des geladenen Programms wird dann als Teilbild des darüber stehenden Programms dargestellt.
Wo ist der Unterschied zu einer Unterfunktion? Ich kenne kein Spiel das aus mehreren Programmen besteht.

"Wenn du eh PHP willst, warum fragst du nach dem Server? "
Weil mein Homepageserver Homepages liefern und PHP-Programme ausführen kann, aber keine eigenständigen Flash- oder Flash-Nachfolger-Programme. Adobe Flash hat für die Kommunikation eine Lösung geliefert: einen Server, dessen wesentliche Funktion es ist, den Kontakt zwischen User-Computern herzustellen und somit die Server-Funktionen den Clients zu überlassen.
Verstehe. Ließe sich z.B. über Server Push in JavaScript umsetzen.
 

Fluffy

Stammuser
Es kommt halt darauf an, wo du die Grenze ziehst(von Komplexitaet und Management mal ganz abgesehen).
Man kann sagen das ein Programm eine logische Einheit ist welche zu einem bestimmten zweck zusammengebaut ist.
Demnach waeren Shellscripte und WebApps auch Programme.
Mann kann sagen das einzelne atomare executables/repos Programme sind.
Demnach waeren die Aufrufe(ls, grep, awk) im Shellscript und die einzelen Komponenten einer Webapp(JS-code, PHP-Code, DB) Programme.
Kommt halt immer darauf an, wie man es sieht.

Und Push laesst sich nicht so einfach mit PHP nutze, da man dafuer einen laufenden Websocket Server braucht.
Gibt es zwar in Form von Rachet, aber das muss dann unabhaengig laufen, da NginX und Apache es nicht moegen wenn es in derem Kontext laueft.
Fuer zwecke von Synchronisation waeren POST-/GET-Requests ausreichend, klar gibt es einen Overhaed aber kommt halt darauf an was man will
@Indy, s.o. Ich stimmte Bit zu, hier waren Javascript/NodeJS die bessere wahl, oder aber halt Python, Ruby oder .Net.
irgend etwas was einen Applikation-server hat.
PHP ist fuer sowas nicht wirklich gut geeignet, wenn du es trotzdem auf PHP laufen haben willst, musst du halt auf Websockets und das alles vorerst verzichten.

Cheers

Fluffy
 

Indy

New member
Ich glaube, hier liegt ein Missverständnis vor: ich habe nur ein paar Sachen auf PHP umgeleitet, das meiste läuft momentan auf Adobe Flash. Der PHP-Teil beschränkt sich auf solche Dinge wie Zugriffe auf die Datenbank und die System-Uhrzeit des Homepage-Servers.
Die Websockets sind ein davon unabhängiges Problem, das durchaus auf einem anderen System laufen kann, aber auch erst mal gelöst werden muss.
 

bitmuncher

Moderator
Du solltest dich ggf. mal mit grundlegendem Software-Design auseinandersetzen. Dazu gehören Dinge wie Modularität genauso wie die saubere Trennung von Backend und Frontend. Gerade im Bereich der Webapplikationen lässt sich diese Trennung sehr sauber umsetzen. Dann versuchst du auch nicht mehr Backend-Funktionalitäten in Flash zu packen, auch wenn ActionScript natürlich dazu verleitet.

Eine saubere Trennung hat mehrere Vorteile:
1. Du kannst verschiedene Frontends für verschiedene Plattformen (Mobil, Desktop, Headless) anbieten ohne dabei im Backend Anpassungen vornehmen zu müssen.
2. Alle Plattformen können das gleiche Backend nutzen, das sowieso auf deinem/n Webserver/n läuft.
3. Die Programmiersprache des Backends kann individuell den Bedürfnissen deines Programms entsprechend ausgewählt werden. Verschiedene Programmiersprachen haben verschiedene Vorteile. Während PHP gut in Sachen DB-Handling, String-Verarbeitung u.ä. ist, ist für eine Spiel-KI erfahrungsgemäß Python, R oder Ruby on Rails besser geeignet. Und bei Server-Management greift man eher zu Perl, Python oder Go.
4. Du kannst dein Backend in Subsysteme zerlegen, die dein Frontend einfach entsprechend anfragt. So kannst du z.B. das User-Management in einem gänzlich anderen Programm ablaufen lassen als z.B. deine Spiel-KI. Das Frontend muss im Endeffekt nur wissen, wo es welche Daten bekommen kann. Es müssen also nur saubere Schnittstellen definiert werden, was im Web-Bereich mit Rest-APIs auch kein Zauberwerk ist.

Wenn du das umsetzt, kannst du dein Flash-Frontend auch problemlos durch eines in HTML 5 oder als native Android- oder iOS-App ersetzen und deinen Flash-Kram weiterhin als Alternative anbieten.

Ich kenne übrigens gerade im Bereich der Mobile-Apps diverse Spiele, die aus vielen Microservices bestehen. Weil "Modularität" nunmal gestern war, zumindest im Bereich der Webapplikationen. Da wird immer mehr auf Microservices gesetzt, die man einfach in Clouds verteilen und entsprechend gut skalieren und damit Kosten sparen kann.
 
Oben