Interesuje mnie czy istnieje system plików, z mechanizmem gdzie, jeżeli system "zobaczy", że występuje np 5 duplikatów plików, wtedy utworzy jedną fizyczną instancję pliku, oraz pięć wirtualnych (użytkownik nie był by nawet tej warstwy świadomy), aby zaoszczędzić miejsce. Oczywiście fizyczna instancja zostałaby skasowana z chwilą skasowania ostatniej instalacji wirtualnej. Ps. Właśnie przyszło mi głowy, że jakakolwiek modyfikacja wirtualnego pliku, wymusiłaby natychmiastowe utworzenie kopii :( hmm albo zamiast kopii trzymać info o różnicy..?
I m.in. dlatego moi drodzy C czy C++ będą jeszcze przez wiele lat na topie, a ile razy to już słyszałem, że C++ to relikt przeszłości i kto jeszcze w tym pracuje. Polecam zjechać do sekcji B. Normalized Global Results. Rust ma fajny potencjał, ale mam obawy, że Mozilla jest zbyt cienka w porównaniu do gigantów typu Google czy MS, aby Rusta odpowiednio wypromować. Swoją drogą, gdzieś czytałem, że Microsoft pracuje nad
Ciekawostka ze strony klonów part 2. Jest to po części związane z tym czemu silniki walk w podróbach ssą. Oczywiście już mówiłem w poprzednim materiale - silnik Ogame (walk) jest gówniany (nieergonomiczny) - dlatego jest potencjalnie dobry i zły jednocześnie (i dlaczego Gameforge nie udostępnia symulatorów walk xD).
Jest jednak jeszcze coś, co można nazwać typowym błędem - Shield i Armor. Nic ogólnie nie zapowiada katastrofy, ale praktycznie wiele silników walk dostępnych
@fervi: 4 bajty na powłokę, 4 bajty na pancerz, jeśli trzymać te parametry jako floaty. Kilka bitów do oznaczenia typu jednostki (ow, krążownik itd.). Dodatkowo kilka bitów, żeby wiadomo było do kogo dana jednostka należy, o ile wsparcie dla ACSów jest potrzebne.
Da się spakować do 9 bajtów per jednostkę. Albo 12 bajtów, jeśli liczyć padding, tak jak w moim silniku. Przy 12GB RAM i 9 lub 12 bajtach per statek
Taka ciekawostka od strony programowania "klonów". Silnik walk to zmora każdego klonu gry. Jest to spowodowane tym, że Ogame nie jest projektem (prawdopodobnie) w całości napisany w PHP czy czymś takim, sam silnik walk jest (prawdopodobnie) napisany w C++.
Co to daje? Języki takie jak PHP mimo, że całkiem szybkie, są znacznie wolniejsze od C++, więc trzeba trzeba iść na kompromisy, szczególnie jeśli nasz silnik walk ma być "powszechny" (nie ma problemu
@fervi: Sam kiedyś chciałem skorzystać z OPBE, to dawał wyniki inne niż te w Ogame. Słabo radził sobie też z kolejnością statków i bouncing effect, np. w Ogame 1000kr+1000ow vs 10gs daje inny wynik niż 1000ow+1000kr vs 10gs (najpierw atakują ow). OPBE nie jest zły, jeśli założysz, że walki po prostu nie działają tak jak w Ogame i udostępnisz graczom symulator. IMHO lepiej po prostu napisać walki w C/C++ i symulować
@fervi: Jeśli masz walki takie jak w OGame, to ludzie mogą korzystać w Trashsima/Websima czy możesz napisać własny symulator w JS (tak jak Trashsim) i uruchamiać go po stronie klienta.
Tylko co mnie ciekawi (opinia z dupy), ale wątpię by typ tworzący OPBE celowo "pokićkał wyniki" i zastanawiam się czy silnik walk Ogame z czasem nie zmienił się, a on ma jakąś starą wersję (nie wiem).
IMHO typ tworzący OPBE przyjął prostszy model, bo w takim statystyka jest dużo łatwiejsza. Jeśli dodasz bouncing effect i kolejność statków, to nagle nie można policzyć z prostego rozkładu prawdopodobieństwa :) Wydaję mi się, że algorytm
AMD udostępniając wyniki finansowe za trzeci kwartał 2019 roku ma z pewnością czym się pochwalić. Firma od 2017 roku, kiedy to zaprezentowała pierwsze procesory serii Ryzen, oparte na architekturze Zen, stopniowo odzyskuje utraconą przed laty mocną pozycję na rynku procesorów.
@Szlifiarz: nm dzisiaj to głównie marketing, 14nm intela != 14nm amd (tsmc).
Due to marketing names, geometries vary greatly between leading manufactures. Although both TSMC and Samsung's 10nm processes are slightly denser than Intel's 14nm in raw logic density, they are far closer to Intel's 14nm than they are to Intel's 10nm (e.g., Samsung's metal pitch just 1 nanometer shorter than Intel's 14nm).
Po dość długim oczekiwaniu nadszedł czas, aby otworzyć Uniwersum 2! A nastąpi to już w ten piątek, 10 maja, o godzinie 20:00. Z tej okazji organizujemy pierwsze #rozdajo (i na pewno nie ostatnie!), którego przedmiotem jest księżycowa lampka, widoczna na zdjęciu (ʘ‿ʘ) Lampka ma wbudowany akumulator, regulację jasności oraz możliwość wyboru koloru świecenia - biały lub pomarańczowy.
@SGame: Daj mniejszą prędkość, przecież nikt nie będzie klikał co 2min :P
Jakie są bonusy w tych płatnych dodatkach? Ostatnio ktoś wrzucał klona też bazującego na 2moons. Jednym z dodatków było zmniejszenie czasu lotu o 50%, więc można farmić 2x więcej. Bardziej pay2win niż ogame ( ͡°͜ʖ͡°)
Przy testowaniu pakietu algorytmu odkryłem rzecz która mnie bardzo zastanawia, mianowicie czas wykonywania pętli. Ktoś mądry odpowie mi dlaczego te czasy wykonania pętli są tak różne?
Gdy zakomentuje funkcje anonimowaw i puszcze tylko go fuzzy.EditDistance(str1, str2+strconv.Itoa(i)) czas wykonania to ok 330ms
for i := 0; i < 1000000; i++ { go fuzzy.EditDistance(str1, str2+strconv.Itoa(i)) // 330.1175ms //go func(str1 string, str2 string, i int) { // fuzzy.EditDistance(str1, str2+strconv.Itoa(i)) //}(str1, str2, i) } Gdy
@CandyCancer: U mnie jest 318ms, 1s-2s, 541ms (sama pierwsza funkcja, sama druga, obie). Drugi czas potrafi się sporo wahać.
Sprawdziłem wygenerowane kody, wyglądają całkiem podobnie. Jeśli odpalę z GOMAXPROCS=1, to jest 1.60s, 1.85s, 3.20s, więc podobnie. IMHO optymalizacje kompilatora odgrywają małą rolę w tym przypadku ;p
perf stat -e cache-references,cache-misses pokazuje 1.5%, 40%, 2% cache misses, więc pewnie problem leży w tym jak scheduler GO wykonuje te funkcje :)
Witam Mam tu "wykopaną" nową grę ( http://oldgame.eu ) w której postarano się aby wszystko było w stylu starego ogame. Gra przede wszystkim jest dla wszystkich chcących poczuć się jak dawniej (10-15 lat temu na ogame). Jako dodatkową zachętę do gry mamy tam darmowego non-stop handlarza i komandora, a także produkcję o prędkości 6x. Gra (universum) właśnie startuje - http://oldgame.eu - zapraszamy:)
@oldgame na ogame ludzie nie kupują surki na potęgę, bo się po prostu nie opłaca (pomijając być może początek gry). Ty masz czas lotu -50%, czyli 2x większy zysk z farmienia przez cały czas gry ¯_(ツ)_/¯
Zauważyłem ostatnio, ze jest wśród Was wielu fanów starego OGame, więc chciałbym dzisiaj przedstawić Wam mój projekt, który realizuję od sierpnia 2018 roku.
Serwer nazywa się SGame, postawiony został na standardowym silniku 2moons w wersji 1.8 i rozwija się każdego dnia (ciężko znaleźć dzień bez chociażby drobnej aktualizacji) :)
Najlepiej zobrazują to poniższe statystyki: Od startu serwera dodano aż 12204 linii kodu, a
@SGame: Szacun za projekt ;) Możesz napisać coś więcej o: - Handlarz surowców - Jak często można wymieniać? Są jakieś ograniczenia? Przelicznik jest stały czy dynamiczny? - Nowy algorytm tworzenia i niszczenia księżycy - W jaki sposób działa tworzenie moona sobie samemu? - Zmieniono zasadę działania Szybkich Dział - Na jakiej zasadzie działa teraz algorytm walk? Można będzie używać znanych symulatorów?
I ogólnie: - aktywności robią się poprawnie, tak jak w
nie ma żadnych ograniczeń przy korzystaniu z handlarza
czy to znaczy, że M/K/D nie są potrzebne? Bo właściwie wystarczy jeden surowiec, skoro można zawsze po tym samym przeliczniku wymienić, więc zawsze masz tyle samo w np. deuterze (po przehandlowaniu wszystkiego na deuter)
"aktywności robią się poprawnie" - co masz przez to na myśli?
Mam na myśli, czy wydarzenia w grze wykonują się w tle, czy podczas kliknięcia w grze? Np.
@SGame: No właśnie powinno znikać przy zbieraniu, i to dokładnie o danej porze, to jest krytyczne dla flociarzy. Jak jest z resztą aktywności o które zapytałem?
@SGame: Misja "Zatrzymaj" nie powinna robić aktywności, ma to aspekt taktyczny, będzie fix przed u2? Tzn. jeśli przeglądam galaktykę, to robię gwiazdkę na planetach które właśnie przeglądam, tj. patrzę się na układ 1:2, więc wszystkie planety 1:2:1 - 1:2:15 dostaną gwiazdkę?
Po co wy się męczycie na tym szrocie? Tyle ludzi się rzuciło na coś co nawet nie wyglada jak stare ogame, ani nie działa dobrze, ma bugi i nic nie jest w nim naprawione. Wrzucili jakis silnik z neta na serwer i mysla, ze bedzie dobrze xD @MirkOgame Nie chce tu robić reklamy, ale kilka dni wcześniej pisałem o grze która jest o niebo lepsza i w starym stylu z programista który
@I_Will_Never_Forget: Jeśli poprawił wszystkie bugi, to szacun, bo 2moons ma ich sporo, źle działające walki i race conditiony to tylko początek ;) Tak czy siak, mirkogame migruje na nowy silnik, więc może tych bugów będzie trochę mniej ;p
wstępnie na przyszły weekend tj. piątek/sobota (14/15 grudnia) zaplanowana jest migracja na nowy silnik gry. Prędkość Uni zostanie zachowana, natomiast zmieni się system walki - będzie identyczny jak w klasycznym OGame, więc symulatory dostępne na internetach będą spójne z grą.
RESETU NIE BĘDZIE. BAZA Z UŻYTKOWNIKAMI ZOSTANIE ZMIGROWANA NA NOWY SILNIK. Ponadto postaramy się ściągnąć wyjadaczy z ogame1304.de czyli oficjalnego retro-universe które zostało wyłączone przez OGame ze względu na ilość
@package0x01: 1. Jeśli napiszesz ten sam algorytm w javie, używając tzn Array of Structs, to java może zaalokować kilka razy więcej pamięci dla tej samej bitwy. W C potrzebujesz mniej pamięci, więc lepsze cache -> bitwy się symulują szybciej. Poza tym serwer jest tańszy :P 2. Jeśli użyjesz Struct of Arrays, to masz znowu problem z cache, bo dane jednego statku są porozrzucane po pamięci. 3. Kompilatory C po prostu generują
@MamCieNaHita: Mam gdzieś stare benchmarki. Gdy będę miał czas, to poszukam i wrzucę. Jak chcesz się pobawić, to na razie możesz po prostu porównać czy 2 implementacje dają te same wyniki. Później postaram się wrzucić jakieś testy ;)
@Philopolemus_Fronius: Na jakiej zasadzie działają asynchroniczne repozytoria? Jeśli masz jakąś transakcję, to po pierwszym zapytaniu do db inni klienci nie mogą korzystać z tego samego połączenia do db, bo wszystkie kolejne zapytania w tym połączeniu będą w tej samej transakcji aż do commita. Jeśli więc masz K połączeń w db pool i N klientów, to N – K klientów i tak musi czekać, żeby dostać wolne połączenie.
@Philopolemus_Fronius: podejrzewam, że jeśli nie każdy request musi się łączyć z db, to ma to sens, bo te requesty nie będą musiały czekać. W sumie thread/req daje to samo bez konieczności używania nonblocking io
@Philopolemus_Fronius: Twój wykres mierzy dużo więcej rzeczy niż tylko async io vs thread/req. async io nie zawsze jest szybsze, bo zazwyczaj wymaga więcej pracy, i.e. musisz dodać socket do epoll/kqueue, dodatkowy kod w reactorze musi zostać wykonany etc. Kilka miesięcy temu bawiłem się w async io i zrobiłem kilka benchmarków. echo server przy 20k równoczesnych połączeniach: 419k req/s używając boost.asio i 389k req/s używając thread/conn ;) Zobacz też to: https://medium.com/netflix-techblog/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c
@Czarcz: ACSy, falanga, kolejki, niszczenie księżyca, wszystkie misje. Brakuje np. urlopów, banów, sojuszy. Możesz zobaczyć tutaj: http://139.162.180.29:1305 Tylko to jest serwer testowy, więc może kiedyś po prostu zniknąć, na zawsze ( ͡°͜ʖ͡°)
Ps. Właśnie przyszło mi głowy, że jakakolwiek modyfikacja wirtualnego pliku, wymusiłaby natychmiastowe utworzenie kopii :( hmm albo zamiast kopii trzymać info o różnicy..?
https://btrfs.wiki.kernel.org/index.php/Deduplication