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 - Esidar

Strony: [1] 2 3 4 5 ... 111
1
DirectX / Odp: Oznaczanie błędów - Gdzie i jak ?
« dnia: Czerwiec 22, 2013, 14:09:08 »
nie stracić na czytelności kodu tak jak w tej funkcji poniżej gdzie if'y i Logi zajmują 3razy więcej miejsca niż sam kod
Podałeś tylko jedną z funkcji jakich będą setki/tysiące w całym kodzie. Jest to bardzo rzadki przypadek. 99% funkcji nie będzie sprawdzać żadnych błędów tylko zakładać, że zasób jest dostępny.

Z punktu widzenia funkcjonalności, nawet lepiej jest w ogóle nie sprawdzać błędów lub tego unikać. Dla przykładu, niech funkcja LoadTexture nie zwraca błędu w ogóle. Pozostaw wyrzucenie błędu do loga, ale obsługę błędu już zostaw w funkcji i nie przerzucaj odpowiedzialności za to na funkcje wyżej.

Dla przykładu, to że tekstura jest już wczytana, to nie jest błąd a jedynie ostrzeżenie. Nie ma żadnego wpływu na funkcję która ją wywołuje. Nie ma więc sensu zwracać "false" skoro tekstura jest dostępna i można jej użyć. Po drugie, jeżeli nie można wczytać tekstury, to również zwróć jedynie info do loga, a w funkcji zastosuj fallback do defaultowej tekstury. W silnikach stosuje się np. różową teksturę żeby była widoczna dla użytkownika.

Innymi słowy niech funkcja loadTexture działa zawsze bez zwracania błędu. Dzięki temu każda funkcja ją wywołująca będzie mogła założyć że tekstura jest, a błąd będzie widoczny jedynie w logu i nie będzie powodować zmiany zachowania silnika. I w ogóle zapomnij o rzucaniu wyjątkami (i to bez ich przechwytywania) tylko dlatego, że tekstura jest niewczytana. Wyobraź sobie, że grasz 5min i nagle aplikacja się zamyka, bo tekstury jakiegoś przycisku nie ma. Niezależnie od tego co się nie powiodło, aplikacja ma nadal działać i jedynie poinformować o błędzie, czy to komunikatem czy różową teksturą.

2
Sieć i multiplayer / Odp: Sieć a wielowątkowość [Windows]
« dnia: Maj 31, 2013, 19:13:23 »
Nie mam zielonego pojęcia jak to dobrze zsynchronizować. Myślałem o zrobieniu jakiejś kolejki i obsługiwanie pakietów tylko z wątku renderingu... ale nie wiem...
Zrób tak jak sugeruje yarpen. Jest bardzo wiele operacji (nie tylko tych przychodzących z sieci) które wymagają bezpiecznej synchronizacji w jednym miejscu. Już samo przesuwanie obiektu/postaci, z której może czytać kilka wątków, wymaga aby pozycja była zmieniana raz w bezpiecznym miejscu w przeciwnym razie, albo będziesz pobierać pozycję niezainicjowaną poprawnie (np. tylko X jest nowy a Y, Z stare), albo zagrzebiesz się w sekcjach krytycznych i będziesz mieć pełno race conditions (obiekt A modyfikuje B, a obiekt B modyfikuje A).

Najlepiej zrobić kod, który w większości miejsc jest "read-only", a modyfikacje kolejkować, a potem obsługiwać w jednym bezpiecznym miejscu.

3
Trademark może trwać w nieskończoność. Nie ma limitu czasu.

4
DirectX / Odp: DirectX 11.1 tylko dla Windowsa 8
« dnia: Listopad 18, 2012, 00:22:09 »
Ale faktycznie, gdyby dali ten DirectX pod siódemkę, to gry pod ósemkę
szybciej zaczęłyby powstawać.
Jaki jest sens wspierania 7, żeby robić pod 8 ? Skoro robisz pod 7 to 8 już do niczego nie potrzebujesz.

5
Projekty zaawansowane / Odp: Draw the World
« dnia: Listopad 04, 2012, 19:03:33 »
Mam 2 drobne uwagi ;) :

1. W grę powinno się świetnie grać na tablecie, ale UI ma trochę "desktopowe". Ikonki po prawej nie mają podpisów. Jak wiadomo, na tablecie nie ma mouseover i tooltipów, więc podpis pod "123" oraz pod "123" :) by nie tylko wyjaśnił czym się różnią ale byłby bardziej casualowy.

2. Menu też jest "desktopowe". Znacznie fajniejsze i bardziej użyteczne jest menu które MS pokazał w Solitaire http://beta.images.theglobeandmail.com/740/incoming/article4651568.ece/ALTERNATES/w620/Slide+10+Solitaire.jpg czyli taki poziomy długi ekran ze wszystkimi opcjami. W szczególności takie menu powinno ładnie się prezentować gdy będzie pokazywać już rozwiązane zagadki oraz te które jeszcze zostały do rozwiązania. No i gdy gracz będzie chciał rozwiązać jakąś planszę, to zamiast wybierać "GRA" a potem przewijać się po planszach, będzie mógł nie mal od razu "przewijać się po planszach". Dodatkowo, dodam, że taki ekran w Solitaire ma możliwość zoom'owania i pokazania wszystkiego na jednym ekranie http://i.msdn.microsoft.com/dynimg/IC613634.png

Jak rozumiem, skoro to jest gra na W8, to będzie korzystać z jego dobrodziejstw i np. będzie możliwość wysłania zagadki znajomym za pomocą Share ? :)

FYI: te "japońskie krzyżówki" nazywają się (ang.) Nonogram lub (jap.) Hanjie.

6
Visual Studio / Odp: Jak w VC++ zmienić folder źródeł
« dnia: Listopad 04, 2012, 18:50:32 »
W VisualStudio 2012 dodano przycisk "Show All Files" (ikonka w pasku tuż nad plikami w solucji w Solution Explorer), które zamiast plików w Solucji, pokazuje pliki na dysku (tam gdzie jest .sln) oraz wszystkie podkatalogi.

Możesz wtedy prawym klawiszem wybrać na danym podkatalogu żeby tam dodał plik. W teorii możesz mieć opcję "Show All Files" cały czas włączoną i pracować na podkatalogach.

W Visual Studio 2010 też była opcja "Show all files" (w menu "Project") ale (teraz nie sprawdzę) wydaje mi się, że działała trochę inaczej.

7
Szkółka / Odp: Problem z mnożeniem macierzy
« dnia: Październik 18, 2012, 11:55:59 »
Jeżeli ci się wszystko kompiluje, to nie powinno być żadnych problemów. Chyba, że Matrix3x3 jest w osobnym projekcie, którego nie dołączyłeś do głównego .exe.

8
C# / Odp: .NET Remoting komunikacja serwer -> klient / klient->serwer
« dnia: Lipiec 29, 2012, 10:40:16 »
Nie bardzo rozumiem, na czym polega twój problem. Co to znaczy, że masz z góry narzucony Remoting ? Masz gotowe połączenie sieciowe serwera z klientami ? To wystarczy, że wyślesz im wszystkie potrzebne dane a potem w ten sam sposób karzesz im wykonać zadanie.

9
Szkółka / Odp: C#, C++
« dnia: Lipiec 28, 2012, 21:42:09 »
Ale "wyjaśniliście"... :)

dlaczego pod .NET nie potrzeba plików nagłówkowych a same dll;ki.
DLL'ki w .NET zawierają wszystkie informacje dotyczące kodu w tym DLL, czyli nazwy klas, nazwy funkcji, zmiennych itd. W ten sposób wczytując jeden plik, kompilator/interpreter mają pełną informację im potrzebną.

Natomiast jeżeli chodzi o samo porównanie C++ i .NET (i o czym tak mieszają wszyscy powyżej), to że .NET jest platformą/formatem plików i może być używane również w C++, a tobie zapewne chodziło o tzw. C++ Native czyli C++ nie używające formatu .NET.

10
Gry / Odp: Diablo 3
« dnia: Maj 06, 2012, 16:48:17 »
Sporo. Jeśli dobrze pamiętam, to X360 wyciąga milion trójkątów na klatkę, by dać 60 fps. Czyli z shooterem na konsoli nie zmieściłbyś się z tym.
Nie no, na papierze 60mln trójkątów, to PS2 wyciągało. (na papierze czyli takich których nie rysuje a jedynie przetwarza). X360 wyciąga do 500mln.

Na otwartych testach bliz nie popisał się (logowanie...) w GW2 wystąpiły podobne problemy jednakże w następnym dniu już wszystko działało normalnie ^^
GW2 raczej się nie chwali że miało 300tyś w peeku graczy.



11
Platformy / Odp: Playstation SDK do sciągnięcia openbeta-public-free.
« dnia: Kwiecień 24, 2012, 20:46:46 »
Jest zwykły dostęp do hardware 3D. Na softwarze, to by się zesrało i nie uciągnęło 2 trójkątów. Jedyne co może boleć, to np. brak kompresji tekstur. W C# można pisać w unsafe, ale raczej nie w Playstation Suite. Zresztą unsafe jest ci zupełnie po nic bo nie zaalokujesz pamięci void*. PSuite ma być multiplatformowy i bezpieczny, a nie żebyś wyjechał stringiem w system.

12
Dyskusje / Odp: Epic Games mówią o sobie indie | Co jest indie, a co nie
« dnia: Kwiecień 21, 2012, 12:38:26 »
http://www.igda.org/indies/ For purposes of this SIG, an "independent / indie" is defined as a game developer who owns and controls their intellectual property ("IP") (...) However, a company that wholly owns a game development studio as a subsidiary company, or has multiple game development studios as corporate divisions, is not regarded as independent

13
Windows / Odp: Windows 8 - powrót do własnych frameworków?
« dnia: Kwiecień 08, 2012, 23:40:11 »
Można przełączyć się na Desktop zwykłym "przyciskiem" http://www.youtube.com/watch?v=-VnsHmVs1UA . Różnica jest taka, że teraz to jest zwykła aplikacja. Pytanie tylko po co komu desktop ? Ja swój desktop oglądam tylko wtedy gdy startuję albo zamykam windows.

14
Językoznawstwo / Odp: Zrównoleglanie na komputery w Ethernecie
« dnia: Kwiecień 08, 2012, 01:41:29 »
W jakim środowisku masz Socket.Send/Socket.Read ? Zakładam że chodzi ci o .NET czyli Socket.Send/Socket.Receive, a to są funkcje blokujące czyli czekają aż wyśle/odbierze dane blokując wszystkie inne wątki.

To znaczy że praktycznie pierwszy wątek, który wejdzie w Send/Receive zablokuje wszystkie pozostałe wątki.

Użyj Send/Receive asynchronicznych (BeginSend/BeginReceive). Lub jeśli nie chcesz wchodzić w "zawiłości" obsługi sieci, to poszukaj o RPC w C# lub AMI (np. przy użyciu WPF).

Ja np. u siebie mam zrealizowane AMI tak, że wywołanie funkcji na innym kompie wygląda tak:
delegate void DoSomethingDelegate( Connection node, int data1, float data2 );

[NetImport]
DoSomethingDelegate DoSomething;
....
DoSomething( connectionToServer, 10, 5.0f);
a po stronie "odbiorcy"
[NetExport]
void DoSomething( Connection node, int data1, float data2 )
{

}

15
Językoznawstwo / Odp: [F#] Programowanie funkcyjne.
« dnia: Marzec 28, 2012, 21:14:06 »
LOL.
Podobnie z C++ i C#. W tym drugim masz narzucony paradygmat(OOP)
LOL.

Wskaż różnicę w paradygmacie między tymi dwoma źródłami:
C++
namespace Foo
{
void DoFoo();
};
C#
static class Foo
{
static void DoFoo();
};

Strony: [1] 2 3 4 5 ... 111