| Steering Behaviors For Autonomous Characters
14.05.2011, 03:36
This paper presents solutions for one requirement of autonomous characters in animation and games: the ability to navigate around their world in a life-like and improvisational manner. These steering behaviors are largely independent of the particulars of the characters means of locomotion. Combinations of steering behaviors can be used to achieve higher level goals (For example: get from here to there while avoiding obstacles, follow this corridor, join that group of characters...) This paper divides motion behavior into three levels. It will focus on the middle level of steering behaviors, briefly describe the lower level of locomotion, and touch lightly on the higher level of goal setting and strategy.
http://www.red3d.com/cwr/steer/
http://opensteer.sourceforge.net/
Алгоритм A* для новичков
13.05.2011, 19:00
Алгоритм A* (произносится как "А-звездочка"), возможно, немного трудноват для новичков. И хотя в сети существует множество материалов, обьясняющих A*, большинство из них написаны для людей, которые уже понимают основы. Эта же статья действительно написана для новичков.
Статья не пытается быть исчерпывающим материалом по данной теме. Вместо этого она описывает фундаментальные понятия и подготавливает вас к тому, чтобы прочитать все те материалы и понять о чем в них идет речь. Ссылки на некоторые из них прилагаются в конце статьи (под заголовком "Дальнейшее изучение").
Также эта статья не направлена на определенный язык программирования - вы сможете адаптировать ее к любому из них. Как вы, должно быть, и ожидали, я добавил ссылку на пример реализации в конце статьи. Архив примера содержит две версии: на C++ и на Blitz Basic. Он также содержит скомпилированную версию, если вы просто хотите увидеть A* в действии.
Но пора приступать к делу. Давайте начнем с самого начала...
http://www.policyalmanac.org/games/aStarTutorial.htm
http://www.policyalmanac.org/games/aStarTutorial_rus.htm
http://www.policyalmanac.org/games/twoTiered.htm
То, что вам никто не говорил о многозадачности в Windows
24.01.2011, 13:23
Автор: Роман Лут
В период с 1997 по 2001 работал в компании GSC Game World над 3D-экшеном Venom: Codename Outbreak в качестве программиста графического движка и дизайнера уровней. С 2002 работает в компании Deep Shadows ведущим программистом графического движка. Принимал непосредственное участие в работе над экшен-ролевым проектом Xenus: Boiling Point.
Многозадачность - это просто?
Когда я только начинал разрабатывать многопоточные приложения, мои мысли были просты и прямолинейны: нужно просто создать второй поток и выполнять в нем какую-либо работу. Потоки будут выполняться одновременно, все сложности на себя берет операционная система, мне только остается воспользоваться несколькими функциями WinAPI.
К сожалению, реально дела обстоят не так просто, и особенно когда это касается real-time приложений (которыми являются компьютерные игры). Чтобы это понять, мне пришлось пройти долгий путь от недоумения (почему все работает нет так, как должно?) к более-менее ясному представлению о том, как на самом деле реализована многозадачность в Windows.
В этой статье я готов поделиться добытой информацией, разоблачить некоторые распространенные заблуждения, наглядно показать изложенные принципы и, в тоже время, не претендуя на полную достоверность, услышать другие мнения.
Основная цель исследования фокусируется на возможности использования многопоточности в играх, и, в частности, в DirectX приложениях. Второй поток предполагается использовать для фоновой загрузки уровней с диска, но забирая не более 10% процессорного времени у основного потока (при запуске фоновых задач fps не должен значительно падать).
http://dtf.ru/articles/print.php?id=39888
Минимизация занимаемой памяти
30.09.2009, 01:14
Маленький трюк, который пригодится Вам для создания приложений, работающих в фоновом режиме. Таких, как планировщик задач, служб, серверов и т.п. То есть приложений, которые постоянно сидят себе тихонько в памяти, и чего-то там в фоне делают, не мешая пользователю заниматься своими делами.
Для таких приложений важным фактором является размер потребляемой памяти.
Фоновые приложения должны кушать минимум оперативной памяти и не нагружать процессор.
В принципе, данный приём можно применять в любых приложениях. Просто для активных интерфейсных приложений в этом нет смысла.
Но меньше слов, больше кода:
uses
Windows, SysUtils;
procedure TrimWorkingSet;
var
MainHandle: THandle;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
SetProcessWorkingSetSize(MainHandle, DWORD(-1), DWORD(-1));
CloseHandle(MainHandle);
end;
end; После вызова этой процедуры, приложение отпустит всю ненужную ему память.
Можете попробовать создать пустую форму с кнопкой и посмотреть, как изменится объём занимаемой памяти.
P.S. Сработает только на WinNT системах.
http://www.delphilab.ru/content/view/215/63/
20 ловушек переноса кода на 64-битную платформу (исходники)
21.09.2009, 21:09
Рассмотрены программные ошибки, проявляющие себя при переносе Си++ - кода с 32-битных платформ на 64-битные платформы. Приведены примеры некорректного кода и способы его исправления. Перечислены методики и средства анализа кода, позволяющие диагностировать обсуждаемые ошибки.
1. Отключенные предупреждения
2. Использование функций с переменным количеством аргументов
3. Магические константы
4. Хранение в double целочисленных значений
5. Операции сдвига
6. Упаковка указателей
7. Memsize типы в объединениях
8. Изменение типа массива
9. Виртуальные функции с аргументами типа memsize
10. Сериализация и обмен данными
11. Битовые поля
12. Адресная арифметика с указателями
13. Индексация массивов
14. Смешенное использование простых целочисленных типов и memsize типов
15. Неявные приведения типов при использовании функций
16. Перегруженные функции
17. Выравнивание данных
18. Исключения.
19. Использование устаревших функций и предопределенных констант.
20. Явные приведения типов
Диагностика ошибок
Юнит-тестирование
Просмотр кода
Встроенные средства компиляторов
Статические анализаторы
Заключение
Ресурсы
http://www.interface.ru/home.asp?artId=20062
Libevent
19.06.2009, 21:12
libevent — это кроссплатформенная библиотека для работы с сетью, предоставляющая механизм вызова callback-функций для в нескольких случаев:
* происходит событие на файловом дескрипторе;
* приложение получает UNIX-сигнал;
* по таймауту.
На данный момент библиотека поддерживает /dev/poll, kqueue(2), event ports, select(2), poll(2) and epoll(4).
http://monkey.org/~provos/libevent/
http://en.wikipedia.org/wiki/Libevent
http://wiki.rsdn.ru/libevent.ashx
Win32 OpenSSL
31.07.2008, 17:19
The Win32 OpenSSL Installation Project is dedicated to providing a simple installation of OpenSSL. It is easy to set up and easy to use through the simple, effective installer. No need to compile anything or jump through any hoops, just click a few times and it is installed, leaving you to doing real work. Download it today! Note that these are default builds of OpenSSL and subject to local and state laws. More information can be found in the legal agreement of the installation.
http://www.slproweb.com/products/Win32OpenSSL.html
Direct SQL - Delphi
29.07.2008, 15:40
Cross-platform (Windows+Linux) delphi/kylix native components for directly accesing mySQL servers (without using any externall dll's).
http://sourceforge.net/projects/directsql/
A keyed-Hash Message Authentication Code (HMAC or KHMAC)
20.07.2008, 00:45
In cryptography, a keyed-Hash Message Authentication Code (HMAC or KHMAC), is a type of message authentication code (MAC) calculated using a specific algorithm involving a cryptographic hash function in combination with a secret key. As with any MAC, it may be used to simultaneously verify both the data integrity and the authenticity of a message. Any iterative cryptographic hash function, such as MD5 or SHA-1, may be used in the calculation of an HMAC; the resulting MAC algorithm is termed HMAC-MD5 or HMAC-SHA-1 accordingly. The cryptographic strength of the HMAC depends upon the cryptographic strength of the underlying hash function, on the size and quality of the key and the size of the hash output length in bits.
An iterative hash function breaks up a message into blocks of a fixed size and iterates over them with a compression function. For example, MD5 and SHA-1 operate on 512-bit blocks. The size of the output of HMAC is the same as that of the underlying hash function (128 or 160 bits in the case of MD5 or SHA-1, respectively), although it can be truncated if desired. Truncating the hash image reduces the security of the MAC which is upper bound by the birthday attack.
The construction and analysis of HMACs was first published in 1996 by Mihir Bellare, Ran Canetti, and Hugo Krawczyk, who also wrote RFC 2104. FIPS PUB 198 generalizes and standardizes the use of HMACs. HMAC-SHA-1 and HMAC-MD5 are used within the IPsec and TLS protocols.
http://en.wikipedia.org/wiki/HMAC
Строковые типы в Delphi. Особенности реализации и использования.
27.05.2008, 21:00
В этой статье будут освещены следующие вопросы:
1. Какие строковые типы существуют в Delphi, и чем они отличаются друг от друга
2. Преобразование строк из одного типа в другой
3. Некоторые приемы использования строк типа AnsiString:
1. Функции для работы со строками о которых многие часто забывают или вовсе не знают
2. Передача строк в качестве параметров
3. Использование строк в записях
4. Запись в файл и чтение из файла
5. Использование строк в качестве параметров и результатов функций размещенных в DLL.
http://sources.ru/magazine/0804/delphistr.html
Synapse TCP/IP library
24.05.2008, 03:10
This project deals with network communication by means of blocking (synchronous) sockets or with limited non-blocking mode. This project not using asynchronous sockets! The Project contains simple low level non-visual objects for easiest programming without problems. (no required multithread synchronisation, no need for windows message processing,…) Great for command line utilities, visual projects, NT services,… You can find more after reading about and features.
Here you can found addition to Synapse project called SynaSer, too. This is library for blocking communication on serial ports. It is non-visual class as in Synapse, and programmer interface is very similar to Synapse.
http://www.ararat.cz/synapse/doku.php/start
LSP (Layered Service Provider) and winsock programming
19.05.2008, 12:40
Komodia.com is the leading market expert in the field of LSP (Layered Service Provider) and winsock programming.
Stop outsourcing your projects to the wrong people only to discover that the people your outsourced to aren't as proficient as they claimed, resulting in lost money and time?
Because we believe that before you spend your hard earned money subcontracting your projects to the "wrong" programmers or companies, we invite you to check out first hand, what you are paying for - We offer source code for LSP and open source winsock library to download and even use for free.
You can visit our:
- LSP (Layered Service Provider) guide
- Winsock tools section
- LSP/Winsock services section
Copyright © 2006 Komodia Inc. All rights reserved
http://www.komodia.com
Starcraft Warden
07.05.2008, 18:51
On this page, I'm going to give an overview of some rudimentary research I did on the Warden module for Starcraft. I have only looked at it in the context of Starcraft, and no other game client, so I make no guarantees.
At the current time, I can decrypt packages, and download/prepare modules, but I haven't yet looked at how to generate responses for packets. I've decided that I don't have time to do that, but I encourage others to pick up where I left off with that.
Anyway, here's the stuff I can help with (in some cases with code, some cases without):
- Crypto and Hashing
- Warden Packets
- Warden Modules
And here's some extra goodies
- Naming Conventions
- Miscellaneous useful 'nippits
- My notes
Here are the code samples:
- util.Buffer
- to be continued
http://www.skullsecurity.org/wiki/index.php/Starcraft_Warden
Delphi import unit for OpenSSL DLL
14.01.2008, 07:38
Delphi can use OpenSSL library invoking DLL.
OpenSSL toolkit is divided in two modules: libssl, implementing SSLv2/v3 and TLS for network communications and libcrypto, that implements cryptography functions.
To use SLv2/v3 and TLS network function with Delphi, you can use components from Indy project.
CSITA has developed a unit to import some function about X.509 certificate.
http://www.disi.unige.it/person/FerranteM/delphiopenssl/
Менеджер памяти Delphi
02.12.2007, 12:46
Многие стандартные типы данных, такие, как классы, интерфейсы, строки, динамические массивы, неявно работают с динамической памятью. Зачастую пользователь даже и не подозревает, сколько обращений к динамической памяти происходит в той или иной строчке кода. Размеры объектов в динамической памяти могут колебаться от нескольких байт (строки) до многих мегабайт (пользовательские вызовы функций GetMem и AllocMem, а также создание динамических массивов). Достаточно трудно представить себе, какое количество строк и объектов может находиться в памяти во время работы программы. Естественно, что в такой ситуации требуется наличие быстрого и экономичного менеджера памяти, какой и предоставляется Delphi. Приведу цитату Евгения Рошаля, который в описании новых возможностей своей программы Far (версия 1.70 beta 2, сборка 321 от 16.12.2000) писал: «Для компиляции FAR Manager использовался Borland C/C++ 5.02. MSVC 6 SP4 не оправдал ожиданий (FAR 1.70 beta 1) и добавил тормозов (работа с выделением памяти для мелких объектов)». Известно, что менеджеры памяти в Borland C/C++, Borland C++ Builder и Delphi имеют общие алгоритмы работы.
http://rsdn.ru/article/Delphi/memmanager.xml
Formulas and Game Mechanics
02.12.2007, 10:24
World of Warcraft Gameplay Guides
http://www.wowwiki.com/Formulas
Пример сетевого кода с gamedev.ru
02.12.2007, 09:38
Примеры построены с использованием открытого исходного кода Quake2. (В качестве отступления от темы, хочу сказать личное мнение об этом коде - код написан достаточно "прямо" и оптимально, безглючно и вообще, легко читается). Было бы также неплохо, если Вы будете периодически заглядывать в документацию к winsock. Полезно сначала прочитать теорию, а потом рассмотреть это на практике.
http://www.gamedev.ru/coding/20530.shtml
|