Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Lerhes

Strony: 1 2 3 4 [5] 6 7 8 9 ... 25
61
Szkółka / Odp: Moralne aspekty wielowątkowości
« dnia: Maj 24, 2011, 16:48:50 »
Cytuj
Wypowiedz goscia ktory twierdzi ze ma 4 lata doswiadczenia w pisaniu programow wielowatkowych mnie rozwalila.
Cieszę się, że moja wypowiedź cię rozwaliła. Niemniej, to jest fakt -> od 4 lat duża część kodu który stworzyłem korzysta z wielowątkowości. Ten gościu może mieć odmienne zdanie od twojego, więc jeżeli chcesz go przekonać, to musisz swoje poglądy podpierać argumentami.

Cytuj
Uzywanie watkow w gamedev jest konieczne bez tego zapomnij ze uda ci sie osiagnac przyzwoity framerate.
Widziałem tyle gier które nie miały wielowątkowości i jakoś miały bardzo sensowny framerate. Nie wiem w jakiej produkcji uczestniczysz, ale zalatuje jakimś AAA. Ja tutaj mówię o małych projektach, wręcz amatorskich / Indie (co wyraźnie podkreśliłem w mojej wypowiedzi).

Cytuj
Fizyka, AI, frustum/occlusion culling, liczenie Octree i innych struktur - to wszystko da się bez problemu zrównoleglić. Ba, w DirectX 11 jest nawet możliwość wielowątkowego renderingu.
No przynajmniej konkretnie wymienione kilka pozycji. Generalnie zgadzam się, że można by te fragmenty gry wykonać na innym wątku.

Może nie do końca dobrze wyraziłem to co chciałem. Z perspektywy twórcy gier Indie / amatora nadal nie zostałem przekonany, jakoby wielowątkowość specjalnie była mi potrzebna. Najlepszym tego dowodem jest to, że do tej pory ja ( jak i wielu innych programistów ) nie korzystało z tego narzędzia przy tworzeniu gier, a jednak gry takie powstawały.

Więc jeżeli twórcy dużych produkcji, których świat jest dla mnie na razie tajemnicą (i raczej tak pozostanie) poczuli się obrażeni / zdegustowani / rozwaleni moją wypowiedzią to przepraszam. Niemniej pragnę im przypomnieć że gry to nie tylko 100 + osobowe produkcje. W mniejszych projektach, ja na tę wielowątkowość specjalnie miejsca nadal nie widzę.

PS: Ktoś uważny może wychwycić sprzeczność mojej wypowiedzi. Niby 4 lata doświadczenia, a z drugiej strony mówi, że wielowątkowości nie używa? Powód jest prosty: W mojej obecnej pracy (pomiary fizyczne) piszę wielowątkowe programy na porządku dziennym. Robieniem gier zajmuje się w wolnym czasie -> i są to małe 1-3 osobowe produkcje.
Lerhes

62
Szkółka / Odp: Moralne aspekty wielowątkowości
« dnia: Maj 24, 2011, 15:17:01 »
Cytuj
Hm za darmo 2-4x wzrost wydajności - faktycznie nie ma sensu zaprzątać sobie głowy takimi pierdołami.
Nie ma sensu. Nie boję się wielowątkowości -> napisałem duży system który przetwarzał dane w różny sposób -> razem miał około 17 wątków współpracujących ze sobą. Tam miało to sens.

Jako kontr przykład można podać Netscape -> przeglądarkę która najpierw była prosto zbudowana i zyskała rzeszę klientów. Potem przepisano ją do nowej wersji (miała być dużo lepsza -> bo została rozbudowana między innymi o kod wielowątkowy) która okazała się deską grobową przeglądarki i firmy. Nie dość, że pisanie i testowanie zajęło dużo więcej czasu niż przypuszczano, to do tego miała masę błędów i była wolna.

Tym wzrostem 2-4 krotnym naprawdę warto się interesować? Według mnie nie (szczególnie w aspekcie gier). Jest tutaj masa różnych rzeczy które trzeba wziąć pod uwagę. Pojawiają się problemy z synchronizacją, znacznie komplikuje się architektura, znacznie trudniej taki kod debugować i usuwać błędy. Trudno wybrać, który kod można by oddelegować do równoległego obliczania (szczególnie w grach jest to dobre pytanie). Dodatkowo dochodzi do tego sprawa ochrony pamięci przed jednoczesnym dostępem. Trzeba uwzględnić te i wiele innych czynników (jak ten, że chociaż byś został czarodziejem Szymkiem nie ma opcji żebyś (dla uproszczenia na 2 rdzeniach) podniósł wydajność x2. A biorąc pod uwagę, że to gry... to może 20% byś wycisnął. Warto?

Jeszcze innym aspektem jest to, że w grach, szczególnie 3D gorszą sprawą jest wydajność karty graficznej, a nie akurat procesora -> więc po co dzielić obliczenia? Kolejną uwagą jest to, że jeżeli ktoś tego dwurdzeniowego procesora nie ma, to tylko twój program będzie wykonywał się wolniej, ze względu na przełączanie wątków. W niektórych zastosowaniach dobrze wiesz, na jaki procesor piszesz program, ale w GD?
Wielordzeniowe procesory przydają się raczej wtedy, gdy uruchamia się na nich kilka programów i każdy zaciąga do pracy jeden z rdzeni (no i oczywiście +1 dla systemu operacyjnego). Zapobiega to zawieszkom systemu, jakie można było obserwować na jedno rdzeniowych procesorach (pamiętacie ? :) ). Przy konwersjach filmu, dźwięku .. ok.

Zaznaczę tutaj ponownie: Nie jestem ignorantem -> nie twierdzę, że wielowątkowość jest zła i nieprzydatna do niczego. Jest przydatna, ale w niektórych zadaniach. Czy akurat jest to GD? Według mnie nie.
Jedyny obszar gdzie jakoś widzę tę wielowątkowość to obsługa sieci i liczenie AI przeciwników.

Uwaga: Powyższe zdanie zostało wypowiedziane w celu ostrzeżenia / uspokojenia początkujących którzy nagle rzucą się na wielowątkowość, aby ich gra była lepsza. Dodatkowo warto zaznaczyć, że wyrażone opinie są aktualne na dzień dzisiejszy i pod wpływem wypowiedzi innych użytkowników forum, lub po lekturze jakichś artykułów które mogą być polecone -> może ulec zmianie. Wynikła ona z 4 letniego intensywnego doświadczenia (czyli nie takiego dużego) z programowaniem wielowątkowym.
Lerhes

63
Szkółka / Odp: Wątki, a funkcja
« dnia: Maj 23, 2011, 23:40:48 »
Według mojej wiedzy można Ci tak zrobić -> to znaczy możesz uruchamiać tę samą funkcję z różnych wątków i każdy będzie sobie pracował z własnym plikiem i własnymi zmiennymi (oczywiście pod warunkiem, że nie ma w tej funkcji jakichś zmiennych statycznych lub zmiennych globalnych oraz, że nazwy tych plików są różne).
Jeszcze się wahałem, czy system operacyjny przeprowadzi poprawie takie zapisy plików z wielu wątków -> ale w sumie on obsługuje wiele programów -> i często jednocześnie wiele z nich coś czyta / zapisuje więc raczej tutaj problemu być nie powinno.
Lerhes

64
Prywata / Offtop / Spam / ciekawość:
Cytuj
Dlatego olałem to i mam serdecznie gdzieś. Oczywiście taka postawa nie rozwiązuje ani jednego problemu, tworzy nowe, ale lepiej człowiek się czuje.
Jeżeli mogę dopytać: To znaczy, co zrobiłeś Vipa? Uciekłeś z GD do innej branży, czy w ogóle zajmujesz się, na ten przykład: malarstwem?

Ja z moim nikłym doświadczeniem nie będę się wypowiadał na temat stosunków pracowników pomiędzy różnymi firmami. (btw: może boją się, że pomagając naruszają umowę o zachowaniu tajemnicy? (bez sensu)).
Natomiast z obserwacji forum wnioskuję coś innego: Są nadal ludzie, który za darmo tracą swój czas dzieląc się swoją wiedzą... do tego stopnia, że i czasami bezpośrednio kod poprawią. A wielu z nich ma pracę / rodzinę. To mnie buduje w pewien sposób.
Lerhes

65
Szkółka / Odp: Błąd przy Release
« dnia: Maj 18, 2011, 23:44:34 »
Faktycznie... dziwny ten błąd. Ja bym mimo wszystko rozpoczął zmiany od tego, co tutaj opisano:
http://wiki.gamedev.pl/Dystrybucja_aplikacji_napisanych_w_Visual_CPP_2005_EE

Zrób wszystko dokładnie tak jak opisano, zastępując oczywiście 90 -> 100 (bo masz VS2010).
Jak nie pomoże, będziemy kombinować dalej -> wtedy więcej informacji potrzeba: VS2010 a kod? C++? Jakieś biblioteki ? SDL?
Lerhes

66
Grafika 2D / Odp: SFML pożera procesor
« dnia: Maj 16, 2011, 01:42:28 »
Kod tak napisałeś, że całe zasoby procesora są wykorzystywane do wykonywania twojego programu -> dlatego otrzymujesz takie wyniki. Poszukaj na tym forum takich tematów bo było ich dużo (jak ten efekt ograniczać).
Szybkim tipsem będzie, po utworzeniu okna dodanie:
Okno.UseVerticalSync(true);Co to jest i co właściwie robi -> dokumentacja.
Lerhes

67
Allegro / Odp: Allegro5 - wczytanie bitmapy
« dnia: Maj 15, 2011, 04:03:08 »
Cytuj
Oczywiście obrazek jest na swoim miejscu

A jesteś tego absolutnie pewny? Bo mi się nie wydaje.

Żeby mieć jakieś podstawy, do rozmowy, załóżmy że używamy kodu: SeaMonster131.
Szczególnie ważna jest nazwa: al_load_bitmap("blabla.bmp");
-> niech to będzie blabla.bmp -> bez żadnych podfolderów.

Teraz zakładam, że korzystasz z Visual Studio i uruchamiasz kompilację / linkowanie / uruchomienie gry poprzez skrót F5. Jeżeli nazwałeś swój projekt podczas tworzenia, np: allegro, to zlokalizuj folder w którym będzie plik: allegro.sln. Tam będzie też podfolder o tej samej nazwie (allegro -> a w nim pliki źródłowe, takie jak sobie utworzyłeś, zapewne: main.cpp). Wejdź do podfolderu allegro (czyli teraz widzisz ten plik main.cpp) i tutaj umieść swój obrazek: blabla.bmp.
Lerhes

68
fir tak mi tylko przychodzi do głowy -> luźna propozycja do poszukania w google sprawdzenia -> w jakim formacie są te obrazki które wczytujesz? Na pewno są:
A) W dobrym formacie (tga / bmp / jpg / gif)?
B) Na pewno są poprawie utworzone ? (nie każdy program zapisuje poprawie pliki graficzne, szczególnie jeżeli chodzi o przezroczystość)
C) Na pewno dobrą funkcją to wczytujesz? (W SDL był na przykład z tym problem).
Lerhes

69
Allegro / Odp: Niepoprawne identyfikatory; błąd C3861
« dnia: Maj 10, 2011, 16:00:03 »
Cytuj
funkcje są najprawdopodobniej jak należy
Nie są -> masz przecież błędy.
Cytuj
Przeglądałem te pliki nagłówkowe czy czasem nie ściągnąłem czegoś trefnego i nie są puste więc już nie wiem co dalej.
Jakbyś przeglądnął to byś zobaczył, jakie tam funkcje się znajdują (i jak się nazywają) -> czyli te z allegro 5, a nie to co używasz -> allegro 4.

Cytuj
Napisałeś tam żeby dodać zmienną środowiskową - i co z tego? W solucji do ściągnięcia opcje są już ustawione, więc ta Twoja porada pomaga tylko odpalić projekt który podałeś i nic innego. Co ludziom da ustawienie zmiennej systemowej jeśli nie uwzględnią przez nią ścieżek do plików .lib i nagłówkowych w opcjach projektu? :P
Ona pomaga w odpaleniu szablonu projektu allegro 5 -> ty jedyne co musisz zrobić, to pisać sobie dalej. Dostarczona solucja uwzględnia wszystko co trzeba -> jeżeli nie umiesz sam tego zrobić -> podpatrz sobie jak ja to ustawiłem w solucji ( "i co z tego?" -> i to z tego, że skoro działa to zobacz sobie sam jak to jest zrobione... (jak ścieżki się ustawia, jak liby)). Zmienna systemowa jest po to, żeby (między innymi) taka solucja była przenośna.

Cytuj
sprawdziłem w manualu wszystkie te funkcje, są w najnowszej wersji i przyjmują takie same parametry
Kłamstwo, a możesz dać linka gdzie to sprawdzałeś?

Napisałem Ci czarno na białym dlaczego Ci nie działa i co zrobić, a Ty dalej swoje, więc zróbmy to razem, krok po kroku (za rączkę).

Zacznijmy od faktyczniego sprawdzenia manuala, znajduje się on tutaj:
http://alleg.sourceforge.net/api.html
Są dwie wersje, do 5 i do 4. No to może zacznijmy od tej co masz, czyli od 5:
Klikamy po lewej: "System routines" -> no i oglądamy jak zainicjalizować allegro. Hmmm, nie ma tutaj nic o allegro_init(). W całym manualu nie udało mi się odszukać takiej funkcji. Jest natomiast: al_init() -> którą to funkcję masz wywołaną w mojej małej paczce którą dostarczyłem w cytowanym wyżej poradniku. I to właśnie tę funkcję powinieneś użyć.

Oczywiście allegro_init(); znajdziemy w tutorialu do allegro w wersji 4.
Więc moja porada pozostaje niezmienna jak w poście powyżej.

Cytuj
ale każdy kiedyś zaczynał
Niezależnie czy zaczynasz czy nie, myśleć trzeba. Szczególnie, że przecież Ci napisałem co zepsułeś, więc? :(
Czekam więc na linka, w którym sprawdziłeś, że w allegro 5 te funkcje nazywają się tak samo jak w allegro 4.
Liosan: Zazwyczaj jestem grzeczny i miły. Ale jak ktoś odpisuje w pretensjonalnym tonie i nie umie wyciągnąć podstawowych wniosków..
Lerhes

70
Allegro / Odp: Niepoprawne identyfikatory; błąd C3861
« dnia: Maj 10, 2011, 10:38:37 »
Jest pomóż .. i jest nawet proszę... rzadkość .. :)

Czyli skoro twoje / moje porady kompilują się -> to w takim razie prawda jest tylko jedna:
Popatrz sobie w moim kodzie jakie tam są nazwy funkcji -> a jakie ty teraz używasz. Skopiowałeś kod z tutoriala do allegro w wersji starszej (4) a zainstalowałeś wersję nowszą -> 5.

Masz dwie opcje: albo zainstalować sobie wersję 4 -> nie ma problemu, można mieć tę i tę wersję spokojnie na jednym komputerze, albo zmienić tutorial.
Edit: W sumie możesz jeszcze zostać pastuszkiem, też dobra fucha :]
Lerhes

71
Allegro / Odp: Niepoprawne identyfikatory; błąd C3861
« dnia: Maj 10, 2011, 01:54:28 »
Eh...
Auliszek śmiecisz tylko na forum, w poprzednim temacie już Ci dałem linka do instrukcji krok po kroku co trzeba zrobić, żeby Ci allegro 5 zadziałało:
http://forum.warsztat.gd/index.php?topic=21379.msg252850#msg252850

Prościej się już opisać tego nie da. Jak chcesz pomocy, to przynajmniej stosuj się do tego co Ci piszą. Gdy dojdziesz do momentu, gdy wyświetli Ci się błąd który zamieściłem na screenie w referowanym poście i nie będziesz go umiał rozwiązać (matko :/ ) to napisz i powiem Ci co zrobić.

A błąd który dostałeś mówi Ci prosto i czytelnie: Nie dodałeś poprawie plików nagłówkowych allegro.
Lerhes

72
Dyskusje / Odp: O grach, które przestały być grami
« dnia: Maj 08, 2011, 02:04:59 »
Wladek :) dobrze, że Cię tutaj mamy -> zawsze coś nietuzinkowego można przeczytać. No i poglądy zweryfikować przy okazji.
Ja tylko jedno chciałem tutaj nadmienić: Jak dzielisz się z nami swoimi poglądami, to musisz być przygotowany na to, że:
a) inni mogą się z nimi nie zgadzać -> będą więc próbować je podważyć / ośmieszyć.
b) dla innych mogą się wydawać zabawne -> będą je wyśmiewać.

Z tej też prostej przyczyny: albo zachowaj swoje poglądy dla siebie, albo bądź przygotowany na różnego typu reakcje -> i niestety, będziesz czytał komentarze, które niekoniecznie będą Ci się podobały.
Ale: może dzięki wyrażeniu swojego zdania uda Ci się sprowokować kilka osób do myślenia -> czego życzę Ci z całego serca.
Btw: Na AGH był obierak o nazwie "globalizacja" -> poglądy tam głoszone były bardzo podobne do Twoich. Spodobał by Ci się :)
Uwaga: Powyższy post NIE zawiera ironii.
Lerhes

73
Allegro / Odp: Instalacja Allegro 5.0.2-1 dla Visual 2010
« dnia: Maj 07, 2011, 16:49:42 »
Jakbyś miał kolejne pytania, to najpierw przeczytaj tutaj:
http://forum.warsztat.gd/index.php?topic=21379.msg252850#msg252850
Edit down: Pytałeś dokładnie o to samo. I dostałeś dokładnie taką samą odpowiedź.
Lerhes

74
OMG :( dlaczego dopiero teraz o tym przeczytałem :/ A miałem spokojnie czas, żeby przyjść.....
Edit: A nie! Bo to po północy jest :P Czyli 5 maja dopiero nadciąga. Chrum, chrum... tylko że akurat dzisiaj o 18 to raczej nie dam rady, ale może się jakoś uda.
Lerhes

75
C++ / Odp: Wskaźniki na elementy tablicy vector
« dnia: Maj 03, 2011, 20:33:17 »
Cytuj
Każdy alokator pamięci trzyma jakieś swoje metadane do oznaczania wolnych i zajętych bloków/węzłów.
No tak, oczywiście. Czy jest to lista, o której pisałeś, czy jakieś inne miejsce (tablica ze spisem zaalokowanych segmentów) gdzieś te informacje muszą być, żeby już zwolnione obszary wykorzystać ponownie. Byłem świadom istnienia tych narzutów, ale nie brałem ich pod uwagę ze względu na ich niewielki rozmiar (przy alokacjach które najczęściej są duże) (z drugiej strony, nie tworzę wektorów ze wskaźnikami na int...), ale warto o tym pamiętać. Dzięki za przypomnienie.

Cytuj
Poszukaj implementacji dlmalloc i zobacz.
Sprawdziłem, chyba chodzi o to, że:
Cytuj
/* The smallest size we can malloc is an aligned minimal chunk */
#define MIN_CHUNK_SIZE\
  ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK)

Cytuj
#define MCHUNK_SIZE         (sizeof(mchunk))

Cytuj
struct malloc_chunk {
  size_t               prev_foot;  /* Size of previous chunk (if free).  */
  size_t               head;       /* Size and inuse bits. */
  struct malloc_chunk* fd;         /* double links -- used only if free. */
  struct malloc_chunk* bk;
};

4 * 4B = 16B.

To dotyczy oczywiście malloc. Wydaje mi się, że z new jest nieco inaczej, ale na pewno jakieś dodatkowe dane musi zamieszczać, cudów nie ma.
Dzięki za sprostowanie.
Lerhes

Strony: 1 2 3 4 [5] 6 7 8 9 ... 25