Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Webgamers. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Kael

Anfänger

  • »Kael« ist der Autor dieses Themas

Beiträge: 5

Danksagungen: 2

  • Nachricht senden

1

Dienstag, 5. Dezember 2017, 07:36

Browsergame mit Python programmieren?

Hallo!
Ich bin ganz neu hier und wollte direkt mal die Frage stellen!
Aber erstmal zu mir:
Ich heiße Andreas, komme aus dem Raum Köln und bin mittlerweile 27 Jahre alt.
Letztes Jahr habe ich angefangen zu studieren, vorher habe ich mehr schlecht als recht mit Python ein wenig rumgespielt.
Studieren tue ich Informatik, dort wird allerdings hauptsächlich C++ behandelt was sich für die Browsergame Programmierung allerdings nicht so recht lohnt.

Problematisch für mich ist, selbst jetzt, dass ich nirgends einen richtigen Ansatz dafür finde - und wenn dann soll das Spiel am liebsten auch mit Python gemacht sein (komplett) und auf Sachen wie .php wenn nur wegen der Homepage + Forum funktionieren.

Warum?
Letztlich vermisse ich die 'alten Spiele' - ich bin mi 10-14 damit aufgewachsen hauptsächlich Text-Browsergames gehabt zu haben, Kampf um MIttelerde, Ogame, als es noch nicht sooo grafisch war, waren eher so meine Interessen.

Allerdings waren sie mir auch nicht komplex genug - Die neuen 'Browsergames' halten mich allerdings insgesamt eher seltener bei Laune, auch möchte in im Bereich Multiplayer über Server & Co mehr Erfahrungen sammeln (Wovon wir in der Uni allerdings meist nur Theorie lernen, wie man IPs ausrechnet etc. aber aktiv kaum etwas wirklich damit machen)

Daher wollte ich mal hören ob das damit gut klappen könnte :)

mfg
Kael

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Bay (05.12.2017)

BlackScorp

Moderator

Beiträge: 1 242

Wohnort: 127.0.0.1

Danksagungen: 399

  • Nachricht senden

2

Dienstag, 5. Dezember 2017, 07:54

Hey, willkommen im Forum.

Wieso sollte C++ nicht klappen? Du kannst doch auch in C++ ein Server schreiben der auf Port 80 Lauscht und POST/GET Requests verbereitet und diese als HTML/JSON zurückschickt. Auch eine Anbindung an die Datenbnak kannst du ja in C++ machen.

Und wieso sollte es in Python sein? Kannst du die Programmiersprache besonders gut? Du hast vorhin zb das Forum angesprochen. Meistens möchte man ja so ein feature haben, dass man nach der Registrierung in deienm Spiel auch sofort ein Account im Forum hat. Dies wird schwierig mit Python, nicht alle Forum Software besitzen eine REST Schnittstelle die du mit einer URL ansprechen kannst. Und in Python kann hier dir niemand helfen. Außerdem willst du ja sicherlich nicht am Anfang schon Geld für ein Server ausgeben, kostenlose Hostings unterstützen aber meistens nur PHP (Außnahmen gibt es immer).

Will halt sagen, mit PHP und Browsergames wärst du sicherlich besser beraten als mit Python.

LG
Qualität eines Codes misst man in WTF/Sekunde

Kael

Anfänger

  • »Kael« ist der Autor dieses Themas

Beiträge: 5

Danksagungen: 2

  • Nachricht senden

3

Dienstag, 5. Dezember 2017, 08:18

Sagen wir, Python ist eine kleine Liebe von mir, auch weil man damit schnell Sachen auf die Beine gezogen bekommt.
Anders als bei C++, welches bei jeder Kleinigkeit abschmiert wenn irgendwo etwas nicht funktioniert.
Wenn C++ läuft ist es klar schneller und stabiler, sollte aber irgendwo sich im Programmcode ein Fehler eingeschlichen haben der sich vielleicht bei X-Möglichkeiten einschleicht ist das komplette System erstmal down.

Auch weil ich weiß das Python eben auch für Web- Anwendungen und Datenbanken gut und schnell genutzt werden kann.

BlackScorp

Moderator

Beiträge: 1 242

Wohnort: 127.0.0.1

Danksagungen: 399

  • Nachricht senden

4

Dienstag, 5. Dezember 2017, 08:33

Sagen wir, Python ist eine kleine Liebe von mir, auch weil man damit schnell Sachen auf die Beine gezogen bekommt.
Das geht mit PHP auch.
Auch weil ich weiß das Python eben auch für Web- Anwendungen und Datenbanken gut und schnell genutzt werden kann.
Und PHP ist der Vorreiter für Web Anwendungen(Siehe Wordpress/Wikipedia und co)

Also zu deiner ursprünglichen Frage, ja mit Python könnte man ein Browsergame programmieren, mit dem Django Framework. Aber mit PHP Wäre man besser beraten weil

1) Hier in der Community Programmiert jeder PHP außer Simbad der nutzt C++
2) Kostenlose Webhoster ausschließlich PHP Anbieten
3) Günstige Hoster für anderes als PHP Schwer zu finden sind
4) Anbindung an die Forensoftware wird komplexer, es seidenn du installierst dann ein Python Forum
5) Sagen wir, du hast dein Projekt jahrelang erstellt und betrieben und irgedwann hast du keine Lust/Motivation und möchtest, dass es von jemanden anderen betrieben wird, da wird es schwierig sein jemanden zu finden.
6) Auch wird es schwierig sein jemanden zu finden der bei dem Projekt mitmacht, es ist schon so schwierig aber die Programmiersprache würde da noch eine weitere Hürde aufbauen

Wenn du also gerne "gegen den Strom schwimmst" gerne mit Python, letzendlich wird ja eh nur HTML Code generiert beim Aufruf von einer URL und auf das Projekt bin ich sowieso gespannt;)

LG
Qualität eines Codes misst man in WTF/Sekunde

Kael

Anfänger

  • »Kael« ist der Autor dieses Themas

Beiträge: 5

Danksagungen: 2

  • Nachricht senden

5

Dienstag, 5. Dezember 2017, 09:21

Nun, erstmal stelle ich mir die Frage:
"Wie überhaupt anfangen?"

um PHP noch gut zu lernen fehlt mir nämlich leider die Zeit, wenn sollte ich schon an Dingen arbeiten die mich in meinem Studium unterstützen.
Da gehört C++(haupt), Java, Prolog und Python dazu.
Auf dem Papier steht das Projekt zumindest schon mal zu 30-40%
Wie das Kampfsystem funktionieren soll ist gedanklich auch schon klar, aber es steht schon in der Tradition der älteren Browsergames (Von Punkt A zu Punkt B. Ohne zwischenstops)

Eventuell sollte ich es auch mal hier ein wenig veröffentlichen um zu sehen ob es das so nicht schon besser gibt ^^

simbad

Profi

Beiträge: 1 043

Wohnort: Berlin

Beruf: Software Entwickler

Danksagungen: 184

  • Nachricht senden

6

Dienstag, 5. Dezember 2017, 09:26

Also ich würde python erst hinter dem Web-Server nutzen.

Das von BlackScorp angesprochene zerfusseln von HTTP-Requests halte ich für zu aufwändig. Das habe ich auch schon gemacht, bringt aber nicht wirklich was. Man muss sich ja nicht nur um die normalen erwarteten Requests kümmern, sondern vor allem auch um die ganzen Versuche den Server-Prozess zu killen um mit einem Exploit einbrechen zu können.

Darin liegt halt das größte Problem wenn man quasi gleich den Web-Server ersetzen will.

Ein wirklich großes Problem besteht auch immer darin Hilfe von anderen zu bekommen. Das wird mit python schwieriger. Das sollte man halt im Kopf haben, hat BlackScorp ja schon erwähnt.
„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“Albert Einstein
Das Entwickler BLOG
Pierre-Romain Main Page

DaBu

Administrator

Beiträge: 905

Danksagungen: 355

  • Nachricht senden

7

Dienstag, 5. Dezember 2017, 09:38

Willkommen bei Webgamers, ich kann den beiden hier zwar zustimmen, allerdings sehe ich kein Problem ein Spiel mit Python zu entwickeln. Ich kenne da zufällig jemand der gerade ein Browsergame mit einem Python Framework entwickelt.

Ich persönlich setze da lieber auf PHP, aber am Ende ist es ziemlich egal, solange es nicht eine gewisse Größe übersteigt. Die meisten machen bei der Entwicklung sowieso schon so viele Fehler, dass die Geschwindigkeitsunterschiede zwischen cpp und python und php usw. nicht sonderlich relevant sind.

Nur einmal als kleines Beispiel. Du optimierst deinen Code bis ins letzte, aber auf irgendeiner Unterseite machst du eine SQL Abfrage, welche keinen Index nutzt und zack hast du 20ms mehr Ladezeit und versaust dir damit den Schnitt.

Deswegen, ja es ist überhaupt kein Problem eine Webseite/Browsergame/Webapp/... mit Python zu schreiben.
Irgendwas mit Medien

BlackScorp

Moderator

Beiträge: 1 242

Wohnort: 127.0.0.1

Danksagungen: 399

  • Nachricht senden

8

Dienstag, 5. Dezember 2017, 09:39

Nun, erstmal stelle ich mir die Frage:
"Wie überhaupt anfangen?"
Tjoa das ist eine gute Frage, in PHP Würde ich sagen, installiere dir XAMPP und erstelle eine index.php und anschließend ein Registrationsscript. In Python, da kann ich persönlich nichts dazu sagen, kenne mich damit nicht aus.

Generell ist es aber gut etwas sichtbares schon mal zu schaffen, das motiviert dich persönlich mehr. Auch hat sich ja "Release early, Release often" durchgesetzt.

Zitat

wenn sollte ich schon an Dingen arbeiten die mich in meinem Studium unterstützen.
Keine Ahnung :D ich habe eine Ausbildung als C++ Entwickler gemacht, mit Borland Builder hab ich da meine "Anwendungen" zusammen geklickt. PHP Gefiel mir da wesentlich besser. Letzendlich arbeite ich jetzt als PHP Entwickler obwohl ich meine Abschlussprüfung in C++ entwickelte.

Dein Studium ist in paar jahren vorbei, deine Arbeit musst du bis zu deiner Rente machen, die meisten die bei uns nach der Uni anfingen, mussten sowieso eine komplett neue Programmiersprache lernen weil in unserer Region keine Jobs für C++/Java und Co gibt. Wenn dann nur ein paar wenige.

Ja Studium ist wichtig, Berufsleben ist aber wichtiger, bei deinem Studium geht es auch nicht um eine Programmiersprache sondern um die Theorie, die Syntax lernt man in paar Wochen auswendig, die tools und workflows in paar Monaten und nach 2 Jahren hat man alle speziellen eigenheiten einer Programmiersprache. Ich schweife ab..

Zitat

Auf dem Papier steht das Projekt zumindest schon mal zu 30-40%
Das ist doch schon mal ein guter Ansatz, dividiere das jetzt durch 3, da es sicherlich einige Dinge gibt, an die du nicht gedacht hast, bzw erst bei der Entwicklung stoßen wirst ;)

Zitat

Eventuell sollte ich es auch mal hier ein wenig veröffentlichen um zu sehen ob es das so nicht schon besser gibt ^^
Jep, dafür haben wir hier auch ein Bereich "In Entwicklung" da führen wir unsere "Entwicklertagebücher", die meisten nicht abgeschlossen :D

Mal sehen wie weit du kommst, vielleicht wirst du der erste sein der das auch wirklich durchzieht ;)

LG
Qualität eines Codes misst man in WTF/Sekunde

simbad

Profi

Beiträge: 1 043

Wohnort: Berlin

Beruf: Software Entwickler

Danksagungen: 184

  • Nachricht senden

9

Dienstag, 5. Dezember 2017, 09:53

Achso. Nur weil BlackScorp das erwähnt hat.

Ja. Meine Creation ist in C++ geschrieben, aber lediglich das BackEnd. Seiten-Layouts gehen über PHP und Daten werden per Web-Sockets direkt mit dem Spiel ausgetauscht, wenns denn mal irgendwann funktioniert. :D
„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“Albert Einstein
Das Entwickler BLOG
Pierre-Romain Main Page

Kael

Anfänger

  • »Kael« ist der Autor dieses Themas

Beiträge: 5

Danksagungen: 2

  • Nachricht senden

10

Dienstag, 5. Dezember 2017, 12:09

Nun, dann möchte ich erstmal ein wenig über das 'Konzept' freistellen:

Wie gesagt: Ich setze da eher auf 'ältere' Systeme und einfach mal das 'Grundkonzept'. Es soll auch eher mit festen, konstanten Werten, mit modifikationen, gearbeitet werden.

Das Spiel ist auf Fantasy ausgelegt, allerdings orientiert im Bereich 1400-1500

Hauptressourcen:
Die Hauptressourcen sind folgende:

-Nahrung
Nahrung dient zur Produktion von Soldaten

-Stein

Dient zur Produktion von Belagerungswaffen und Gebäuden

-Holz
Dient zur Produktion von Belagerungswaffen und Gebäuden

-Eisen/Metallwaren
Dient zur Produktion von Soldaten und Gebäuden


-Wohlstand
Dient zum Unterhalt von Soldaten, wird generiert durch Bevölkerung. Wohlstand ist ein 'globaler' Wert des Spielers

-Wehrpflichtige/Bevölkerung
Dient zur Produktion von Soldaten, Milizen und generiert Währung

Bevölkerung gibt die maximale Anzahl der Bewohner an, die linke Seite die 'Wehrpflichtigen' - Im Prinzip ist das rechte ein Konstanter unveränderlicher Wert, während das linke 'benutzt' werden kann.

Bedeutet:
z.B. 1000/1000
-> ich kann X-Soldaten produzieren
-> weil die Bevölkerung bei 1000 ist bekomme ich für diesen regelmäßigen Wohlstand
1 Bevölkerung kreiiert im Schnitt 5 Wohlstand. 1 Soldat benötigt im Schnitt 1-3 Wohlstand.

Sonderressourcen:
Ggf sollen auch ein paar Sonderressourcen für spezielle Einheiten hinein. Aber erstmal das Grundspiel

Zugehörigkeit/Stabilität:
Die Zugehörigkeit/Stabilität ist davon abhängig wie die Erlasse ausgegeben wurde, ob die eigene Kultur mit der neuen Kompatibel ist und ggf 1-2 weitere entscheidungen. Falls die Zugehörigkeit unter 50% sinkt, soll ein Trigger ausgelöst werden der mit einer Wahrscheinlichkeit, stündlich, Truppen generiert und von einer nicht eroberbaren Stadt zu dieser Stadt geschickt werden um diese anzugreifen (Rebellenkonzept)


Weltkarte:
Die Weltkarte besteht aus quadratischen Feldern. Die quadratischen Felder geben an:

-Grasland (+%Nahrung)

-Wald (+%Holz, +5% Verteidigung)

-Gebirge (+% 10% Verteidigung)

-Steinbruch (+%Stein, -5% Verteidigung)

-Mine (+%Eisen)

-Besondere Ressource (+% Wohlstand, +% Moral)


-Siedlung
versch. Typen

Siedlungstypen:
-Hauptstadt
Keine Nachteile, + Bevölkerung

-Stadt
Nahrungs-, Holz-, Steinproduktion um 25% verringert, Bevölkerung um 25% erhöht. Bestmögliche Herstellungsgebäude

-Dorf
Erhöhte Nahrungs und Holzproduktion. Mittlere Gebäude

-Außenposten
Erhöhte Stein und Eisenproduktion. Bevölkerung um 25% verringert


Truppen:
Truppen werden in Städten, Siedlungen und Außenposten gebaut.

Werte der Truppen:

Offensivkraft:
Gibt an wie Stark die Einheit bei einem Angriff ist

Defensivkraft:
Gibt an wie Stark die Einheit bei einem Angriff ist

Disziplin:
Gibt einen Bonus auf die Offensiv- und Defensivkraft

Moral:
Sagt aus wie stark die Truppe die Offensiv und Defensivkraft ausnutzt. ( Moral ist bei 50% - Offensivkraft bei 1000. Also ist die Offensivkraft aktiv bei 500 )
Bei Verteidigung ist die Moral um +5% immer erhöht.

Rückzugswahrscheinlichkeit (Bei ausgeführten Angriff) - (kann durch Generäle erhöht oder verringert werden)

General:
Erhöht oder Verringert die eigene oder gegnerische Moral und Disziplin. Gibt Außerdem


Dazu eben noch andere Dinge wie Karren die von A nach B geschickt werden können. Handel zwischen Mitspielern und Reichsgründungen... So im Gesamten.

Beispiel einer Karte das ich mal fix in RPG Maker gebastelt hab

https://i.imgur.com/ZgFmkfR.jpg



Kulturen:
Kulturen wählt man am Anfang aus. Diese Beeinflussen ebenfalls die "Akzeptanz" und Wohlstandsentwicklung.

BlackScorp

Moderator

Beiträge: 1 242

Wohnort: 127.0.0.1

Danksagungen: 399

  • Nachricht senden

11

Dienstag, 5. Dezember 2017, 13:21

Immerhin kann ich dir ein paar Kniffe verraten.

Die Karte kannst du in CSS wunderbar umsetzen, du kannst alle einzelteile deiner Karte in ein Bild packen und mit background-position dann arbeiten.

Hier ein Beispiel:

https://github.com/BlackScorpGames/webrp…rrain_atlas.png und das CSS dazu

https://github.com/BlackScorpGames/webrp…e.css#L152-L155


ich generiere dann eine Klassen im div

<div class="map">
<div class="tile terrain_atlas" style="background-position:-64px -64px">
</div>
</div>

das Background rechne ich an der Stelle automatisiert aus.

Wenn dein Atlas allerdings klein ist, kannst du deine Teile wie hier definieren

http://cccpmik.wmw.cc/isomap/


Dann, wenn du ein Weg zwischen Zwei Punkten ermitteln willst, dazu nimmt man am besten A* Implementierung. Ich habe dazu eine PHP Version entwickelt, kann man sicherlich in Python umwandeln.
https://github.com/BlackScorp/astar

Wenn du eine Karte zufällig generieren willst, nimmt man dazu Perlin Noise.

Hier hast du zb ein Tutorial wie man es machen könnte http://www-cs-students.stanford.edu/~ami…map-generation/ enthält sogar Java Beispiel Code.

Dann gibt es den Trick mit den Ereignissen. Bei Browsergames passieren viele Dinge im Hintergrund und viele machen den Fehler es mit Cronjob zu lösen.

Du willst ein Gebäude bauen, du klickst auf "Build" und in 5 Minuten soll das Gebäude stehen. Man macht das nicht im Minuten takt sondern Berechnet alles wenn es angefagt wird.

Ganz wichtig Dabei ist, dass dein User einen "lastAction" Zeitstempel hat, so kannst die Zeit differenz ermitteln zwischen Jetzt und wann der User zu letzt was getan hat und dann alle Eregnisse abklapperst. Zwischen den ereignissen musst du die Rohstoffe nachberechnen.


Also beim klicken auf "Build" machst du ein eintrag in "events" Tabelle mit der "action" "Build" und bei "expires" trägst du den Zeitstempel ein wann es vorbei ist für den User X.
Bei Angriffen wird das Ganze Problematischer, aber versuch da nicht ein Event zu kreieren wie etwa "Angriff" lieber mehrere kleinere Events wie etwa "habe angegriffen" und das gegenstück "wurde angegriffen", "bewege truppen nachhause","berechne rohstoffe" usw. mit vielen kleinen Events wird zwar deine Datenbank für kurze Zeit voller, dafür aber die Logik für einzelen Aktion kleiner.

Und dann kannst du noch das Chronjob einbauen, der die Events jede Stunde oder so abarbeitet. Damit, wenn der User nach zwei Monaten Offlinezeit, wieder online kommt, nicht erstmal 2 Stunden warten muss bis alle events abgelaufen sind.

Zu dem Handel zwischen Spielern. Sei vorsichtig bei den Eingabefeldern, bei Sprachen wie PHP und Python wird ein ein Text gerne in Zahlen umgewandelt und dadurch kommen komische Sachen zu Stande.

Ich hatte schon mal Spiele gespielt, bei denen ich 1*-100000 Einheiten "Gekauft" habe und mir dadurch Sachen gutgeschrieben wurden. Auch dropdowns helfen da nicht denn versteckte Inputfelder kann man wunderbar in dem Developer Tool manipulieren.


Das sind jetzt so tricks, die sind Programmiersprachen unabhängig. Wenn du weitere Fragen hast, frag, bezüglich Python, da kann dir hier keiner Helfen, sorry
Qualität eines Codes misst man in WTF/Sekunde

simbad

Profi

Beiträge: 1 043

Wohnort: Berlin

Beruf: Software Entwickler

Danksagungen: 184

  • Nachricht senden

12

Dienstag, 5. Dezember 2017, 13:35

Die Spielidee, oder das "Konzept", ist ja schon beschrieben. Es wäre halt mal spannend wie es realsiert werden soll. Mit einem Web-Server für die Seiten-Auslieferung? Alles in der DB und dann bei Events alles mögliche erledigen? Oder ein "Server-Prozess"?

Es gibt halt viele Wege nach Rom. Aber es ist halt auch davon abhängig wie einzelne Teile realisiert werden sollen.
„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“Albert Einstein
Das Entwickler BLOG
Pierre-Romain Main Page

Kael

Anfänger

  • »Kael« ist der Autor dieses Themas

Beiträge: 5

Danksagungen: 2

  • Nachricht senden

13

Dienstag, 5. Dezember 2017, 13:59

Schon mal danke.
Wie gesagt:
Das ganze ist für mich Neuland, weil es ja auch vor allem um die Sicherheit des Servers letztlich geht (Hacken in das System z.B.) - und auch die Wartung von all dem :)
Also eine kleine Herausforderung.

allgemein dachte ich daran die Ressourcen nur stündlich abzufragen um dadurch eine DB Entlastung zu haben und diese nur an einem Punkt zu haben.

Also alle 60 Minuten werden die Rohstoffe und Co berechnet. Bauen der Gebäude, Einheiten, Bewegungen kann man allerdings relativ gleichzeitig machen.

Auch bin ich gerade am überlegen ob es nicht sinnvoller wäre, dieses Spiel in einer Art App zu realisieren, da dadurch dann die 'Multiplayer-Erfahrung' etwas größer sein könnte.

BlackScorp

Moderator

Beiträge: 1 242

Wohnort: 127.0.0.1

Danksagungen: 399

  • Nachricht senden

14

Dienstag, 5. Dezember 2017, 15:27

Also alle 60 Minuten werden die Rohstoffe und Co berechnet. Bauen der Gebäude, Einheiten, Bewegungen kann man allerdings relativ gleichzeitig machen.
Alle 60 MInuten = Viele Abfragen jede Stunde, je mehr User desto mehr Berechnung. Mit den "Events" wird es nur bei Aktiven Usern berechnet, es ist optimaler. Alle paar minuten kannst du die Events abarbeiten aber Rohstoffe würde nur berechnen, wenn der User Online kommt. Nur Events und Aufruf der Seite kann die Rohstofberechnung beinflussen.
Qualität eines Codes misst man in WTF/Sekunde

Ähnliche Themen

Social Bookmarks

Thema bewerten