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
  • 17
##!$%@? -.-
Slowacy w akcji, part 2:

Mowilem juz im, ze trzymanie osobno grafik dla koloru i alphy jako dwie tekstury to zlo i polamalbym kark kazdemu, kto tak robi w browserowej grze i ze to powoduje crashe gier, ale jak grochem o sciane..
Dzisiaj dali mi do debugowania gry mobilne, zebym zprofilowal bo crashe. No i pacze co ile zajmuje w pamieci, i olac juz to iz alokuja mase arrayek duzych co ramke i nie zwalniaja i do uja pana nie naprawia tego do konca tygodnia, ale znowu nie widze zmiany na jedna teksture RGBA z dwoch (kolor-opacity). Az musialem jak dziecku wytlumaczyc czemu to ma w uj wielki impakt dla pamieci na mobilnym browserze - ciekawe jaka bedzie reakcja. Jak nadal beda bronic sie jakimis gunwo argumentami to rezygnuje, bo po prostu 'nie wyczymie' i #!$%@? dostane, albo jakiegos ciapaka zaciupam :<

I
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
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
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
Miałem troszku przebojów z edytorem w kwestii zarządzania i bezpieczeństwa działania od strony serwerów HTTP odpalanych przez edytor, ale udało się! działa już proces zarządzania projektem (tworzenie nowego, otwieranie istniejącego, budowanie, czyszczenie builda, odpalanie buildów w przeglądarce; tryby: Debug i Release - da się też budować spod terminala) - a skoro to już działa perfect, to mogę teraz zająć się rozwijaniem edycji scen w edytorze (
PsichiX - Miałem troszku przebojów z edytorem w kwestii zarządzania i bezpieczeństwa ...

źródło: comment_BKZeZJVa0102tS2nI6xvUj8K6zMijvwg.jpg

Pobierz
  • Odpowiedz
Obczajania i testowania PlayCanvasa ciąg dalszy <3
Po głębszym obczajeniu: ichni edytor ssie w kwestii prefabów oraz customowych komponentów, poprawiają to, acz trzeba na rezultaty zaczekać dosyć długo. Na szczęście jeśli nie da się czegoś w edytorze zrobić, obszerne API silnika jest udostępnione i można to samemu zrobić (no poza zaimplementowaniem zmian w edytorze, którego nie da się używać poza ich serwisem) - tylko, że jak wiemy z przykładu Three.js, zasada "nie
@Colos: da. ale ale! jego świetność polega na tym, że jako jedyny posiada w miar zaawansowany edytor, w porównaniu do innych silników webowych. poza tym to kolejny silnik do gier w HTML5.
  • Odpowiedz
@PsichiX: Ekstra. Musze koniecznie ogarnąć. A jak tam Twój Ptakopysk?
Lubisz podejście Unity3D, że składasz prefaby z komponentów (to chyba entity system się nazywa?) itp., masz jakieś preferencje co do narzędzi, bibliotek? :D
Sam uważam, że gamdev nidługo ucieknie do weba :D
  • Odpowiedz
Mam Ci ja nowe zadanie: przetestować PlayCanvas (https://playcanvas.com/) - początki zawsze są fajne, ale w porównaniu do Three.js ten silnik ma swoje edytory (szkoda, że działają tylko w webie, ale na czymś silnik musi zarabiać i robi to bardzo dobrze - poprzez aplikacje satelitarne, nie na samej licencji za kod silnika). Silnik można też ściągnąć i używać gołego API bez edytorów. Funkcjonalności ma fajne, działa tak jak powinien, czyli jest oparty
PsichiX - Mam Ci ja nowe zadanie: przetestować PlayCanvas (https://playcanvas.com/) -...

źródło: comment_pmcqDuiDoikCmWbdxOUGwtycPyUkTnYz.jpg

Pobierz
Multipass rendering prawie gotowy - czas go przetestować i liczyć na to, że nic się nie #!$%@? ()

Jak tak dalej pójdzie, to wyjdzie na to, że będę miał zrobiony gotowy zestaw rozszerzeń do Three.js, całkowicie dostosowujący go do standardów nowoczesności ( )

I pomyśleć, że trzeba się tyle #!$%@?ć z kodem, by móc zrobić semi-transparentne (efekt 'ducha') warstwy w
  • Odpowiedz
#ihatejavascript - ciąg dalszy borykania ze #!$%@? Three.js:
zmieniając parametry kamery, trzeba explicite wywołać camera.updateProjectionMatrix() - bo przeto w JSie Object.defineProperty() jest bezużyteczne, a nawet auto update'u macierzy przed renderingiem zrobić nie można (typowa funkcjonalność zwana 'dirty')
()
  • Odpowiedz
W Three.js niezbyt da się robić wielomateriałowe meshe (w sensie: da się, ale nie do końca tak, jak to być powinno ;<), więc musiałem napisać klasę, która rozwiąże ten problem. Dodatkowo, zakodowałem binarny format modeli, więc dane też są chudsze (jeszcze tylko by tak dodać do eksportera opcję konwersji także z Collady i byłoby już pro <3)

Obrazek nie zachwyca, ale pokazuje że to działa - klasycznie: Teapot :3


#ihatejavascript
PsichiX - W Three.js niezbyt da się robić wielomateriałowe meshe (w sensie: da się, a...

źródło: comment_xC7jMOXciJsstp0UPCCewbimT6akHfdP.jpg

Pobierz
via Android
  • 1
@MP0WER: eksporter łyka aktualnie plain text OBJ i za pomocą Bufferów zapisuję dane binarne (big-endian; używane przez model materiały oraz sub-meshe), potem po stronie przeglądarki odczytuję ArrayBuffer za pomocą DataView - tak, całkowicie 'ręcznie' koduje i odkodowuje dane binarne (lubię mieć pełną kontrolę) xD
  • Odpowiedz
oho, to mi sie trafił kolejny bug z dupy w Three.js - zaczyna mnie wkurzać to coraz częstrze omijanie błędów/braków tej libki, więcej się jej nie tykam, jeśli będę musiał znowu coś budować na niej od zera.. ()

Nie wiem, czy to jakaś moda w JSie, czy twórcy libki sobie mnie trollują, ale o zarządzaniu pamięcią to chyba nie słyszeli - są metody dispose() ale tylko na obiektach,
Ohesu, skończyłem! musiałem zrobić od zera renderer tekstu i asset czcionek, bo Three.js obsługuje tylko i wyłącznie rendering czcionek systemowych, albo css media () straciłem dzień, ale za jednym zamachem będę miał od razu kolejną kontrolkę UI ()
#ihatejavascript
Ja #!$%@?.. Three.js to jest jednak #!$%@? libka - aby zrobić poprawne wyświetlanie UI, musiałem zanegować skalę sceny UI tylko po to, by obrazki nie były wyświetlane do góry nogami z kamerą z punktem [0; 0] w lewym-górnym rogu, bo skala na sprajtach skaluje dzieci, nie samego sprajta, a nie da się modyfikować UVek sprajta, bo przenieśli to do tekstur. ja #!$%@?.. ( ͡° ʖ̯ ͡°)
i tak
PsichiX - Ja #!$%@?.. Three.js to jest jednak #!$%@? libka - aby zrobić poprawne wyśw...

źródło: comment_CRSJTd1qo3SLnpudGaKhPoGRF059hXRA.jpg

Pobierz
uff, baza dla renderowalnych kontrolek UI zrobiona i przetestowana! przed południem zacznę tworzyć konkretne kontrolki, ale jeszcze nie pochwalę się API UI managera - zostanie mi dodać serializację i deserializację drzewa UI, wtedy zarzucę kodem przykładowym i chętnie wysłucham opinii :3
#ihatejavascript
  • Odpowiedz
My code works and i dunno why.. O.o

Ale testy nie kłamią - z sukcesem odwzorowałem funkcjonalności Anchor i Dock z .NET-owego WinForms do mojego UI Managera w JavaScriptcie ( ͡ ͜ʖ ͡)
Kolejny cud na dzień dzisiejszy zaliczony, można iść spać! ()
Jak skończę całą abstrakcję UI Managera to podrzucę przykład użycia API