Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Cyberpunk 2077? Totaler Quatsch! Das schaut eindeutig nach Das Fünfte Element aus!

Cyperpunk ist halt momentan das "Hit-Word". Ich stimme zu, sieht eher aus wie Das fünfte Element, aber nicht CP.

Was bei Unity bleibt ist aber der Fakt, dass sie als Scriptsprache C# benutzen.
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Nicht direkt, aber bspw. sind Competitive Spiele so nicht möglich, weil durch Decompiler der Quellcode viel einfacher einzusehen ist. Bei nativem dekompilierten Code muss man sich mit Assembler rumschlagen. Kopierschutz lässts ich so auch nicht vernünftig einbauen. Them Hospital hatte Denuvo und war mit Unity gemacht, gecrackt wurde es, weil eine DLL ausgetauscht worden ist. Für Unity gibt es Anti-Cheat-Toolkit, dass ist wohl auch recht nutzlos, weil man es recht einfach "deaktivieren" kann, oder man manipuliert den Code der das Anti-Cheat (Anti-Hook oder was auch immer) verhindern soll. Es soll aus Russland sogar einen generischen Aimbot/Wallhack für Unity basierte Spiele (Shooter) geben.

Spiele die mit C oder C++ geschrieben sind, ist es schwieriger Cheats zu machen. Natürlich ist es letzten Endes egal mit welcher Sprache Spiel gemacht worden ist. Die Kleinpim.... Cheater finden immer einen Weg.

Manche vergessen aber immer wieder: Eine Engine alleine macht kein Spiel, sie ist nur ein Werkzeug dazu. Unity mag noch Features von AAA-Engines fehlen, aber sie holen auf.
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Nicht direkt, aber bspw. sind Competitive Spiele so nicht möglich, weil durch Decompiler der Quellcode viel einfacher einzusehen ist. Bei nativem dekompilierten Code muss man sich mit Assembler rumschlagen. Kopierschutz lässts ich so auch nicht vernünftig einbauen. Them Hospital hatte Denuvo und war mit Unity gemacht, gecrackt wurde es, weil eine DLL ausgetauscht worden ist. Für Unity gibt es Anti-Cheat-Toolkit, dass ist wohl auch recht nutzlos, weil man es recht einfach "deaktivieren" kann, oder man manipuliert den Code der das Anti-Cheat (Anti-Hook oder was auch immer) verhindern soll. Es soll aus Russland sogar einen generischen Aimbot/Wallhack für Unity basierte Spiele (Shooter) geben.

Spiele die mit C oder C++ geschrieben sind, ist es schwieriger Cheats zu machen. Natürlich ist es letzten Endes egal mit welcher Sprache Spiel gemacht worden ist. Die Kleinpim.... Cheater finden immer einen Weg.

Manche vergessen aber immer wieder: Eine Engine alleine macht kein Spiel, sie ist nur ein Werkzeug dazu. Unity mag noch Features von AAA-Engines fehlen, aber sie holen auf.

Ach, Cheats sind so oder so möglich. Man könnte mit Unity auch Competitiv-Games machen. Ganz abgesehen davon, dass ein Pro-User mit Unity auch genug Zugriff auf die Engine bekommt um den kopierschutz zu implementieren. Der Scriptcode hat mit Kopierschutz und co. nichtmal zwingend was zu tun.

Decompilen kannst du C++ genauso wie C# Bytecode. Das DLL Format (nennen wir es mal so) für C++ und C# ist recht ähnlich. Und C# könnte man auch kompilieren.

C# ist eher was positives. Das Unity nicht genug abgesichert ist hat nichts mit C# zu tun. Es wird genug sicherheitskritischer Code mit C# geschrieben. Perse ist C# Code sogar besser abzusichern nachdem die .Net-Umgebung schon viel für dich tut. Da ist C++ Code in der Regel deutlich besser angreifbar nachdem da Dinge wie Arrays ohne Boundry-Checks legal sind und auch tatsächlich in der Spieleentwicklung Verwendung finden.
 
Zuletzt bearbeitet von einem Moderator:
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Ach, Cheats sind so oder so möglich. Man könnte mit Unity auch Competitiv-Games machen. Ganz abgesehen davon, dass ein Pro-User mit Unity auch genug Zugriff auf die Engine bekommt um den kopierschutz zu implementieren. Der Scriptcode hat mit Kopierschutz und co. nichtmal zwingend was zu tun.

Decompilen kannst du C++ genauso wie C# Bytecode. Das DLL Format (nennen wir es mal so) für C++ und C# ist recht ähnlich. Und C# könnte man auch kompilieren.

C# ist eher was positives. Das Unity nicht genug abgesichert ist hat nichts mit C# zu tun. Es wird genug sicherheitskritischer Code mit C# geschrieben. Perse ist C# Code sogar besser abzusichern nachdem die .Net-Umgebung schon viel für dich tut. Da ist C++ Code in der Regel deutlich besser angreifbar nachdem da Dinge wie Arrays ohne Boundry-Checks legal sind und auch tatsächlich in der Spieleentwicklung verwendung finden.

Wenn du den Unity Sourcode der Engine willst, geht das richtig tief ins Geld, soweit ich mich erinnere, waren das um die 250k Dollar. UT haben zwar den C# Source der Engine und dem Editor veröffentlicht, aber es bleibt C#.

Natürlich kannst du C# genauso wie C++ dekompilieren, aber es ist ein gewaltiger Unterschied, ob du nun C# Code oder Assembler Code siehst. Bei ASM musst du Code lesen und verstehen können, dazu brauchst du dann auch noch passende Debugger wie Olldydbg nebst passenden Plugins und Scripten. Bei C# dürften wohl C# Programmierskills reichen.

Wie willst du den Scriptcode vernünftig schützen, damit es Leuten erschwert wird, Cheats zu bauen? Klar, es gibt keinen 100%igen Schutz. Verhasst oder nicht, aber mit Denuvo kann man nativ kompilierten Code schützen. Obfuscatoren für C# gibt es wohl keine (mehr). Es gibt einen, Name entfallen, aber der ist wohl eingestellt und ist nicht mehr zu kaufen. Selbst wenn es einen Obfuscator gibt, der Code ist immer noch lesbar, auch wenn es erschwert wird. Variablen, Memberfunktionen etc. mögen umbenannt werden, aber die Logik kann man immer noch sehen.

Es ist nicht möglich, einen vernünftigen Kopierschutz mit C# einzubauen, du kannst mir sehr gerne das Gegenteil beweisen, ich interessiere mich tatsächlich dafür. Im Unity Forum hatte ich sogar einen Thread dazu gemacht, aber letzten Endes ohne wirklichen hilfreichen Ausgang. Client/Server-Checks und die lassen sich im Client manipulieren oder im schlimmsten Fall rauspatchen und ggf. sogar emulieren.

Und C# könnte man auch kompilieren.

Ich nehme mal an, du meinst AOT? Wenn man Unity Spiele für Android kompiliert, wird ein anderer compiler zwischengeschaltet, der den C# Code nach C++ Code konvertiert, weil Google auf Android verbietet, dass Bytecode ausgeführt wird. Ob das evtl. zwischenzeitlich geändert worden ist, weiß ich nicht! Allerdings muss ich nun an der Stelle anmerken, dass ich nicht ganz raffe, wie AOT genau funktioniert - vor allem mit Unity. Auch weiß ich nicht, ob das für Windows oder Linux basierte Spiele funktioniert.
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Wenn du den Unity Sourcode der Engine willst, geht das richtig tief ins Geld, soweit ich mich erinnere, waren das um die 250k Dollar. UT haben zwar den C# Source der Engine und dem Editor veröffentlicht, aber es bleibt C#.

Natürlich kannst du C# genauso wie C++ dekompilieren, aber es ist ein gewaltiger Unterschied, ob du nun C# Code oder Assembler Code siehst. Bei ASM musst du Code lesen und verstehen können, dazu brauchst du dann auch noch passende Debugger wie Olldydbg nebst passenden Plugins und Scripten. Bei C# dürften wohl C# Programmierskills reichen.

Wie willst du den Scriptcode vernünftig schützen, damit es Leuten erschwert wird, Cheats zu bauen? Klar, es gibt keinen 100%igen Schutz. Verhasst oder nicht, aber mit Denuvo kann man nativ kompilierten Code schützen. Obfuscatoren für C# gibt es wohl keine (mehr). Es gibt einen, Name entfallen, aber der ist wohl eingestellt und ist nicht mehr zu kaufen. Selbst wenn es einen Obfuscator gibt, der Code ist immer noch lesbar, auch wenn es erschwert wird. Variablen, Memberfunktionen etc. mögen umbenannt werden, aber die Logik kann man immer noch sehen.

Es ist nicht möglich, einen vernünftigen Kopierschutz mit C# einzubauen, du kannst mir sehr gerne das Gegenteil beweisen, ich interessiere mich tatsächlich dafür. Im Unity Forum hatte ich sogar einen Thread dazu gemacht, aber letzten Endes ohne wirklichen hilfreichen Ausgang. Client/Server-Checks und die lassen sich im Client manipulieren oder im schlimmsten Fall rauspatchen und ggf. sogar emulieren.



Ich nehme mal an, du meinst AOT? Wenn man Unity Spiele für Android kompiliert, wird ein anderer compiler zwischengeschaltet, der den C# Code nach C++ Code konvertiert, weil Google auf Android verbietet, dass Bytecode ausgeführt wird. Ob das evtl. zwischenzeitlich geändert worden ist, weiß ich nicht! Allerdings muss ich nun an der Stelle anmerken, dass ich nicht ganz raffe, wie AOT genau funktioniert - vor allem mit Unity. Auch weiß ich nicht, ob das für Windows oder Linux basierte Spiele funktioniert.

Kompilierter C# Code wäre wie gesagt Lösung 1, und Lösung 2 (auch wenn's ins Geld geht) Sich Unity-Source Zugriff zu kaufen und den DRM auf Engine-Level einzubauen. Es macht nämlich wenig Sinn den DRM in die Game-Logik zu packen, da gehört er nämlich nicht hin.

Du kannst aber z.B. den DRM als native DLL laden, auch das geht. C# kann mit COM-Like Strukturen umgehen.

Es gibt schon Möglichkeiten. Gegen Decompiler ist übrigens auch C++ nicht gefeilt. Die sind zwar auch nur durchwachsen gut, aber man bekommt oft genug zumindest C-Code oder ähnliches raus. Snowman kann das z.B.

Wie gesagt, nachdem auch sicherheitskritische Anwendungen im Business-Umfeld sehr oft in C# geschrieben sind kann ich dir sicher sagen, dass es Möglichkeiten gibt.

Gegen Cheats helfen dir nur Double Checks. Anti Cheat-Protection im Multiplayer sollte Serverseitig passieren. Da muss der Server dann eben validieren. Im Single Player kann's dir egal sein.

Ein DRM wird sowiso erst ab einer gewissen Größe interessant. Und die Studios die so weit sind wissen dann auch wie das mit einem DRM läuft.

Hearthstone: Heroes of Warcraft – Wikipedia

Also Blizzard bekommt das mit den Cheatern ganz gut auf die Reihe ;)

Das heißt übrigens nicht, dass diese Probleme mit Unreal nicht leichter zu lösen sind, aber dafür ist die Arbeit mit Unreal auch schwerer. (Außer der Node-Script Editor, verdammt! Der ist bequem)
 
Zuletzt bearbeitet von einem Moderator:
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

In Unity gibt es schon viele schicke Techdemos und auch der Einstieg in die Engine ist mMn recht angenehm :daumen:
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Du kannst aber z.B. den DRM als native DLL laden, auch das geht. C# kann mit COM-Like Strukturen umgehen.

Hat man gesehen das es nicht funktioniert. Wenn du eine DLL native lädst, kannst du durchaus den c# Code dafür leicht finden, analysieren und eine Fake DRM-DLL bauen. Fast alle Steamspiele werden mit SteamAPI Emulatoren geknackt. Das hier mit C#und Native DLL ist im Grunde die gleiche Methode.

Serverseitige Checks für Multiplayer? Dennoch brauchst du Code auf Clientseite. Punkbuster war so, wirklich funktioniert hat das nicht.
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Hat man gesehen das es nicht funktioniert. Wenn du eine DLL native lädst, kannst du durchaus den c# Code dafür leicht finden, analysieren und eine Fake DRM-DLL bauen. Fast alle Steamspiele werden mit SteamAPI Emulatoren geknackt. Das hier mit C#und Native DLL ist im Grunde die gleiche Methode.

Serverseitige Checks für Multiplayer? Dennoch brauchst du Code auf Clientseite. Punkbuster war so, wirklich funktioniert hat das nicht.

Deshalb auch double-checking. Client und Server. Aber das Client ist selten für Anti-Cheat zuständig. Es gibt für alles gute und schlechte Implementierungen. WoW Arbeitet Serverseitig. Und das klappt gut.

Fake-DLLs gehen immer. Aber es ist ein Weg. Ein COM-Object Reverse zu Engineeren ist nicht leicht, auch nicht wenns von C# aus angesprochen wird. Und wie gesagt, das in C++ zu decompilen geht mittlerweile auch recht gut.

Kein DRM ist unknackbar.
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Deshalb auch double-checking. Client und Server. Aber das Client ist selten für Anti-Cheat zuständig. Es gibt für alles gute und schlechte Implementierungen. WoW Arbeitet Serverseitig. Und das klappt gut.

Wenn der Client Paket an den Server schickt, kann man diese via Proxy abfangen. Wenn man also den Netcode analysiert hat und somit die Packets kennt, kann man die Packets selber zum Server schicken. Schickt der Server das Prüfpaket an den Client, kann man das abfangen und ggf. behandeln, ohne das der Client drauf "falsch" reagieren kann.

Naja... es wird Offtopic :ugly:
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Hat man gesehen das es nicht funktioniert. Wenn du eine DLL native lädst, kannst du durchaus den c# Code dafür leicht finden, analysieren und eine Fake DRM-DLL bauen. Fast alle Steamspiele werden mit SteamAPI Emulatoren geknackt. Das hier mit C#und Native DLL ist im Grunde die gleiche Methode.

Serverseitige Checks für Multiplayer? Dennoch brauchst du Code auf Clientseite. Punkbuster war so, wirklich funktioniert hat das nicht.

Ich glaube du verwechselst hier die Sprache C# mit dem Framework .net

.net Code kann man disassemblen Ob man daraus C#, VB oder sonst was macht ist egal und hat mit der Sprache mit der man es ursprünglich geschrieben hat nichts zu tun.

C# ist nur eine Sprache und muss nicht unbedingt mit dem .net Framework verwendet werden.
Man kann C# zu Native Code kompilieren und der ist von C++ Code kaum zu unterscheiden.
Weiters kann man C# Skripte Signieren, obfuscaten und noch einiges mehr um sie manipulations sicher zu machen

Die Unity Engine ist in C++ geschrieben und nicht in C#.
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Die Unity Engine ist in C++ geschrieben und nicht in C#.

Der Editor ist in C# gebaut und unter Windows nutzt Unity glaube ich sogar .Net bis man der Engine was anderes sagt. (Nagel mich nicht drauf fest ;) )

Aber beim Rest meine Zustimmung.
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Ich glaube du verwechselst hier die Sprache C# mit dem Framework .net
C# ist nur eine Sprache und muss nicht unbedingt mit dem .net Framework verwendet werden.

C# ist die Sprache die für .net entwickelt wurde. Wenn man es ganz genau nimmt, hies C# mal J++ und war für Java. Dann wurde J++ eingestellt und dann hat C# das Licht der Welt erblickt, weil MS am Konzept festhalten wollte, weil keiner J++ benutzt hat, sondern nur "normales" Java. Dann gabs J# und am Ende eben C#.

C# benötigt die Runtime, egal ob das nun mit .net oder Mono ist.

Ob das mit dem AOT Compiler auch so ist, weiß ich nicht... wenn du davon Ahnung hast, kannst du mir gerne eine PN dazu schreiben, weil mich das tatsächlich (!) interessiert. (im Zusammenhang mit Unity!)



Die Unity Engine ist in C++ geschrieben und nicht in C#.

Habe ich nirgends geschrieben das sie in C# geschrieben ist...
 
Zuletzt bearbeitet:
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Hi Leute,

ich habe eben die ganzen Dateien der Mega City Tech Demo geladen.
Wie kann ich die Demo jetzt laden?

Vielen Dank schon mal im Voraus.

Kim
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Unity Engine installieren und das Projekt kompilieren?
 
AW: Unity Megacity: Techdemo mit Millionen von Objekten - Cyberpunk 2077 lässt grüßen

Wie kompiliere ich das projekt?
 
Zurück