Wie Spiele ohne Code weitergeben?

Für Fragen von Einsteigern und Programmieranfängern...
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Wie Spiele ohne Code weitergeben?

Beitrag von MacWomble »

Windows hat noch weitere Probleme:

1. Die Registry = Feststellbremse (die ini-Dateien waren besser) :evil:
2. Virenanfälligkeit (auch durch die Vielzahl an verfügbaren Viren) - Virenschutz bremst zusätzlich :evil:

PS:
Ich habe mich über meine 8GB RAM nicht beschwert, die reichen ja locker aus 8) (ohne Container :twisted: )

... und nein, ich möchte definitiv nicht mehrere Versionen ein und derselben Library auf dem System haben. (allenfalls übergangsweise :oops: ) :twisted:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

tryunderror
Beiträge: 57
Registriert: Di 9. Okt 2012, 17:32

Re: Wie Spiele ohne Code weitergeben?

Beitrag von tryunderror »

fliegermichl hat geschrieben:Man muß den Code für jede Zielplattform compilieren (Stichwort crosscompile). Die Binaries kann man dann weitergeben.


Und wie ist es mit Apple oder Android oder DOS zb Freedos?

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Wie Spiele ohne Code weitergeben?

Beitrag von fliegermichl »

Für DOS gibt es ein entsprechendes Target. Android und Iphone geht meines Wissens nicht.
Für den Mac gibt es auch ein entsprechendes Target.

Ich vermute, da der klassische PC immer weniger genutzt wird und es immer mehr in die Richtung mobiler Geräte geht, daß das auch ein Grund für die weniger werdende Nutzung von Lazarus ist.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie Spiele ohne Code weitergeben?

Beitrag von af0815 »

tryunderror hat geschrieben:
fliegermichl hat geschrieben:Man muß den Code für jede Zielplattform compilieren (Stichwort crosscompile). Die Binaries kann man dann weitergeben.

Und wie ist es mit Apple oder Android oder DOS zb Freedos?

Android -> LAMW. Ist aber nicht ein einfaches Crosscompile, da auch das Widgetset ein anderes ist, da gibt es eine Bridge die auf die nativen Java Komponenten mappt. Nicht ganz einfach einzurichten :-) Ich kämpfe gerade damit :shock: Aber auf meinen Tablett habe ich schon die erste App - mehr schlecht als recht - laufen gelassen. Für das Publishen benötigt man dann den Google Store, sonst hat man mit den meisten Devices Probleme. Ich würde auch nicht irgendwas installieren 8)

Für Apple habe ich absolut keine Infos. Außerdem habe ich eine Allergie gegen angebissenes Obst. :mrgreen:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Wie Spiele ohne Code weitergeben?

Beitrag von Warf »

tryunderror hat geschrieben:Und wie ist es mit Apple oder Android oder DOS zb Freedos?


Apple MacOS: Da muss man erst mal ein bisschen was über Mac OSX wissen. Früher war Mac OSX noch ein 32 Bit betriebsystem, mit Carbon als Framework und SystemAPI (ist bei Apple beides in einem), mit 64 bit kam dann Cocoa. Für beides gibts ein Widgetset in Lazarus, allerdings scheint es unter den Lazarus entwicklern nur wenige MacOS nutzer zu geben, sodass Carbon zwar zum größten Teil unterstützt wird, Cocoa aber praktisch immernoch recht in den Kinderschuhen steckt (d.h. nur ein Bruchteil der LCL komponenten werden unterstützt). Wenn du nur simple Komponenten (Button, Edits, etc.) brauchst reicht Cocoa sogar aus, aber selbst da ist nicht alles an Funktionalität bereitgestellt (ich glaub fokus ist z.B. noch fast nicht vorhanden). Wenn du Carbon benutzt kannst du aber keine 64 bit anwendungen schreiben sitzt auf 32 bit fest. Und Carbon funktioniert zwar, ist aber zum einen nicht schön (es ist halt nicht im grafischen stil moderner OSX versionen, sondern sieht immernoch aus wie MacOSX 10.4 oder so), und hat auch ne ganze Menge probleme.

Größere Projekte Porte ich schon lang nicht mehr auf OSX, da es einfach zu viel aufwand ist die ganzen eigenheiten von Carbon zu bedenken, und Cocoa für nicht triviale programme einfach nicht zu benutzen ist. Lange zeit war die einzige Option um vernünftig alle Features zu verwenden entweder GTK2 oder QT 4 zu verwenden, das ist aber auch ein riesen Problem (GTK2 benötigt einen X-Server den Apple seit 10.6 oder so nicht mehr selbst mitliefert, und separat installiert werden muss), und um QT4 auf meinem Mac zum laufen zu bekommen hab ich locker mal 3 Tage gebraucht gehabt. Noch dazu hast du da das selbe Problem das die anwendungen einfach aussehen als wären sie frisch aus den 90ern genommen worden (Grade GTK2 sieht auf OSX echt beschissen aus, QT4 ähnelt sehr an Carbon). Allerdings hast du dabei den vollen funktionsumfang der LCL (Besser als Carbon oder Cocoa) sowohl für 32 als auch 64 bit anwendungen. Mittlerweile unterstützt Lazarus aber QT5. Da ichs mittlerweile aufgegeben hab mit Lazarus für Mac zu Programmieren hab ichs noch nicht ausprobiert, könnte aber eventuell eine Lösung für das MacOS dilemma sein (da es ein aktuelles Framework ist, mit aktuellem design, und großem Funkitionsumfang).

Aber grundsätzlich ist mein Rat, Lazaurs und Mac OSX ist eher nichts was du freiwillig machen willst.

IPhone ist da wieder eine andere geschichte, denn es gibt tatsächlich einen Crosscompiler auf IOS für den FPC. Aber soweit ich weiß ist die Lazarus unterstütztung 0. Du müsstest also vom Scratch mit den SystemAPI's arbeiten (Stichwort PasCocoa). Das kann funktionieren, z.B. wenn deine App nur auf OpenGL basis läuft kannst du sie wahrscheinlich recht simpel porten, aber IOS spezifische API funktionen musst du halt alle selbst benutzen.

Übrigens braucht man einen Mac um für IPhone entwickeln zu können (der maximal 6 jahre alt sein darf, sich also einfach nen alten 2010er imac holen is also nicht, du musst schon mindestens nen 2014er haben, und die kosten auch gebraucht noch ein paar hundert euronen), weshalb iphone wahrscheinlich eh erst mal flach fällt (Mac OSX VM's sind ein absoluter krampf, und ich könnte mir sogar vorstellen das das auch nicht so trivial geht, da apple aktiv versucht dir da steine in den weg zu legen)

Android ist auch wieder ne eigene geschichte. Da gibt es zwei ansätze, der eine ist die Idee die LCL auf Android zu porten mit hilfe des Custon Drawn Widgetsets, wie weit da der Status ist weiß ich nicht, als ichs das letzte mal probiert hab wars noch unbenutzbar.
Das andere ist LAMW. Ein absoluter Clusterfuck von einer Toolchain, funktioniert aber erstaunlich gut (immernoch besser als googles android studio :twisted: ). Die Idee ist du schreibst eine Native Pascal anwendung, welche dann Java klassen über die JNI Bridge aufruft, welche dann mit einem Java frontend reden. Natürlich muss jede Komponente dann einmal für das Frontend in Java und für das Backend in Pascal implementiert werden, was den aufwand recht groß macht, und daher sind erst einige grundkomponenten implementiert. Außerdem versucht es gar nicht erst die ganze LCL (als widgetset) zu porten, sondern konzentriert sich auf Android spezifische Komponenten. Crosskompatibilität kannst du also komplett vergessen.

Das hauptproblem ist vor allem das Google Android nicht für Crosskompatibilität auslegt. Die offizielle entwicklertoolchain ist kompletter Müll, und die beste Möglichkeit ne mobile app zu entwickeln hast du mit Microsofts Xamarin (+ mono) oder mit Apache Cordova oder ähnlichem (was auf Webtechnologie aufbaut). Das beste ist, viele hersteller bringen keine regelmäßigen Android updates raus, d.h. es kann sein das du deine App eh 3 mal schreiben musst, einmal für das neuste Android, dann für die zwei vorrigen versionen, damit du ne halbwegs gute coverage hast. Deshalb ist es mMn komplett bescheuert direkt auf Android zu entwickeln, und die nutzung eines Zwischenframeworks wie Cordova oder Xamarin ist da praktisch die einzige möglichkeit dabei nicht vollends den verstand zu verlieren.

Was mal interresant wäre, wäre zu schauen wie man mit Cordova und Pas2JS Mobile Apps entwickeln könnte, denn mit webtechnologie Mobile apps zu entwickeln ist äußerst angenehm (Für die 2-3 Apps die ich schon mal geschrieben hab auf jeden fall recht simpel gewesen). Ansonsten muss ich wohl leider sagen das Mobile entwicklung mit Lazarus nicht der Brüller ist.

Interresant ist QT5 kann mobile targets, währe also mal interresant zu wissen was das LCL QT5 widgetset davon abbhält mobil genutzt zu werden (Ich kenn mich damit leider zu wenig aus)

Wenn du aber unbedingt Pascal für Mobile Plattformen verwenden willst, und nicht halbfertige Lösungen wie LAWM zusammenhacken willst, ist Delphis FireMonkey wohl die einzig vernünftige Option. Die Community edition gibts kostenlos, damit kann man auch Crossplattform apps für Mac, Windows, Android und IOS bauen (auf der selben Codebasis). Funktioniert ganz gut, Firemonkey hat so ein paar problemchen (Es sieht nicht nativ aus, ist z.T. langsam), funktioniert aber. Natürlich hat das dann nicht mehr viel mit Lazarus zu tun

MacWomble hat geschrieben:... und nein, ich möchte definitiv nicht mehrere Versionen ein und derselben Library auf dem System haben. (allenfalls übergangsweise :oops: ) :twisted:

Will ich auch nicht, muss ich aber

tryunderror
Beiträge: 57
Registriert: Di 9. Okt 2012, 17:32

Re: Wie Spiele ohne Code weitergeben?

Beitrag von tryunderror »

Noch 2 Ideen:

a
Kann man mit Lazarus nach Assembler übersetzen. Es gibt Online Assembler. Und jeder User hat auch einen Browser.
b
Kann ich den Code unlesbar machen und dann vermailen. Aber so dass ein Compiler ihn noch lesen kann. Dann kann jeder User online compilieren im Browser?


Zusanzfragen;
Kann man mit Lazarus für eine Homepag Code erzeugen?

Kann man aus Pascla Code Java Quelltext erzeugen?

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Wie Spiele ohne Code weitergeben?

Beitrag von Warf »

tryunderror hat geschrieben:Kann man mit Lazarus nach Assembler übersetzen. Es gibt Online Assembler. Und jeder User hat auch einen Browser.

Wenn du webassembly meinst, das ist ne ganz eigene Architektur und nicht zu x86 oder ARM assembler zu vergleichen. Es gibt derzeit keinen Webassembly target für fpc (und auch kein LLVM Frontend, sodass man über LLVM nach webassembly gehen könnte). Ist also vorerst keine option. Die einzigen zwei sprachen die ich kenn die mit Webassembly ganz gut laufen sind rust, für die ein Target aktiv maintained wird, und C/C++ was über emscripten einen sehr ausgeprägten support bekommt (so kann emscripten automatisch die beliebtesten Bibliotheken wie OpenGL oder SDL übersetzen)
tryunderror hat geschrieben:Kann ich den Code unlesbar machen und dann vermailen. Aber so dass ein Compiler ihn noch lesen kann. Dann kann jeder User online compilieren im Browser?

Kann man machen, aber warum dann obfuscaten? Selbst obfuscateten code kann man mit genügend aufwand wieder "entschlüsseln". Warum also den aufwand machen und nicht einfach den Klartext verschicken? Obfuscation bringt keine Sicherheit, also kann Mans auch gleich lassen. Und das im browser Compilen ist wie gesagt keine gute option, aber theoretisch könnte man ja die Nutzer das selbst kompilieren lassen. Gibt einige Programme (vor allem unter linux) bei denen man für die aktuellste version zu bekommen man die selbst kompilieren muss (Ist dann meist C oder C++ mit sehr einfachem buildsystem oder fertigen buildscripts)


tryunderror hat geschrieben:Zusanzfragen;
Kann man mit Lazarus für eine Homepag Code erzeugen?

Kann man aus Pascla Code Java Quelltext erzeugen?


Du meinst wahrscheinlich Javascript (die Websprache) und nicht Java. Es gibt Pas2Js aber 1. die LCL wird noch nicht unterstützt, 2. Webentwicklung funktioniert auch etwas anders als Desktopentwicklung, z.b. Kann JavaScript im Kern nur dictionaries und lambdas, während Pascal keine lambdas kann, dafür OOP ist. Oder auch die Tatsache das in js alles asynchron ist, durch sprachfeatures unterstützt, während asynchronität in Pascal äußerst kompliziert ist, (was natürlich indirekt auch mit 1 zusammen hängt, denn mMn. würde es keinen sinn machen die LCL aufs web zu übertragen, da die Paradigmen zu unterschiedlich sind und ein Ansatz wie ihn emscripten fährt macht mMn mehr Sinn, das ist aber eine ganz andere Diskussion), daher kannst du nicht so einfach Code 1-1 übersetzen, du kannst aber theoretisch deine Website in Lazarus programmieren, solang du mit HTML und CSS das ganze drum herum baust und dann mit Pascal das ganze mit leben füllst. Wie gut das schon läuft keine Ahnung. Von dem was ich bisher gesehen hab muss man noch sehr viel selbst basteln über das Javascript Klasseninterface (z.B. wenn du Ajax machen willst).
Aber ich seh das so. Die meisten Websites benötigen sehr einfache Funktionalität, sodass man aus der Struktur von Pascal nichts gewinnt (da trifft es der Ausdruck "Mit Kanonen auf Spatzen schießen" ganz gut. Für eine hand voll Funktionen Pascal rauszuholen ist halt einfach nur Aufwand ohne Mehrwert). Für größere/hoch funktionale websites kann man wohl drüber nachdenken, wobei ich keine Ahnung von der performance hab. Javascript ist zwar mittlerweile recht schnell, aber browser optimieren typische JS Konstrukte, und von dem was ich gesehen hab erzeugt pas2js sehr JS-untypischen code (sieht halt aus wie eine 1-1 Übersetzung der Pascal Klassen nach JS Klassen, so würde kein normaler JS Entwickler programmieren).
Aber ich hab auch erst kleinere Programme damit geschrieben und wie sehr es für realistische Projekte und WebApps verhält keine Ahnung. Ich hab zwar aktuell zwei webapp Projekte, für die ich pas2js in Betracht gezogen hab, doch kam es mir zu eingeschränkt vor um es ernsthaft in Erwägung zu ziehen (bzw. der Extraaufwand um es so hinzubekommen wie ich wöllte wahrscheinlich dazu geführt hätte das ich erstmal ein halbes Pas2JS framework schreiben müsste, um irgendeinen Vorteil zu bekommen und nicht einfach den JS code in pascal nachzuprogrammieren)

Wenn du tatsächlich Java meinen solltest, gibt es tatsächlich ein JVM target für den FPC. Was das kann keine Ahnung, sowas ist eigentlich etwas was man eher selten machen möchte

tryunderror
Beiträge: 57
Registriert: Di 9. Okt 2012, 17:32

Re: Wie Spiele ohne Code weitergeben?

Beitrag von tryunderror »

Kurz zu 1 Punkt:
"Kann man machen, aber warum dann obfuscaten?"

Weil es kleine kostenlose Spiele sind.
Klar ein richtige grosse Software, da wäre es blöd.
Aber meiner erfahrung nach reicht es
Mail in latein zu mailen und niemand macht sich Mühe Übersetzer zu nehmen.

Ich habe mal Text auf HP für Freunde auf HP versteckt
einfach 200 Leerzeilen
Fremde haben nie nach unten gescrollt.
Danke für Antwort.


Ja, ich meine Pascal nach Java nicht JS konnvertieren.
Geht das?

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Wie Spiele ohne Code weitergeben?

Beitrag von Warf »

tryunderror hat geschrieben:Kurz zu 1 Punkt:
"Kann man machen, aber warum dann obfuscaten?"

Weil es kleine kostenlose Spiele sind.
Klar ein richtige grosse Software, da wäre es blöd.
Aber meiner erfahrung nach reicht es
Mail in latein zu mailen und niemand macht sich Mühe Übersetzer zu nehmen.

Aber was ist verloren wenn du sie nicht obfuscatest? Das versteh ich nicht so ganz. Außer das sind natürlich irgendwelche online spiele bei denen man damit einfach cheaten kann, wenn sie eh kostenlos sind, wen juckts ob wer deinen Code lesen kann?

Ja, ich meine Pascal nach Java nicht JS konnvertieren.
Geht das?

Ja geht mit demJVM target
aber keine ahnung wie gut. Kann mir vorstellen das das nicht mehr als ne spielerei ist, und produktiv keinen nutzen hat

tryunderror
Beiträge: 57
Registriert: Di 9. Okt 2012, 17:32

Re: Wie Spiele ohne Code weitergeben?

Beitrag von tryunderror »

Warum verschleiern?

Danke erstmal.

Y stiehlt Code und verkauft ihn.

Beispiel: Ich mache Cafe mit Namen Otototo auf.
Morgen macht einer Patent und ich muss Namen abgeben.

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Wie Spiele ohne Code weitergeben?

Beitrag von Warf »

tryunderror hat geschrieben:
Fr 26. Jun 2020, 18:02
Y stiehlt Code und verkauft ihn.
Dafür gibts ja lizenzen, sagen wir du machst ein Projekt mit quelloffenen source und einer restriktiven Lizenz und jemand nimmt den source und verkauft ihn. Zack Vertragsbruch und du kannst auf schadensersatz klagen.

Außerdem ein guter reverse engineerer kommt auch an den best obfuscateten code ran, wenn also wirklich geld hinter deinem code stecken würde, könnte man einfach einen cracker bezahlen der die software reverse engineered.

Jedwede Form von Schutz deines codes ist schlicht weg wirkungslos.
tryunderror hat geschrieben:
Fr 26. Jun 2020, 18:02
Morgen macht einer Patent und ich muss Namen abgeben.
Namen sind trademark, keine patente. Im (deutschen) Patentrecht kannst du kein patent auf eine technische erfindung anmelden welche es bereits gibt.
Wenn jetzt jemand ein Patent auf deinen code anmelden will, den du bereits schon in einem veröffentlichten produkt verwendest, hat die person ziemlich schlechte karten dich wegen einer patentsverletzung abzumahnen, denn wenn er das tuen würde, könntest du ganz einfach zeigen das sein Patent nicht gültig ist, weil dein code zu erst öffentlich war.

Im gegenteil, Quellcode steht unter den schutz des geistigen Eigentums, du kannst also den dieb verklagen, und mit seinem patent hat er sich selbst ein grab geschaufelt, weil du damit ganz genau nachweisen kannst das er seine idee später hatte als du

Antworten