Autor Wątek: Zaciemnianie kodu  (Przeczytany 3232 razy)

Offline koirat

  • Użytkownik

# Luty 14, 2017, 17:15:10
Strata czasu chyba że kod jest z templatu i wstyd ;p
Albo że to czyjś kod już wyciągnięty z jakiejś aplikacji ;)

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline laggyluk

  • Użytkownik
    • http://laggyluk.com

# Luty 14, 2017, 17:59:27
Albo że to czyjś kod już wyciągnięty z jakiejś aplikacji ;)
powstrzymały mnie dobre maniery ;p

Offline matheavyk

  • Użytkownik
    • rabagames.com

# Luty 14, 2017, 19:52:55
Brawo wezu! Nareszcie ktoś podsumował to, co od dawna myślę :).

Dla was laggyluk i koirat też propsy, ale uważajcie żeby przez podśmiewanie nie zrobił się z tego tematu śmietnik, bo byłoby fajnie, gdyby każdy, kto w przyszłości tutaj trafi, potraktował to poważnie.

Offline lethern

  • Użytkownik

# Luty 14, 2017, 20:16:06
Gdyby to był temat "chce zabezpieczyć swój kod przed niepowołanym dostępem", to to co wezu opisał ma sens, ale jeśli to jest temat "chcę zabezpieczyć mój produkt przed piraceniem", to wtedy już jest trochę inna płaszczyzna... bo wtedy zaciemnianie nie ma wiele wspólnego z ochroną kodu czy ukryciem go, tylko z próbą ochrony przed piractwem, z tej perspektywy wydaje się, że argumenty powinny być w temacie piractwa, nie w temacie czy kod był brzydki czy nie.. (mam wrażenie, że temat z lekka zjechał z kierunku, nie żeby to jakieś ważne było)
« Ostatnia zmiana: Luty 14, 2017, 20:18:13 wysłana przez lethern »

Offline Rakieta

  • Użytkownik

  • +1
# Luty 15, 2017, 10:16:08
Osobiście troszkę tego nie rozumiem. Sam nie stosuję zaciemniania dla C#, tak jak to pisałem wcześniej, więc w zasadzie z wami się zgadzam. Nie rozumiem jednak dlaczego w gamedevie (albo tu na forum) można zauważyć tylko te powtarzające się teksty:

a) Zabezpieczenia zostaw na koniec,
b) Nie zabezpieczaj kodu,
c) Pomysł nie ma wartości

Dla mnie jedno drugie i trzecie jest głupie, powiedziałbym tak:

a) Lepiej wcześniej niż później.
b) Może w ogóle zostawie komentarze i wrzucę na github te swoje wypociny?
c) A co nas motywuje do pracy?

W czasach gdzie istnieje nazewnictwo jak "własność intelektualna", tutaj widujemy tylko "nie trzeba i nie ma wartości". Trochę mnie to martwi.

http://softwareengineering.stackexchange.com/a/129322

Ostatnio na jedną z grup facebookowych ktoś wrzucił aplikację javascript. Połączenie z bazą i te sprawy. Ładny design, fajne wykonanie, więc wszystkim się spodobała. W pewnym momencie ktoś pisze w komentarzu "hej jak się pisze taki kod?" - i wrzuca w zdjęcie typowy kod po obfuscacji, w dodatku przejechany "unminifierem" (automatycznie ze skompresowanego kodu tworzy spacje akapity itd).

A więc zabezpieczenie zadziałało.

Jeśli szanujesz swoją pracę, poświęciłeś na nią wiele godzin i nie chciałbyś by byle kto dobierał sie do niej to zaciemniaj. To jeden prosty automatyczny krok. Tak robią developerzy stron, aplikacji i gier. Każdy z nich ma pewnie inny własny powód.

Są projekty Open Source i są projekty z zamkniętym kodem. Tych drugich jest pewnie z 99%. Kropka.

Offline koirat

  • Użytkownik

# Luty 15, 2017, 11:26:58
a) Lepiej wcześniej niż później.
b) Może w ogóle zostawie komentarze i wrzucę na github te swoje wypociny?
Zabezpieczenia na koniec po co masz syfić sobie czysty kod gry zabezpieczeniami skoro jeszcze nie wydajesz i wiele mozesz jeszcze zmienić.

Tak możesz wrzucić na GitHub i spać spokojnie, nie jedna gra AAA udostępnia swoje źródła. Wątpię żeby ktokolwiek z nich korzystał w swoich aplikacjach.

Offline Meic

  • Użytkownik

# Luty 15, 2017, 13:48:04
@Rakieta Nareszcie ktoś napisał coś sensownego, a nie opinie typu "hłe hłe, zaciemnianie jest dla głópkuf". Co do samego dostępu do kodu, to nie wiem jak wygląda sprawa w aplikacjach desktopowych, natomiast w przypadku gier mobilnych (pisanych w unity), dostęp do źródeł jest wręcz nieprzyzwoicie prosty. Dla mnie, choćby świadomość, że efekt wielu godzin mojej pracy jest dostępny praktycznie dla każdego w przeciągu kilku chwil jest wystarczającym powodem żeby zaciemniać (piszę ciągle głównie o mobile).

Odpowiadając na pytania autora wątku, mogę wspomnieć, że póki co miałem styczność tylko z https://www.assetstore.unity3d.com/en/#!/content/48919 . Asset jest prosty w użyciu i sam w sobie nie sprawiał problemu, natomiast używając go, należy liczyć się oczywiście ze znacznie dłuższym czasem kompilacji i z koniecznością dostosowania kodu (dodaniem atrybutu do elementów, które mają zostać pominięte przy zaciemnianiu) w niektórych przypadkach. Bez tego wszelki elementy bazujące na nazwach metod/pól - np. refleksje, eventy animacji - nie będą działały.

Offline matheavyk

  • Użytkownik
    • rabagames.com

# Luty 15, 2017, 14:30:00
Rozmawiamy o dwóch różnych podejściach do tej samej sprawy.

1. Ogólne dążenie do otwartości wszystkiego, w skrajnym przypadku internet = wszystko dla wszystkich.

To podejście ma swoje plusy w kontekście tworzenia gier:
  • Skracamy czas developmentu o zabezpieczenia i zaciemnianie.
  • Mamy szansę wypromować się na czymś typu viralowego, co ktoś odkryje w naszym kodzie. Możemy też wypromować się po prostu na tym, że ludzie wspólnie studiują nasz kod. Jeśli piszemy bardzo ładnie, to jest szansa, że ktoś będzie pokazywał innym nasz kod.
  • Uwalniamy się od myślenia o tym, więc możemy przenieść energię intelektualną na faktyczny development.

2. Jesteśmy programistami, szanujmy swoją pracę i swój czas. To podejście jest trochę takie, że trzeba się nawzajem upominać i robić poniekąd klimat odpowiedzialności grupowej, bo tylko wspólnie utrzymamy szacunek innych do tego, co robimy. Racjonalnym jest, że wykonujemy pracę i powinniśmy być za nią należycie wynagradzani.

To podejście ma swoje plusy w kontekście tworzenia gier:
  • Trudniej hackować, więc w grach multiplayer to daje nam jakąś możliwość ciągłej walki z oszustami, tak jak opisał to ktoś w podlinkowanym przez rakietę poście.
  • Trudniej hackować, więc opóźniamy powstanie spiraconej wersji naszej gry (czy to plus to osobna dyskusja).
  • Jest jeszcze coś, co niektórzy wymieniają jako plus, ale ja tego nie rozumiem, czyli "słabsi programiści nie będą mogli skopiować naszego kodu". Nie wiem jaki to niby plus, bo słabszy programista (czy tam noob) i tak nie będzie go potrafił użyć w odpowiedni sposób.

Oczywiście nie wymieniłem wszystkich plusów.
Ja jestem zdecydowanie za pierwszym podejściem, chyba że robimy grę multiplayer, bo wtedy niejako częścią tworzenia gry jest zapewnienie równych szans graczom i ochrona uczciwych przed oszustami.

edit: no dobra, są też inne podejścia, ja tak naprawdę mam takie luźne-realistyczne, a nie jedno z tych dwóch skrajnych, ale dzieląc tylko na te dwa skrajne, to mówiłem prawdę ;p

Cytuj
c) Pomysł nie ma wartości
Nie wiem, jak w innych gałęziach, ale w gamedevie to jest raczej prawda. Mam dwa powody by tak twierdzić. Pierwszy powód jest taki, że na wszystkich konferencjach doświadczeni developerzy w większości (albo wszyscy?) to potwierdzają. Czyli ci ludzie, żyjący z tego biznesu, w praktyce sprawdzili, że pomysły nie są cenne, bo umówmy się - brak wartości to wyolbrzymienie. Drugi powód jest taki, że mam na dysku folder "pomysły na gry", w którym jest w tej chwili 75 pozycji. Są to wyselekcjonowane pomysły z kilku lat, a było ich znacznie więcej. Oprócz tego 4 gry są w jako-takiej realizacji, więc były w jakiś sposób lepsze od tych 75. Jeśli każdy ma tyle pomysłów, co ja, to znaczy, że jest ich bardzo dużo, a czego jest dużo to jest mało warte. Poza tym część z tych pomysłów nie sprawdzi się w grach; a dodatkowo przy złej realizacji również nie wyjdzie z nich dobra gra. Za to da się się zrobić fajną grę robiąc porządną realizację słabego pomysłu lub wręcz skopiowanego z innej gry.

Cytuj
Ostatnio na jedną z grup facebookowych ktoś wrzucił aplikację javascript. Połączenie z bazą i te sprawy. Ładny design, fajne wykonanie, więc wszystkim się spodobała. W pewnym momencie ktoś pisze w komentarzu "hej jak się pisze taki kod?" - i wrzuca w zdjęcie typowy kod po obfuscacji, w dodatku przejechany "unminifierem" (automatycznie ze skompresowanego kodu tworzy spacje akapity itd).

A więc zabezpieczenie zadziałało.

Zadziałało, ale czy pozytywnie? Ktoś chciał się rozwinąć czytając dobry kod i nie mógł. Jaką krzywdę by wyrządził ten, kto nawet nie wie czym jest obfuskacja? Mnie na przykład trochę boli fakt, że chcący się uczyć człowiek nie miał dostępu do fajnego kodu aplikacji, która go interesuje.

Cytuj
Dla mnie, choćby świadomość, że efekt wielu godzin mojej pracy jest dostępny praktycznie dla każdego w przeciągu kilku chwil jest wystarczającym powodem żeby zaciemniać (piszę ciągle głównie o mobile).

To jest powód? Jaki jest cel tego działania? No bo powiedzmy, że długo pracowałeś i ktoś to zobaczy - no i co? A jak krótko pracowałeś i ktoś to zobaczy to co?



« Ostatnia zmiana: Luty 15, 2017, 14:33:05 wysłana przez matheavyk »

Offline Invincible

  • Użytkownik
    • Invincible

  • +1
# Luty 15, 2017, 21:11:08
Do czerwca będzie gotowa jedna z 3 gier.  Czasu mało więc się wolę przygotować. Na tłoczenie płyt jestem umówiony na 20 czerwca więc chcę dopiąć wszytko na ostatni guzik co innego wersja cyfrowa... Hmm poszukam jakiegoś programu i zobaczę czy wypali


Nie chcę być upierdliwy i nie znam Twojej sytuacji i doświadczenia.

Ale mam nadzieję że zdajesz sobie sprawy że jeśli myślisz że skończysz projekt w n dni, to znaczy że potrzebujesz na niego co najmniej n*8 dni? :D

Offline Sarann

  • Użytkownik

  • +1
# Luty 15, 2017, 22:48:49
co najmniej n*8 dni? :D
+ należy wziąć pod uwagę prawo Hofstadter'a :D
https://en.wikipedia.org/wiki/Hofstadter%27s_law

Offline Rakieta

  • Użytkownik

# Luty 15, 2017, 23:48:09
Czy na tym forum nikt nie kończy gier?

Offline matheavyk

  • Użytkownik
    • rabagames.com

  • +1
# Luty 16, 2017, 05:27:30
Kończymy (bez aktywnego linku, żeby nie było reklamy aż tak bardzo): play.google.com/store/apps/developer?id=Raba+Games

Ja to nawet już się na tyle wyćwiczyłem, że zazwyczaj mieszczę się w estymacji pod warunkiem, że dodam sobie do estymacji każdego taska 1/3 czasu. Tyle, że niestety rzadko mam okazję robić gry :(

Offline Meic

  • Użytkownik

# Luty 16, 2017, 13:23:29
To jest powód? Jaki jest cel tego działania? No bo powiedzmy, że długo pracowałeś i ktoś to zobaczy - no i co? A jak krótko pracowałeś i ktoś to zobaczy to co?

Nie za bardzo rozumiem w czym problem. Mam tłumaczyć czemu zaciemniam kod, czy może się publicznie kajać i przepraszać? Z tego co wiem, to póki co nie żyjemy w hipisowskiej utopii i ciągle istnieje takie coś jak choćby prawo własności. Napisałem swój kod i mogę z nim robić co mi się podoba. Mogę go zaciemniać (i to zupełnie bez powodu), mogę udostępnić innym, a równie dobrze mogę uruchomić raz i skasować.

Jeśli ktoś jest entuzjastą otwartego kodu, to niech udostępnia swój kod. Natomiast nie widzę powodu żeby wymagać tego od wszystkich, czy napiętnować odmiennych praktyk. Świat nie kręci się wokół "chcący się uczyć ludzi", którzy dla mnie są w tym przypadku dość abstrakcyjną figurą (jest na tyle otwartych projektów, że jeśli ktoś chce to z nich skorzysta, a grzebanie w cudzym nie otwartym kodzie, kojarzy mi się z celami z goła nie edukacyjnymi).

Inna sprawa, że zgadzam się, iż ew. zaciemnianie ma najwięcej sensu w produkcjach multi + dodał bym od siebie też produkcje mobilne (jeśli byłby to sposób na choć minimalne zmniejszenie liczby niskiej jakości klonów na rynku).

Offline laggyluk

  • Użytkownik
    • http://laggyluk.com

  • +2
# Luty 16, 2017, 18:17:34
Inna sprawa, że zgadzam się, iż ew. zaciemnianie ma najwięcej sensu w produkcjach multi + dodał bym od siebie też produkcje mobilne (jeśli byłby to sposób na choć minimalne zmniejszenie liczby niskiej jakości klonów na rynku).
gdyby klony powstawały w ten sposób to nie były by niskiej jakości, najwyżej brzydsze

Offline Joker

  • Użytkownik

# Luty 16, 2017, 20:07:31
Wykradanie kodu z aplikacji i narażanie się na procesy sądowe itd. żeby skopiować mechanikę gry mobilnej które i tak są ultra proste w założeniach i większość szkieletów smartfonowych hitów można w tydzień napisać całkowicie od nowa. Bez grama cudzego kodu. Brzmi legitnie. Gorzej będzie z zaciemnianiem gameplayu żeby nikt nie rozgryzł zaawansowanych meandrów np. generowania światów czy innych mechanik i nie daj boże sobie ich nie sklonował.