Słowacy, część: oby ostatnia!

Jak można robić atrybuty komponentu bindujące encje tylko po to, by w inicjalizacji komponentu nadpisywać je encjami szukanymi po nazwie z dupy? O.o
Przecież to jest jawne gwałcenie ideii komponentowości, jeśli to programista ustala takie rzeczy, a nie designer..

NO JAK TAK MOŻNA? i oni mówią, że nie znają się na PlayCanvasie, bo robili w Unity - przeto tak samo to działa w Unity. Jak można tak #!$%@?ć sobie proces produkcji gry.. (
Właśnie opuściłem Mordor banicji, tzw. #tangodown - Za co? za śmieszkowanie o śmierci @NadiaFrance w dzień tragedii Paryskiej.
Żeby było to jasne: Dostałem bana słusznie, to logiczne. Nie mniej wcale nie czuję się z tym źle - koleżanka śmieszkowała niegdyś w tagu #programowanie, to pomyślałem, że pośmieszkuję sobie z jej życia. Tak z grubej rury ( ͡° ͜ʖ ͡°)

A co by być w temacie programowania:
https://github.com/playcanvas/engine/blob/master/src/asset/asset_registry.js
Mircy programisty webdevu, paczę sobie w kod metody ::load() i tak paczę z niedowierzaniem, że z każdym wywołaniem tej metody, tworzone są dodatkowe 2 funkcje które istnieją na czas ładowania assetu. Mieliśmy z kumplem konfrontację o tym, czy warto się w ogóle nad tym problemem spuszczać, bo z mojego punktu widzenia to wygląda tak: preloadujesz 500 assetów, a więc na start dostajesz 1000 nowych funkcji w pamięci, które znikają dopiero jak GC je zabierze, a więc co parę sekund będzie usuwał z pamięci 2 * N-delta-załadowanych-assetów funkcji. Na mobile'ach, gdzie każdy Kb pamięci jest ważny, może być to problemem. Nie ogromnym, bo same assety zajmują więcej, acz można to miejsce, które zajmują nowe funkcje tymczasowe, zagospodarować na jedną
PsichiX - Właśnie opuściłem Mordor banicji, tzw. #tangodown - Za co? za śmieszkowanie...

źródło: comment_6SuukGjitPg6BFb58QXFywJwoLL43aFq.jpg

Pobierz
O Pany!
Wlazłem w kod materiałów PlayCanvasa (głównie w Physical, który nadal nazywa się Phong ( )) - ogurwa, ale sieczka. Faktycznie, twórcy PlayCanvasa stawiają na wizualną jakość gier, ale totalnie olewają wydajność O.o
właśnie tworzę własny materiał do sprajtów w 3D (który poprzez hooka ma zastąpić Physicala/Phonga) i szkoda, że tak strasznie utrudnili tworzenie customowych materiałów, które chciałyby być zgodne z API Physicala/Phonga, ale przez
1. Zacznij zlecenie dla dużej firmy.
2. Zobacz kod i assety gier.
3. Otrzymaj informacje, że potrzeba zoptymalizować gry (przede wszystkim sprawić, że się uruchomią)
4. Przeczytaj, że masz na to 2 dni.
5. 2 #!$%@? dni na zoptymalizowanie 5-6 jebitnie niedziałających gier.
6. Zastanów się, czy tak duży hajs jest warty prób wytłumaczenia im, że cokolwiek się zrobi, to 2 dni nie wystarczą na uruchomienie tego na mobilach.
PsichiX - 1. Zacznij zlecenie dla dużej firmy.
2. Zobacz kod i assety gier.
3. Otrz...

źródło: comment_YEnQv949y7N2V1j1CjFgMGboTQ4g9p2a.jpg

Pobierz
@PsichiX: nie pisz ze sie nie da tylko....

Witam ble ble - przeanalizowalem kod zalaczonych projektow i przedstawiam wstepna analize tematu

1 - gry nie trzymaja sie standartow [rpgramowania co utrudnia pelna analize problemow
2 - wstepnie moge ocenic iz wyszukanie porblemu to ok 7h na
  • Odpowiedz
@Verzweiflung: Nie znam tego edytora do playcanvas. Napewno istnieje możliwość samodzielnego napisania modułu do tego, podobnie jak w unity. Myślę że taki moduł jest zbyt skomplikowany żeby nadawał się do ogólnego przeznaczenia. Jeśli się zastanowisz nad problemem to zobaczysz, że losowe generowanie poziomu może odbywać się na wielu płaszczyznach (losowe rozstawienie przedmiotów, wrogów npc, losowy system jaskiń, losowe połączenia między etapami, losowe pomieszczenia z dużych gotowych klocków). Prędzej wyciągniesz go z jakiegoś innego projektu, jednak napewno będzie napisany pod bardzo konretne rozwiązanie.

Myślę że najskuteczniej będzie napisanie takiego modułu samemu. W prostych fpsach możesz nawet pokusić się o generowanie poziomu w 2d a wyświetlanie go w 3d (jesteś ograniczony wtedy do 1 płaszczyzny i ew. systemu portali między nimi).

Takie rozwiązanie (ale nie losowe) jest np w http://phoboslab.org/xibalba/ Dominica
  • Odpowiedz
Udało mi się prostym sposobem skompresować tablicę floatów maksymalnie do 90% oryginału (87% gdy nie ma różnic znaków wartości) - cholera, za mało. powalczę teraz z predykcyjnym ich kompresowaniem i dam wyniki. muszę zejść poniżej 70%, aby to się opłacało!

#playcanvas #nieprogramowanie
@Ginden: kompresuję pozycje, texcoordy i normalki - dzięki Twojemu pomysłowi dla normalek z precyzją 2 spadło do 25%, dla texcoordów z precyzją 3 do 31%, a dla pozycji z precyzją 4 (i zakresem <-100; 100>) do 61%. tej metody użyję!
KOCHAM CIĘ <3

  • Odpowiedz
Ciąg dalszy tego: http://www.wykop.pl/wpis/14480281/ten-uczuc-gdy-po-godzinach-tworzysz-sobie-edytor-d/


Ta sama Słowacka firma chcąc mnie zwerbować dała mi kosmicznie fantastyczne warunki w porównaniu do tego, co mam w obecnej i praktycznie jestem już jedną nogą u nich - ale ale! aktualni szefowie chcą jutro (dziś) wynegocjować zatrzymanie mnie w firmie ( ͡° ͜ʖ ͡°)


#playgate #gamedev #playcanvas #chwalesie #tylewygrac #itsmieszek
PsichiX - Ciąg dalszy tego: http://www.wykop.pl/wpis/14480281/ten-uczuc-gdy-po-godzin...

źródło: comment_Cl5A0z3lh9PQ6FXjzgoro14eJyb3p8hy.jpg

Pobierz
@PsichiX: #!$%@? tak niedorzeczne warunki, że głowa mała, jak się zgodzą to powiedz Słowakom, że względu rodzinne ci chwilowo nie pozwalają na więcej niż 1/2 etatu, ew rób zlecenia dla obu xD
  • Odpowiedz
YAY, UDAŁO SIĘ! ^^
TL;DR: Jestem #!$%@? #!$%@? geniuszem! :3
Mój algorytm kompresji (LWM) modeli PlayCanvasa udał się z sukcesem!

Tabela wyników do zobrazowania:
- Oryginalny JSON - 4.50 MB;
Jak się okazało podczas optymalizacji projektu robionego w pracy, tak bardzo zachwalany przez twórców PlayCanvasa ichni format danych modeli jest po prostu ujowy. zajmuje dużo. o dużo za dużo. goły JSON? kaman ;___;
plik modelu przemielony msgpackiem waży połowę mniej, ale nadal to za dużo - piszę teraz właśnie specjalny serializer binarny, który będzie sprytnie pakował dane tak, by zawsze zajmowały jak najmniej miejsca. plus: będą tam pakowane tylko te dane, które
  • Odpowiedz
@PsichiX: Hejo, też chwilę przeglądałem kod i kontynuując wątek dodam parę rzeczy od siebie. No offense.

1. Nazewnictwo zmiennych - trzeba się na co zdecydować. Najlepiej jeśli nie używasz swojego stylu tylko potrafisz dostosować się do jakiejś normy. (ms_regexEscapes - to nie c++ :))

2. Brak jednolitej architektury. Widać, że pewne klasy powstawały spontanicznie i bez większego celu (TemplateFilesManager - zaglądam do środka i poza paroma metodami statycznymi nie widzę żadnego
  • Odpowiedz
I jest już także dostępna opcja robienia customowych edytorów definiowanych w plikach HTML! ()
Oto kod tego edytora: https://gist.github.com/PsichiX/87d3fa0f94b57b062fe1#file-date-editor-html

Powiem Wam, że to cudo działa przecudnie :3 dodatkowo przetestowałem na tym komunikację Aplikacja <-> Podgląd sceny i wiem już jak szybko osiągnąć realtime'ową edycję sceny (czego nie ma i jakiś dłuższy czas nie będzie w online'owym edytorze PlayCanvasa - nie mówiąc o customowych edytorach, bo
PsichiX - I jest już także dostępna opcja robienia customowych edytorów definiowanych...

źródło: comment_BThoofhAEIGrN2D908TKibmpfdWBCZRz.jpg

Pobierz
Yep, budowanie property editorów z konfiguracyjnych JSONów działa! Dodatkowo na razie skończonych kilka edytorów z bazowych typów PlayCanvasa (zostały assety, enumeratory, wektory i krzywe - encje dojdą na końcu, ponieważ wymagają pobierania danych z hierarchii sceny, a ta jeszcze nie ma swojej wizualizacji w widoku). Po tym czas na hierarchię sceny i komunikację z wrapperem i do końca weekendu będę miał gotowy edytor w formie (mniej-więcej jak) online'owego edytora PlayCanvasa! ^^

Btw.
PsichiX - Yep, budowanie property editorów z konfiguracyjnych JSONów działa! Dodatkow...

źródło: comment_EFyc3rh8zH631YsdtrgMFv01FfJKOwhj.jpg

Pobierz
@PsichiX @ailurus rzeczywiście, średnie wyniki gdy się nic nie robi są lepsze :D

Co do samej gry - 2 viewporty do ogarnięcia na raz to jednak nie jest pomysł na dobry gameplay ;) mój najlepszy wynik: 700...
  • Odpowiedz
Tak jak z kazdym czlowiekiem jest cos nie tak, tak i kazdy silnik ma jakas ultra nielogiczna niedociaglosc. Ale parskniecie ze smiechu, jak Wam powiem jaki problem tkwi z PlayCanvasem! :D

PlayCanvas opiera sie o wieloscenowosc, ale nie posiada zadnego przelaczania pomiedzy scenami!
#czogurwa xD


w
hmm, na dziś kodowania edytora koniec, stanąłem przed designerską ścianą - property editorów z Ptakopyska wziąć nie mogę, są ograniczone, tj. istnieje limit rodzajów edytorów (głównie są składane z bazowych edytorów).
To, co chcę uzyskać to danie możliwości użytkownikowi zdefiniowania własnego dowolnie złożonego edytora dla customowego typu, który chcemy edytować i tu pojawił się problem natury: w jaki sposób napisać kod takiego edytora, który może przyjąć dowolną formę i akcje, jednocześnie będąc konfigurowalnym z pliku tekstowego bez konieczności tworzenia pluginu w .NET-cie do aplikacji?
Rozwiązanie widzę takie: stworzyć bazową kontrolkę edytora i bazowe edytory do kilku typów JavaScriptowych, które to dodają elementy UI do bazowej kontrolki i bindują akcje na edycję i update propertiesa (czyli reagują na serializację i deserializację JSONa).
Ale ale! Co, gdy ktoś musi zrobić edytor np. ścieżek, czy innego rodzaju bardziej niecodziennych danych, czego nie da się złożyć z edytorów bazowych typów? Ano mam na to patent! ^^ użytkownik będzie mógł zarejestrować swój własny customowy edytor napisany w JSie i wyświetlać się go będzie w nowym okienku z mini-browserem (geckofx)! Jak to będzie działać? Rozpatrzmy taki przypadek (pardon, że robię z Was debugowe kaczki :D):
1. developer stworzył skrypt, który jako jeden z atrybutów jest customowego typu: MovementPath;
2. Nie da się tego w żaden sposób złożyć z edytorów bazowych, więc tworzy sobie jako asset kodu skrypt MovementPath.editor.js i w tym pliku pisze kod który ma zawierać takie funkcjonalności:
@regis3: wow. no to tego nie znałem :O dzięki! <3
dodam to jako opcję dla zaawansowanych, bo docelową grupą odbiorców są użytkownicy JSa, więc zmuszanie ich do uczenia się C# nie wchodzi w grę, ale jako opcja na zaawansowane edytory jest extra! :D
  • Odpowiedz