Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

221

30.08.2016, 08:45

Also ich kann im Skriptkontext verschiedene PHP-Funktionen deaktivieren, damit fange ich mit der nächsten Version direkt an. Die erste Kandidatenliste wären schon einmal alle Dateisystem- und Verzeichnisfunktionen.
Habt ihr weitere Vorschläge, was schädlich sein könnte, was man ebenfalls deaktivieren sollte?

Puh, an dieser Stelle merkt man, was für ein wahnsinniger Haufen von zusammengewürfelten Funktionen PHP doch ist. Wenn man es wirklich sicher machen wollte, müsste man wahrscheinlich 90% der Funktionen deaktivieren. Auf jeden Fall alles, was mit Netzwerk, Dateien und Betriebssystem zu tun hat, inklusive natürlich system, shell_exec (+ diverse Varianten), Backtick-Operator, Prozess-Erzeugung, ...

Oder besser noch: Alles deaktivieren und nur gezielt einzelne sinnvolle Funktionen aktivieren. Das ist weniger Arbeit und sicherer. Denn irgendwas vergisst man sowieso.

Mal eine Frage: Warum eigentlich PHP? Wenn du es sowieso nach .NET übersetzt, wäre dann nicht C# die offensichtlichere Wahl?

LInsoDeTeh

Treue Seele

  • »LInsoDeTeh« ist der Autor dieses Themas

Beiträge: 372

Wohnort: Essen, Deutschland

Beruf: Team Lead Inhouse-Entwicklung

  • Private Nachricht senden

222

30.08.2016, 09:17

Oder besser noch: Alles deaktivieren und nur gezielt einzelne sinnvolle Funktionen aktivieren. Das ist weniger Arbeit und sicherer.

Ja, daran habe ich auch schon gedacht, das ist wahrscheinlich die beste Variante.

Zitat

Mal eine Frage: Warum eigentlich PHP? Wenn du es sowieso nach .NET übersetzt, wäre dann nicht C# die offensichtlichere Wahl?

Ich übersetze das ja nicht selbst nach .NET, das macht die Bibliothek, die ich verwende (Phalanger), denn einen eigenen PHP-Parser wollte ich nicht entwickeln. Missionen sollen ja auch über den Steam Workshop oder als Download verfügbar gemacht werden, sodass jeder Missionen skripten und dem Spiel hinzufügen kann. D.h. ich brauche eine Skriptsprache, wo ich Objekte und Funktionen basierend auf Skriptcode zur Laufzeit erstellen kann und nicht zur Compiletime. Da bekomme ich mit C# noch größere Sicherheitsprobleme. Die Community, die Missionen entwickelt, soll nicht ihre Mission oder sogar Teile des Spiels erst kompilieren müssen.
Die übliche Wahl für Skriptsprachen sind bei den meisten Spielen, die modfähig sind, entweder PHP oder LUA. Ich habe damals nach Bibliotheken gesucht, womit ich einfach ein PHP- oder LUA-Skript laden kann, und aus meinem Spielcode heraus die Funktionen in diesem Skript aufrufen kann. Und da war Phalanger damals einfach die beste und einfachste, zumal es dafür auch eine Visual Studio Erweiterung gibt, womit man das direkt debuggen kann (plus nette Features wie IntelliSense, debug into, goto definition, usw.).
Wie unglaublich einfach es geworden ist, Missionen für Galactineers zu entwickeln, habe ich in meinem Video demonstriert, das auf der vorigen Threadseite zu finden ist. Ich bin mit dem Gesamtkonstrukt PHP und Galactineers API in der aktuellen Form wirklich sehr zufrieden. Jetzt müssen wir das ganze "nur noch" sicher bekommen. :-)

Goldwing Studios

Treue Seele

Beiträge: 359

Wohnort: Heidelberg

Beruf: Softwareentwickler, Vertriebler

  • Private Nachricht senden

223

31.08.2016, 08:35

also ich würde das ähnlich wie David angehen und alle Funktionen ausschalten und dann nur noch einzelne Funktionen hinzufügen. Vielleicht wäre es aber auch eine Idee, (wie bei Android-Apps schonmal gesehen) eine Rechte-Anforderung einzubauen. So können Entwickler von Missionen eventuell noch eigene Script-Dateien oder Text-Dateien mit Inhalt mitliefern und fragen den jeweiligen User (der sich die neue Mission installieren möchte) zuerst ob er dem Missions-Plugin die benötigten rechte geben möchte. Wenn nein, nix installieren/einspeisen. Wenn ja, dann setze irgendwo einen Eintrag (am besten in einer Datei, auf die nur deine Anwendung Zugriff hat) für das jeweilige Plugin.

Ist zwar etwas umständlicher, aber du hast dann nicht mehr den Fall, dass du nachträglich irgendwelche PHP-Funktionen freischalten musst. Und so hat jeder User seine Sicherheit selbst im Griff.

MitgliedXYZ

Alter Hase

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

224

31.08.2016, 09:30

Allerdings sollte es für die Nutzer so einfach wie möglich sein. Eine Rechtefreigabedialog vor Missionsbeginn verwirrt vermutlich einige?

LInsoDeTeh

Treue Seele

  • »LInsoDeTeh« ist der Autor dieses Themas

Beiträge: 372

Wohnort: Essen, Deutschland

Beruf: Team Lead Inhouse-Entwicklung

  • Private Nachricht senden

225

31.08.2016, 10:03

Ich denke für reine Missionen machen derartige erweiterte Berechtigungen zum Schreiben von Dateien o.ä. relativ wenig Sinn. Wenn man die API irgendwann mal auf den Sandboxmodus erweitert, sodass die Leute ähnlich wie bei Minecraft ganze Serverscripte schreiben können, dann wäre das ein anderes Thema. Aber für einzelne Missionen, die über den Workshop verteilt werden, reichen denke ich eingeschränkte Funktionen.

Goldwing Studios

Treue Seele

Beiträge: 359

Wohnort: Heidelberg

Beruf: Softwareentwickler, Vertriebler

  • Private Nachricht senden

226

31.08.2016, 10:19

ich mein ja nur, ob du die Dunktion jetzt schon eineichtest oder nicht.

Wie gesagt, so würde ich mich als User "sicherer" fühlen. Weil ich über alles die Kontrolle hab. Und vielleicht möchte ich ja als Missionsentwickler vielleicht nochmals zusätzlichen Content in einer separaten Datei zur verfügung stellen.

Mit eingeschränktem Funktionsumfang für PHP schränkst du die Entwickler ein. Und mit der Sicherheit den Nutzer. Je nachdem wie groß die Missionsdateien sind/wie viel Umfang sie haben wird mal das Rechte Fenster eh nich so oft zu Gesicht bekommen.

Aber is ja deine Sache ;)

Edith:
Nur das du mich nicht falsch verstehst, du solltest hierbei auch alle Funktionen ausschalten bestimmte wieder freigeben, dem Nutzer aber die Möglichkeit der Wahl geben. Der weiß nämlich eventuell nix von PHP und den "Gefahren" die damit einhergehen können...

LInsoDeTeh

Treue Seele

  • »LInsoDeTeh« ist der Autor dieses Themas

Beiträge: 372

Wohnort: Essen, Deutschland

Beruf: Team Lead Inhouse-Entwicklung

  • Private Nachricht senden

227

09.09.2016, 09:22

Mal wieder ein kleines Update zwischendurch:

Tech-Level 4 (also alle Gebäude, der Level 4 Schiffsdesigner und alle neuen Schiffsmodule), sowie das Hangarfeature sind vollständig implementiert.
Neben der bereits angekündigten 2-Spieler-Mission "Rosinante", in der man ein Handelsschiff durch gegnerische Gefilde eskortieren muss (Loot: Geld, Harvs Baumaterialien, Harvs Bauteile für den Schiffsdesigner, sowie die Rosinante als Schiffsbauplan), arbeiten wir parallel noch an zwei weiteren PVE-Missionen:
a) In "Lost Cargo" (1-Spieler-Mission) müssen Kisten im Perimeter einer Caranum Station aufgesammelt werden. Diese müssen zurück zur Station gebracht in Sicherheit gebracht werden, bevor der Timer abläuft und eine neue Welle Piraten die Station angreift. Insgesamt dürfen nicht mehr als 5 Kisten verloren gehen. Als Loot gibt es Geld, Caranum Baumaterialien, sowie Caranum Bauteile für den Schiffsdesigner. Die Entwicklung dieser Mission ist bereits fast abgeschlossen.
b) In "The Jump Gate" (1-Spieler-Mission) wurde ein Sprungportal von einer Separatistengruppe angegriffen und zerstört. Man muss die Energiekerne finden und beim Wiederaufbau des Sprungportals helfen. Parallel versuchen weitere Menschen, die kleinen Portale im Umfeld zu erreichen, um sich den Separatisten anzuschließen, um das Portal weiter anzugreifen. Jeder reparierte Flügel des Sprungportals bring einem eine Funktion, die für das weitere Vorgehen hilfreich ist (z.B. Produktion weiterer Schiffe). Als Loot gibt es Geld, Morgrax- und Piratenbaumaterialien, sowie Morgrax und Piraten Bauteile für den Schiffsdesigner.

Der Plan ist es, als großes Content-Upgrade das Tech-Level 4, sowie alle drei PVE-Missionen auf einmal zu releasen. Da alle drei Missionen unterschiedliche Stile haben (Eskortieren, Transportieren, Verteidigen) erweitern wir in diesem Rahmen die API um viele neue Funktionen, um dort auch eine große Flexibilität für weitere Missionen zu gewährleisten, denn auch die Missionen, die Galactineers nativ bereitstellt, verwenden die eigene API (und sind daher PHP open source) und keine spezialisierte Programmierung im Spielcode. Unter anderem haben wir bereits folgende neue Features in der API:
* Kamerafokussierung (zwecks Storytelling)
* Schiffssprünge
* Replizieren/Bauen von Schiffen innerhalb von Missionen
* Buttons mit Custom Funktionalität (habe ich ein bereits ein paar Beiträge vorher erklärt)
* Schiffsstatussymbole

Zwischendurch haben wir noch viele andere Kleinigkeiten implementiert, so haben wir jetzt z.B. eine richtige Minimap in den PVE-Instanzen, das Ende der Map ist durch ein Energieschild optisch zu erkennen, und die Detektorfunktion der Schiffe, die bisher nur Ressourcen im Sandboxmodus entdecken konnten, markiert nun auch feindliche Einheiten in PVE-Instanzen.

LInsoDeTeh

Treue Seele

  • »LInsoDeTeh« ist der Autor dieses Themas

Beiträge: 372

Wohnort: Essen, Deutschland

Beruf: Team Lead Inhouse-Entwicklung

  • Private Nachricht senden

228

10.09.2016, 11:14

Heute haben wir die Combat Engine fertiggestellt. :-)
D.h., KI-gesteuerte Schiffe schießen nun zurück und verfolgen die Schiffe des gegnerischen Teams (feindliche Schiffe schießen also auf die Schiffe der Spieler, verbündete auf die der Gegner), und auch die eigenen Schiffe wehren sich automatisch bei Beschuss. Desweiteren funktionieren auch nun die Verteidigungstürme, diese schießen automatisch auf gegnerische Schiffe in Reichweite und können selbst wiederum auch angegriffen werden. In dem Rahmen wurde auch Balancing betrieben, d.h. es wurden Hitpoints von Gebäuden, sowie Schaden und Feuerintervall der einzelnen Waffentypen angepasst.
Bei der Gelegenheit gab es auch mal wieder ein paar neue Events und Funktionen für die API.

Summa summarum: Wir haben nun also endlich funktionierende Gegner (Türme und Schiffe), die angreifen und zurückschießen! :thumbsup:

Hier eine zufällige Zusammenstellung von ein paar Kampfsituationen aus den neuen PVE Missionen:




Nun können wir also auch die o.g. PVE Missionen zuende skripten und einem Balancing unterziehen.
Es dauert also nicht mehr lange, bis PVE und Kämpfe/Schlachten endlich in Galactineers Einzug halten. :-)

Eventuell schmeißen wir die Tage einen Contest, sodass wir auch ein paar Community-Missionen bekommen und so auch zur API mal etwas Feedback erhalten von Leuten, die sich wirklich damit auseinandergesetzt haben (z.B. Bugs oder neue Events und Befehle, die sich gewünscht werden). Dort gibt es dann für die besten Missionen auch ein kleines Preisgeld.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LInsoDeTeh« (10.09.2016, 11:53)


LInsoDeTeh

Treue Seele

  • »LInsoDeTeh« ist der Autor dieses Themas

Beiträge: 372

Wohnort: Essen, Deutschland

Beruf: Team Lead Inhouse-Entwicklung

  • Private Nachricht senden

229

15.09.2016, 19:12

Kurzes Update:
Die Entwicklung der Mission "Lost Cargo" ist nun vollständig abgeschlossen. Aktuell arbeite ich mit Hochdruck an der Mission "The Jump Gate". Es geht sehr gut voran, und der große Content-Release mit Level 4 und insgesamt drei PVE-Missionen, der das militärische Zeitalter in Galactineers einläutet, rückt immer näher. Zu dem Anlass werden wir wohl auch den Steam Trailer neu drehen (mit echten PVE-Szenen aus den drei Missionen), sowie ein "Getting Started" Video, um neuen Spielern den Einstieg zu erleichtern.

LInsoDeTeh

Treue Seele

  • »LInsoDeTeh« ist der Autor dieses Themas

Beiträge: 372

Wohnort: Essen, Deutschland

Beruf: Team Lead Inhouse-Entwicklung

  • Private Nachricht senden

230

12.10.2016, 18:37

Hallo Leute,

vor dem anstehenden großen Content-Upgrade (mit Level 4 und neuen PVE Missionen) haben wir uns erst mal dem Thema "Einstiegshürde" angenommen, da wir festgestellt haben, dass viele Spieler zu Beginn Schwierigkeiten hatten, zu verstehen, was sie überhaupt tun können oder sollen. Hier sind die Lösungen:

1. Interaktives Tutorial
Es gibt ein brandneues und spielbares Tutorial, das den Spieler durch den Schiffsbau, Blöche abreißen/bauen und dem Aufbau einer grundlegenden Wirtschaft leitet. Es erklärt die Steuerung und wie man an Ressourcen kommt und diese in der Gießerei in baubare Blöcke und Items verarbeitet.

2. Wusstest du schon?
Diese kleinen Hilfetexte erscheinen ab sofort alle paar Minuten im Chat. Sie erklären fortgeschrittenere Features als im Tutorial und weisen den Spieler auf Möglichkeiten hin, die er noch nicht kennt.

3. Videotutorial Bildschirme
Diese kennt ihr ja bereits. Diese spawnen in der Hauptbasis und zeigen kontextabhängig Informationen zur Spielmechanik, um diese zu erklären, oder aus dem Tutorial in Erinnerung zu rufen.

4. Hilfetexte/-fenster
Jedes Gebäude hat ein [?] Icon, welches -wenn es angeklickt wird- den Sinn des Gebäudes erklärt und wie man es benutzt. Das macht fortgeschrittenere Gebäude wie die Andockbucht oder das Forschungslabor verständlicher zu nutzen. Desweiteren werden im Schiffsdesigner jetzt die Tastatursteuerung sowie Informationen zum aktuell ausgewählten Modul angezeigt. Damit zielen wir auf Probleme, die wir immer wieder bei Spielern gesehen haben, die den Schiffsdesigner zum ersten Mal verwenden.

Wir hoffen, das hilft dabei, den neuen Spielern die Spielmechanik und -komplexität näher zu bringen, sodass diese wissen, was sie tun müssen und den Spaß am Spiel erkennen und beibehalten.
Das war das letzte vorbereitende Update vor dem angekündigten großen Content Update. Dazu demnächst mehr :-)

Werbeanzeige