Воскресенье, 24 Ноября 2024, 01:40

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
AkyltistДата: Вторник, 27 Октября 2009, 16:31 | Сообщение # 541 | Тема: Half-Life City14
заслуженный участник
Сейчас нет на сайте
Quote
ZombieCrew решил на сайте больше не появляться, взе из-за того, как он сказал, что ему начисляют глупые баны.
Проект мине доделывать придется.

ZombieCrew получил бан на 1 день, да скорее он даже не справедливый чем справедливый, просто его просьба об активации была получена в тот момент когда материал уже был активирован, и там уже имелись комментарии. Возможно это произошло из-за того что ЛС просто очень долго шло,так что возможно ZombieCrew совершенно не виноват в случившемся.

Я прошу у него прощения за эту не справедливость и прошу меня извинить, уровень замечаний будет снижен, и в качестве примирения я могу только повысить его репутацию. Уважаемую администрацию проще не рассматривать это как накрутку, это мои личные извинения которые хоть как то выражены.

Quote
нет, нефиг спамить, активируют сами.
А тебе я б дал +20 за обсуждение действий администрации

Спасибо за поддержку друг мой сердечный, но я сам считаю, что я в данном случае не прав, по этому ни каких мер принимать не стоит.

Удачи с проектом. Seregando передайте пожалуйста мои пожелания ZombieCrew так как я с ним не посредственной связи не имею.

AkyltistДата: Понедельник, 26 Октября 2009, 16:31 | Сообщение # 542 | Тема: Денвер
заслуженный участник
Сейчас нет на сайте
Денвер представляет собой инсталятор который устанавливает на Ваш компьютер php, MySql, Perl, Python и некоторые другие программы, включая и документацию, на Ваш компьютер и предназначен для тестирования скриптов на локалхосте, благодаря специфической конфигурации производимой этим инсталятором.
AkyltistДата: Понедельник, 26 Октября 2009, 16:02 | Сообщение # 543 | Тема: Вы заметили что сейчас мода делать движки?
заслуженный участник
Сейчас нет на сайте
Шикарная тема однако.

Ну если кому интересно мое мнение, то я сугубо скажу, что я не знаю зачем я пишу свой двиг))) ну не знаю я, я мог бы юзать огру + ODE или ньютон. Или апокалипсис, да много чего. Я так полагаю, что написание двига для меня это не получение бесценного опыта, и даже мне не важен настолько процес самосовершенствования. Да, для высоко организованного разума даже смерть очередное приключение, но и это не важно. Наверно я пишу двиг потому, что это некий культ, темный секретный ритуал, которым пытаются овладеть очень малое количество душ, а достигает результатов еще меньше. Это как секретная технология, свой андеграунд, ты постигаешь тайны от которых иногда приходишь в ужас, замешательство, ненависть, кидаешь пару сотен проклятий,но в итоге,когда твое творение почти готово, и ты понимаешь что ты влюбился в свое творение. Вот она та чистая любовь. Любовь которой принадлежит тебе, она обволакивает твое сердце, в ней есть частица твоей души, и разум ей не противится. И тут ты понимаешь что как только ты завершишь сие творение, пока оно будет существовать, часть твоей души не умрет, и переживет тебя по эту сторону зеркала миров. И возможно если ты когда то захочешь вернуться в этот мир, и эта частичка души будет существовать, то ты сможешь это сделать. Ну а если так, то я зх для чего мне двиг, для души наверное.

AkyltistДата: Понедельник, 26 Октября 2009, 02:41 | Сообщение # 544 | Тема: Как создать свой 3d движок?
заслуженный участник
Сейчас нет на сайте
3D Rad


http://gcup.ru/forum/46-1509-1
http://www.3drad.com/how-to-make-a-3d-game.htm
Там в самом низу картинки это справка по компонентам, но это на английском.
Как + радуга через неделю официально на русском появится.

Racer



http://www.racer.nl/ - официальная дока по рейсеру (англ)
Создание карты в блендере для Рейсера
Русскоязычное сообщество, но там не густо

Ну а также gcup@conference.jabber.ru настройки тут.

Не забываем изучать правила ресурса. Если вы зашли по делам, то просьба сразу говорить ник на GCUP и тему. Основной онлайн в чате с 14:00 по Мск до 22:00 по Мск

AkyltistДата: Воскресенье, 25 Октября 2009, 21:21 | Сообщение # 545 | Тема: Как создать свой 3d движок?
заслуженный участник
Сейчас нет на сайте
Quote
Visual C++ и просто C++

Ох молодой человек, даже не знаю как Вам сказать, так чтобы не шокировать... Ну да ладно не буду я смеяться и издеваться, со всеми по незнанию бывает.

Вы запутались немножко: MS Visual Studio С++, Это среда разработки (специальная программа для разработки) обозванная Вами уважаемый как Visual C++. А с++ всего один, ну за исключением некоторых фишек для компиляторов.

Я даже не стану Вас отговаривать его не учить и не пытаться в нем разобраться, это Ваше право, если у Вас душа лежит к математике и логике, и появится способность выражать это в коде то за месяца три можно достичь хороших результатов.

Для создания гонок есть специальные конструкторы, как Рейсер и 3Д Рад. Оба они обладают достаточной функциональность для создания гонок качества НФС. Уровень графики будет зависеть от Ваших способностей.

Удачи!

AkyltistДата: Суббота, 24 Октября 2009, 01:02 | Сообщение # 546 | Тема: Требуется разрешение на использование Джи - Си -Апа
заслуженный участник
Сейчас нет на сайте
Благодарю!
Щас разбираюсь с компиляцией сижу, как соберу стабильный билд, так сразу выложу в соответствующей теме.

Администрации еще раз огромное человеческое спасибо!

AkyltistДата: Пятница, 23 Октября 2009, 22:49 | Сообщение # 547 | Тема: Требуется разрешение на использование Джи - Си -Апа
заслуженный участник
Сейчас нет на сайте

Уважаемая Администрация!



По личной инициативе я связался с разработчиками игрового конструктора 3DRad, Фернандо Занини, с разрешением создавать портированные на русский язык версии этого конструктора. Теперь прошу Вас разрешить указание как портала инициатора переводов ЖдиСиАп пользователя Akyltist. Это будет представлять собой вложенную в справке информацию представляющую собой текст:

"Лицензированный перевод на русский язык совершил Akyltist специально для http://gcup.ru"

Объяснением моей просьбы является то, что это мое основное место препровождение в глобальной сети как игродела, ну не считая справок и документаций. Ну и лично мне будет приятно. Разрешение на перевод и указание группы авторов перевода и размещение ссылки на их сайт имеется.

Прошу снизойти до моих личных симпатий к данному порталу и позволить использование ссылки на портал.



Благодарю за внимание!
AkyltistДата: Пятница, 23 Октября 2009, 22:06 | Сообщение # 548 | Тема: Что лучше???
заслуженный участник
Сейчас нет на сайте
Quote
Меня, как потребителя, больше интересовал бы одинокий exe-шник: в файлах не путаешься.
Ну, это если мнение потребителей вас интересует, конечно.

Можно при инсталяции лить dll в System32, И проект сам будет их оттуда подгружать. В плане работоспособности зависит от того как линковать эти dll, статически или динамически, если их линковать при запуске программы, то они подгружаются еще до Энтри поинт самого exe, то есть перед инициализацией самой программы. На счет работоспособности отвечу легко и просто, dll - это обычный com объект, на них построена винда, на них заложен DX и OpenGL - инициализация com объекта занимает пару сотен тактов, так что на быстродействии это не как не скажется, по крайней мере для глаза точно)).

Как заметил уважаемый (лично мной) nilrem, в плане фпс Вы ничего не заметите, ну а на счет скорости работы, она основанна только на инициализации, и все функции которые локализированны в компиляторе основаны на WinAPI функциях которые инициализируются компилятором по умолчанию и Вы этого не видите, однако взглянув в IDA или Ольге (OllyDBG) да просто в таблицу импорта EXE вы увидите там либы, которые Вы можете присягнуть самому черту, Вы никогда не подключали.

Quote

Меньше шансов на взлом де компилятора и больше придётся попотеть!

Тут уже зависит от уровня знаний кодокопателя, можно и в либу сделать антиотладку не хуже чем в ехе)) не говоря о полиморфности и прочих приблудах, как тарить Точку входа, хучить кольцо, отлавливать VM и тд.

Ну и собственно по сабжу.

Quote
А как на счет среднего по размеру exe и среднего количества dll ?

Золотые слова. (ИМХО). Делайте оптимально и как лучше и удобнее Вам, а от обычного пользователя лишнее можно спрятать.
AkyltistДата: Пятница, 23 Октября 2009, 21:34 | Сообщение # 549 | Тема: Нужна библиотека для работы с сетью(сетевой движок)
заслуженный участник
Сейчас нет на сайте
(сетевой движок)
Quote
Нужна либа для разработки сети...исп. Винсокс...

Винсокс это итак уже либа, ее и надо юзать, а не надстройки под нее.

WinSock или Windows socket - это интерфейс программного программирования (API) созданный для реализации приложений в сети на основе протокола TCP/IP. То есть это просто группа функций !!!!

Для работы используется WSOCK32.DLL. Практически это интерфейс к протоколу TCP/IP. При взаимодействии клиент - сервер в сети каждого участника взаимодействия можно рассматривать как конечную точку. Сокет это вроде как и есть эта конечная точка. В приложении Вы определяете сокет. И хоть программирование сокетов в UNIX и Windows похоже, мы с Вами будем рассматривать именно Windows socket. Незнаю интересно это или нет, но Windows socket разрабатывался на основе интерфейса Беркли для UNIX, но к ним добавлены функции поддержки событий Windows.

Есть две версии WinSock
* WinSock 1.1 - поддержка только TCP/IP
* WinSock 2.0 - Поддерка дополнительного программного обеспечения

Спецификация WinSock разделяет функции на три типа:

1. Функции Беркли
2. Информационные функции (получение информации о наименовании доменов, службах, протоколах Internet)
3. Расширения Windows для функций Беркли Все функции могут быть блокирующие и неблокирующие.

Обычно блокирующие это функции Беркли. То есть при работе такой функции нельзя выполнять другие функции WinSock. Давайте рассмотрим как производится подключение к серверу. Сначала программа подключается к адресу IP с созданием сокета. Программа будет ждать подключения. Для подключения программа клиент тоже создает сокет и пытается подключиться к сокету сервера. Но сервер не спит !!! Только он увидит попытку подключения он создаст новый сокет. И этот новый сокет будет использоваться для взаимодействия с клиентом. А тот, к которому была попытка подключения будет ждать следующего. На этой основе производится взаимодействие сервера и многими программами.

Сам сокет может быть создан на основе:
1. TCP (transport control protocol) - надежное соединение
2. UDP (user datagram protocol) - ненадежное соединения



Функции для winsocket
Функция Описание
accept Принимает входящую попытку соединения на сокете.
AcceptEx Принимает новое соединение, возвращает локальный и удаленный адреса, а также принимает первый блок данных, посланный клиентским приложением.
bind Связывает локальный адрес с сокетом.
closesocket Закрывает существующий сокет
connect Устанавливает соединение с указанным сокетом
ConnectEx Устанавливает соединение с указанным сокетом, и (необязательно) посылает данные, как только соединение установлено
DisconnectEx Закрывает соединение на сокете, и позволяет снова использовать дескриптор этого сокета.
freeaddrinfo Освобождает информацию об адресе, которая была получена динамически при помощи функции getaddrinfo.
gai_strerror Помогает сформировать сообщения об ошибках из кодов ошибок типа EAI_*, возвращенных функцией getaddrinfo.
GetAcceptExSockaddrs Анализирует данные, полученные функцией AcceptEx.
GetAddressByName Запрашивает пространство имен или устанавливает пространства имен заданные по умолчанию для получения информации о сетевом адресе указанного сетевого сервиса. Этот процесс известен как Разрешение Имен Сервисов (Service Name Resolution).
getaddrinfo Обеспечивает протоколо-независимую трансляцию имени хоста в его адрес.
gethostbyaddr Получает информацию о хосте по сетевому адресу.
gethostbyname Получает из базы данных хостов информацию, соответствующую имени хоста.
gethostname Получает стандартное имя хоста для локального компьютера
getnameinfo Обеспечивает разрешение имени из адреса в имя хоста
getpeername Получает имя одноуровнего (peer) узла сети, с которым соединен сокет
getprotobyname Получает информацию о протоколе по его имени.
getprotobynumber Получает информацию о протоколе по его номеру
getservbyname Получает информацию о сервисе по имени сервиса и протоколу
getservbyport Получает информацию о сервисе по номеру порта и протоколу
getsockname Получает локальное имя для сокета.
getsockopt Получает опции сокета.
htonl Преобразует порядок байтов u_long из формата хоста в сетевой формат TCP/IP (формат big-endian)
htons Преобразует порядок байтов u_short из формата хоста в сетевой формат TCP/IP (формат big-endian).
inet_addrv Преобразует строку, содержащую десятично-точечный адрес протокола Internet (IPv4) в надлежащий адрес для структуры in_addr.
inet_ntoa Преобразует адрес Internet (IPv4) из сетевого формата в строку, содержащую стандартный десятично-точечный адрес
ioctlsocket Управляет режимом ввода-вывода сокета
listen Переводит сокет в состояние ожидания входящих соединений
ntohl Преобразует порядок байтов u_long из сетевого формата TCP/IP в формат хоста (формат little-endian на процессорах Intel).
ntohs Преобразует порядок байтов u_short из сетевого формата TCP/IP в формат хоста (формат little-endian на процессорах Intel).
recv Получает данные от присоединенного или связанного сокета
recvfrom Получает датаграмму и сохраняет адрес источника
select Определяет статус одного или нескольких сокетов, ожидая в случае необходимости исполнения синхронного ввода-вывода.
send Посылает данные на соединенный сокет
sendto Посылает данные определенному адресату
setsockopt Устанавливает опции сокета.
shutdown Запрещает прием или передачу на сокете
socket Создает сокет и связывает его с определенным сервисом
TransmitFile Передает данные файла через соединенный сокет.
TransmitPackets Передает данные из памяти или данные файла через соединенный сокет
WSAAccept Принимает соединение, основываясь на возвращаемом значении функции условия, обеспечивает качество обслуживания (QoS) спецификаций процесса и разрешает передачу данных соединения.
WSAAddressToString Преобразует все компоненты структуры SOCKADDR в понятное для человека строковое представление адреса.
WSAAsyncGetHostByAddr Асинхронно получает информацию о хосте по его адресу
WSAAsyncGetHostByName Асинхронно получает информацию о хосте по его имени
WSAAsyncGetProtoByName Асинхронно получает информацию о протоколе по его имени
WSAAsyncGetProtoByNumber Асинхронно получает информацию о протоколе по его номеру
WSAAsyncGetServByName Асинхронно получает информацию о сервисе по его имени и номеру порта.
WSAAsyncGetServByPort Асинхронно получает информацию о сервисе по номеру порта и протоколу.
WSAAsyncSelect Назначает сообщение, которое будет посылаться оконной процедуре в том случае, когда на сокете произойдет какое-либо событие.
WSACancelAsyncRequest Отменяет незавершенную асинхронную операцию
WSACleanup Завершает использование Ws2_32.dll.
WSACloseEvent Закрывает открытый дескриптор объекта события
WSAConnect Устанавливает соединение с сокетом другого приложения, обменивается данными соединения и определяет необходимое качество обслуживания (QoS), основываясь на указанной структуре FLOWSPEC
WSACreateEvent Создает новый событийный объект
WSADuplicateSocket Возвращает структуру, которая может использоваться для создания нового дескриптора общедоступного сокета (сокет может использоваться несколькими процессами).
WSAEnumNameSpaceProviders Возвращает информацию о доступных пространствах имен
WSAEnumNetworkEvents Обнаруживает сетевые события для обозначенного сокета, очищает внутренние записи сетевых событий и сбрасывает событийные объекты (необязательно).
WSAEnumProtocols Получает информацию о доступных транспортных протоколах
WSAEventSelect Определяет событийный объект, который будет связан с указанным набором FD_XXX сетевых событий.
WSAGetLastError Возвращает статус ошибки для последней операции, которая завершилась неудачно.
WSAGetOverlappedResult Получает результаты перекрытой (совместной) операции на указанном сокете.
WSAGetQOSByName Инициализирует структуру QOS, основываясь на названном шаблоне, или предоставляет буфер для получения доступных имен шаблонов.
WSAGetServiceClassInfo Получает информацию о классе (схему), имеющую отношение к указанному классу сервиса, от заданного поставщика пространства имен (name space provider).
WSAGetServiceClassNameByClassId Получает название сервиса, связанного с указанным типом.
WSAHtonl Преобразует порядок байтов u_long из формата хоста в сетевой формат
WSAHtons Преобразует порядок байтов u_short из формата хоста в сетевой формат
WSAInstallServiceClass Регистрирует схему класса сервиса в пространстве имен.
WSAIoctl Управляет режимом сокета.
WSAJoinLeaf Присоединяется к узлу многоточечной сессии, обменивается данными соединения и определяет необходимое качество обслуживания (QoS), основываясь на указанных структурах.
WSALookupServiceBegin Инициализирует клиентский запрос, основываясь на критериях, содержащихся в структуре WSAQUERYSET.
WSALookupServiceEnd Освобождает дескриптор, использовавшийся предыдущими вызовами WSALookupServiceBegin и WSALookupServiceNext.
WSALookupServiceNext Получает информацию о требуемом сервисе.
WSANSPIoctl Разработан для создания запросов к зарегистрированному пространству имен, управляющих вводом-выводом.
WSANtohl Преобразует порядок байтов u_long из сетевого формата в формата хоста.
WSANtohs Преобразует порядок байтов u_short из сетевого формата в формата хоста.
WSAProviderConfigChange Уведомляет приложение о смене конфигурации поставщика.
WSARecv Получает данные от соединенного сокета.
WSARecvDisconnect Завершает прием на сокете и получает данные разъединения, если сокет является ориентированным на соединение
WSARecvEx Получает данные от соединенного сокета.
WSARecvFrom Получает датаграмму и сохраняет адрес источника.
WSARecvMsg Получает данные и дополнительную управляющую информацию от соединенных и несоединенных сокетов.
WSARemoveServiceClass Удаляет схему класса сервиса из системного реестра.
WSAResetEvent Сбрасывает состояние указанного событийного объекта в несигнальное.
WSASend Посылает данные на соединенный сокет.
WSASendDisconnect Инициализирует завершение соединения на сокете и посылает данные разъединения.
WSASendTo Посылает данные определенному адресату, используя перекрываемый ввод-вывод где это возможно.
WSASetEvent Устанавливает состояние указанного событийного объекта в сигнальное
WSASetLastError Устанавливает код ошибки.
WSASetService Регистрирует или удаляет из системного реестра экземпляр сервиса в пределах одного или нескольких пространств имен
WSASocket Создает сокет, связанный с определенным поставщиком транспортных услуг (transport-service provider).
WSAStartup Инициализирует использование Ws2_32.dll процессом.
WSAStringToAddress Преобразует числовую строку в структуру SOCKADDR.
WSAWaitForMultipleEvents Возвращает значение в том случае, когда один или все указанные событийные объекты находятся в сигнальном состоянии, или когда истекает интервал ожидания (тайм-аут).
http://club.shelek.ru/viewart.php?id=35
http://www.firststeps.ru/mfc/net/socket/r.php?1
Самоучитель игры на WinSock

Со знанием Си, Asm, Delphi и др ЯП реализация сокетов милое дело. Есть проблемы с ними конечно как выход за NAT, Отлов ошибок и событий, их блокирование. Потоковая обработка. Но ни одна надстройка не решает этих моментов ибо незачем, так как сами сокеты уже это содаржат. Единственные надстройками над сокетами которые я по своему личному мнению приветствую - это реализация протоколов.

AkyltistДата: Понедельник, 19 Октября 2009, 19:24 | Сообщение # 550 | Тема: Играем в желания
заслуженный участник
Сейчас нет на сайте
Хочу винни пуха в женском платье
Прикрепления: 2686500.jpg (12.6 Kb)
AkyltistДата: Понедельник, 19 Октября 2009, 10:49 | Сообщение # 551 | Тема: Играем в желания
заслуженный участник
Сейчас нет на сайте

Хочу симпатичную эмочку...
AkyltistДата: Суббота, 26 Сентября 2009, 10:57 | Сообщение # 552 | Тема: Правила оформления тем в разделе " Проекты в разработке"
заслуженный участник
Сейчас нет на сайте


Темы, которые будут не подобающе оформлены, будут взяты на заметку, а их владельцам сделаны замечания, в виде устного предупреждения или 20% карточки. Также при создании тем по данным правилам Помните: Ни кто не отменял главные правила сайта и форума, которые обязательны к соблюдению, а также правовые и этические нормы. Удачи Вам во всех начинаниях!


ОБЯЗАТЕЛЬНОЕ УСЛОВИЕ РАЗДЕЛА

Описание игры обязательно должно сопровождаться минимум 3 скриншотами игрового процесса, и/или видеороликом из игры.


Скетчи, модели, скрины меню и иные подобные изображения таковыми не являются. Только скриншоты геймплея. Видео также должно явно давать понять, что проект действительно находится в разработке.
Если таковых у вас нет, значит вам дорога в раздел "Идеи для реализации"

За несоблюдение этого условия минимальное наказание - минус к репутации.

Добавлено 28.07.2010



1. Правильный заголовок темы.

Заголовок темы должен содержать в себе как минимум название вашего проекта, для придания уникальности Вашей темы. Также можно делать приписку в виде [3D] или [2D] или [2.5D] в самом заголовке на первой позиции или таким же образом указывать жанр, но на последней.

Неправильно:
  • Мой новый проект, присоединяйтесь!
  • Давайте творить уникальное вместе!

    Правильно:
  • [3D] - SharinganStory - [FPS]
  • [2D] - Дульсинея в Африке
  • SharinganStory
  • Дульсинея в Африке - [Логическая]


    2. Что писать в первый топик темы.

    В первое сообщение нужно вписать информацию, полностью раскрывающую суть вашего проекта. Если не можете явно изложить суть проекта то придерживайтесь просто принципиальной схемки изложенной ниже. Помните, это всего лишь схема, часть некоторых пунктов при создании Вы можете опустить, часть добавить. А можете создать тему самостоятельно, если Вы в силах нормально это сделать, и серьезно к этому подойти.

    (в скобках для примера показаны некоторые возможные варианты)

    Жанр игры: (RPG, FPS, TPS, TDS, Пошаговая стратегия, Лётный симулятор, Аркадная гонка, логическая и т.д.)
    На каком движке/конструкторе: (Движок, Игровой движок, Графический движок, Физический движок, Конструктор игр и т.д.)
    В каком пространстве: (2D, 3D, 2D+3D)
    Какой вид в игре: (сверху, от первого лица, от третьего лица, сбоку и т.д.)
    Какие есть похожие игры: (WOW, L2, R2, GAT 1-2, GTA3, Heroes, NFS, WarCraft, Gothic 1-2, TES, Onimusha, Dune 2 и т.д.)
    Какой Язык Пр. используется в игре: (C++, Basic, Delphi, Java, LUA, GML, Phyton, PHP и т.д.)
    Для какой платформы: (ОС, компьютера, консоли, ,браузерка)? (Windows, Linux, Mac OSX, Web, PSP, PS3, X-Box 360, PSX, NDS, GBA и т.д.)
    Предоставление исходного кода игры: (Open Source, За деньги, Не требуется, Без разницы)
    API: (Direct3D, OpenGL, Pixomatic)
    Какой тип лицензии распространения: (LGPL, GNU GPL, Freeware и т.д.) или (Комерческая - Не комерческая)
    Сроки разработки: когда работа началась и когда планируется окончание.
    Состав имеющейся команды:
    Координатор, Flash-программист, Flash-дизайнер, Флеш-дизайнер, Banner maker, Flash-аниматор, HTML-верстальщик, HTML-кодировщик, XSL-верстальщик, 2D дизайнер, 3D дизайнер, 2D/3D дизайнер, WAP-верстальщик, Гейм дизайнер, Моделер, Аниматор, Текстурщик, Визуализатор, Web-дизайнер, Web-мастер, Веб-дизайнер, Веб-разработчик, Администратор сайта, Модератор, Контент-менеджер, Технический писатель, Веб-программист, PHP-программист, Web-программист, NET программист, Директор по IT, Руководитель IT отдела, Начальник ИТ отдела, Руководитель интернет-проекта, Менеджер интернет-проекта, ИТ-менеджер, IT-специалист, Специалист ИТ-отдела, Менеджер IT-проекта, Программист, Инженер-программист, Разработчик ПО, Программист разработчик, Системный администратор, Сетевой администратор, Администратор БД, Специалист по техподдержке, Сервис-инженер, Тестер, IT-аналитик, Системный аналитик Инженер по качеству ПО, Менеджер по продаже ПО. и тд. и тп.


    3. Сюжет/Анонс:
    Если Вы Создаете игру, то эта часть обязательна. К ее оформлению Вы можете подойти творчески и написать маленькую предысторию, а можете перечислить все ключевые моменты, однако не увлекайтесь не теряйте последовательность изложения. После написания обязательно перепрочитайте, поймите не все другие люди телепаты, и если Ваш мозг воспринимает это как последовательные мысли и изложение, то для другого это может быть не понятно, так как Вы не раскрыли всех истин, а ключевые моменты раскрывать необходимо.


    4. Кто требуется в команду: (Необходимо перечислить список доступных вакансий, и желательно указать фронт работы)
    Координатор, Flash-программист, Flash-дизайнер, Флеш-дизайнер, Banner maker, Flash-аниматор, HTML-верстальщик, HTML-кодировщик, XSL-верстальщик, 2D дизайнер, 3D дизайнер, 2D/3D дизайнер, WAP-верстальщик, Гейм дизайнер, Моделер, Аниматор, Текстурщик, Визуализатор, Web-дизайнер, Web-мастер, Веб-дизайнер, Веб-разработчик, Администратор сайта, Модератор, Контент-менеджер, Технический писатель, Веб-программист, PHP-программист, Web-программист, NET программист, Директор по IT, Руководитель IT отдела, Начальник ИТ отдела, Руководитель интернет-проекта, Менеджер интернет-проекта, ИТ-менеджер, IT-специалист, Специалист ИТ-отдела, Менеджер IT-проекта, Программист, Инженер-программист, Разработчик ПО, Программист разработчик, Системный администратор, Сетевой администратор, Администратор БД, Специалист по техподдержке, Сервис-инженер, Тестер, IT-аналитик, Системный аналитик Инженер по качеству ПО, Менеджер по продаже ПО. и тд. и тп.


    5. Модераторам
    Данные правила и советы могут изменяться без предупреждения со стороны администрации или модераторов форума, однако не знание изменений не станет оправданием от устного замечания. Устное замечание на тему накладывается администраторами/модераторами на 24 часа, по истечении которых, если автор не соизволил переоформить тему, его награждают 20% замечание, а тема закрывается и уходит в небытие. Для Модераторов сделавших замечание желательно (но не обязательно) отправлять ЛС нарушителю с указанием темы где это произошло. Помните, что есть опция автоматического оповещения!.
  • AkyltistДата: Четверг, 24 Сентября 2009, 19:57 | Сообщение # 553 | Тема: Юмор игроделов!
    заслуженный участник
    Сейчас нет на сайте
    вместо нее надпись visual studio, правда как то она майонезом замазалась
    AkyltistДата: Четверг, 24 Сентября 2009, 19:33 | Сообщение # 554 | Тема: Юмор игроделов!
    заслуженный участник
    Сейчас нет на сайте
    Мне надоела Visual Studuo и я ее съел!
    http://akyltist.ucoz.com/DSC00091.JPG
    AkyltistДата: Среда, 23 Сентября 2009, 21:26 | Сообщение # 555 | Тема: Куча вопросов по 3d rad
    заслуженный участник
    Сейчас нет на сайте
    Neia, честно говоря пока не до радуги, это лично мне я имею ввиду, щас переезжаю на новую квартиру, а там еще и инета пока нету((( без сети неделю сидеть придется. Но могу сообщить новости. Я написал письмо разработчикам Радуге о разрешении кустарно перевести его на русский язык. Я думаю они не откажут, так что вполне возможно что радуга станет доступна на русском языке с официального разрешения.

    Так же советую посмотреть тут на ДжиСиАпе в разделе утилиты, были оптимизаторы.

    AkyltistДата: Вторник, 22 Сентября 2009, 08:03 | Сообщение # 556 | Тема: Тестируем игры на нетбуке Acer Aspire One 531
    заслуженный участник
    Сейчас нет на сайте
    Quote
    , иначе FPS выше 15 не поднимится;

    а при чем тут 2 гига оперативы, если шлейф нагружен на полную у видио карты - то оператива не спасет. HoMM IV идут - на 32 Мб видиокарте и 128 Мб оперативы с выдачей 53-55 Fps на Атлоне 2.0 , так что это ограничение шины, а как основа для видиокарты не так важен буфер, как важна скорость расчета, чипы в современных видиокартах считаю в несколько раз быстрее процессоров. У Нвидии есть технологи называется Cuda. Технология NVIDIA CUDA - это фундаментально новая архитектура вычислений на GPU, предназначенная для решения комплекса вычислительных задач потребителей, бизнеса и технической индустрии. Технология CUDA (compute unified device architecture - вычисления на унифицированной аппаратной архитектуре) предоставляет приложениям, активно работающим с данными, доступ к потрясающим процессинговым мощностям графических процессоров NVIDIA через революционную вычислительную архитектуру, связанную с новыми возможностями.

    Графические процессоры NVIDIA с технологией CUDA имеют параллельные кэши данных, которых сохраняют часто используемую информацию прямо в GPU. Хранение информации в GPU позволяет исполнять потоки, использующие общую информацию, во много раз быстрее, чем если бы она запрашивалась из системной памяти. Эта прогрессивная технология даёт возможность пользователям решать вычислительные задачи в режиме реального времени. Так что доводы про 2 G оперативной памяти не сочтите за наглость но беспочвенны, FPS от этого не подымится, так как Шина уже нагруженна на максимум.

    AkyltistДата: Понедельник, 21 Сентября 2009, 20:45 | Сообщение # 557 | Тема: РАДИАЦИЯ
    заслуженный участник
    Сейчас нет на сайте
    скачал демо, все мерцает, срочно меняйте двиг. Это не дело. Иногда рабочий стол аж просвечивается.
    Найдите что нибудь получше.
    AkyltistДата: Понедельник, 21 Сентября 2009, 17:16 | Сообщение # 558 | Тема: Куча вопросов по 3d rad
    заслуженный участник
    Сейчас нет на сайте
    Quote
    Хотел в качестве земли использовать высокополигональную модель города

    он страдает таким недостатком, попробуйте снизить количество полигонов спец утилитами, если не поможет то придется город облегчать.
    AkyltistДата: Понедельник, 21 Сентября 2009, 15:42 | Сообщение # 559 | Тема: Onigeine
    заслуженный участник
    Сейчас нет на сайте
    poseparameter самого объекта или костей? скинь код где ты с ним работаешь, так быстрее дойдет что тебе точно нужно.
    AkyltistДата: Понедельник, 21 Сентября 2009, 15:18 | Сообщение # 560 | Тема: Onigeine
    заслуженный участник
    Сейчас нет на сайте
    Для HalfLife2 используют тот-же формат что и для первой (за исключением весов для вершин)

    Если тебе нужно SMD получать их MDL и далее с ними работать, то зачем тащить mdl, конверти их на стадии разработки, декомпилер mdl > smd есть по ссылке выше, если нужен то сделаем чтобы со второй халфы декомпилил в smd. Хотя и тот что выше должен подойти для этих целей. А уже с полученным смд работай сам. Если как промежуточный то просто лоди SMD пример ниже и работай как хочешь.

    Пример кода по загрузки *.SMD

    Code
    typedef float vec3f[3];
    typedef float vec2f[2];
    typedef unsigned short word;
    #define Dword unsigned long
    typedef Dword vec3l[3];

    class Tmesh{
       public:

        Dword mv;  // количество вершин (Vertex)
         vec3f *v;    // сами вершины
         vec2f *t;     // текстурные координаты
         byte *mbi;  // количество костей на вершину
         int **bi;      // индексы костией привязанных к вершине
         float **sbi; // веса костей

        Dword mf;   // количестко треугольников (Faces)
         vec3l *f;     // массив индексов треугольников
         int *ti;        // индекс текстуры треугольника

        byte mb;           // количество костей во всей модели
         vec3f *bv,*ba; // bv-положение кости ba-ориетнация кости
         int *p;              // индекс родителя кости

        word mtx;     // количество текстур
         int *tnl,*txi; // tnl-длинна имени текстуры txi-индекс текстуры в видео памяти (glGenTex(1,&txi[i]))
         char **txn;  // имя текстуры
       ....
    };

    typedef struct{
       word max_tkf,max_rkf; // количество фреймов поворотов и смещений
       vec3f *rot,*pos;           // поворот и смещение   
       float *Ttime,*Rtime;     // номер фрейма
       void init(){
        max_tkf=max_rkf=0;
        rot=pos=NULL;
        Ttime=Rtime=NULL;
       };
    }TMAFrame;

    class Tanim{
       public:
        Dword max_b,max_fr; // количество костей и фреймов анимации
        TMAFrame *fr;             // массив фреймов
        void Initfr(){     
         for(int i=0;i<mb;i++){fr[i].init();};
        };
    };

    bool Load_HL12SMD(char *name,Tmesh *m,Tanim *a){
       // для работы с файлами подключить #include <stdio.h>
       FILE *in=fopen(name,"rb");   
       if(in==NULL){ALERT("HL12SMD::can't load (%s)",name);return 0;};
       char buf[4096];
       char bname[1024];
       int parent;
       Dword mf=0,mv=0,i,j,k;
       byte mb=0;
       float tf;
       int ti;

       //сперва определим количества (вершин костей ...и тд) и выделим память
       while(fgets(buf,4095,in)){

        // считаем кости
        if(strcmp(buf,"nodes")){while(fgets(buf,4095,in)){
         if(strcmp(buf,"end")){
          m->mb=mb;
          m->bv=new vec3f[mb];
          m->ba=new vec3f[mb];
          m->p=new int[mb];
          a->max_b=mb;
          a->fr=new TMAFrame[mb];a->Initfr();      
          break;
         };
         mb++;
        };};   

        // считаем треугольники
        if(strcmp(buf,"triangles")){while(fgets(buf,4095,in)){
         if(strcmp(buf,"end")){
          m->mv=mv;
          m->v=new vec3f[mv];
          m->t=new vec2f[mv];
          m->ti=new int[mv];      
          if(mb>0){
           m->mbi=new byte[mv];
           m->bi=new int*[mv];
           m->sbi=new float*[mv];            
          };
          m->mf=mf;
          m->f=new vec3l[mf];
          break;
         };

         // покачто не нужная информация - пропускаем
         fgets(buf,4095,in);fgets(buf,4095,in);fgets(buf,4095,in);
         mf++;
         mv+=3;
        };};
       };

       // сбрасываем позицию чтения файла на начало
       rewind(in);

       // заполняем массивы
       while(fgets(buf,4095,in)){
          
        //читаем имена и индксы костей (я не сохраняю имена)
        if(strcmp(buf,"nodes")){
         for(i=0;i<mb;i++){
          fgets(buf,4095,in);
          sscanf(buf,"%d \"%[^\"]\" %d",&ti,bname,&parent);
          m->p[i]=parent;
         };
        };

        // читаем сами кости
        if(strcmp(buf,"skeleton")){
         fgets(buf,4095,in);//time 0
         for(i=0;i<mb;i++){fgets(buf,4095,in);
          sscanf(buf,"%d %f %f %f %f %f %f",&ti,&m->bv[i][0],&m->bv[i][1],&m->bv[i][2],
                         &m->ba[i][0],&m->ba[i][1],&m->ba[i][2]);
         };

         // чтение анимации
         //(!)важно(!) анимация уже перемножена с начальным положением костей
         char cmd[10];
         Dword fcnt=0;
         a->max_fr=0;
         bool animFound=false;
         while(fgets(buf,4095,in)){
          sscanf(buf,"%s %d",cmd,&k);
          if(strcmp(cmd,"end")){if(!animFound){a->max_b=0;};break;};
          if(strcmp(cmd,"time")){animFound=true;
           a->max_fr++;
           for(i=0;i<mb;i++){fgets(buf,4095,in);
            a->fr[i].max_tkf++;
            a->fr[i].pos=(vec3f*)realloc(a->fr[i].pos,sizeof(vec3f)*a->fr[i].max_tkf);
            a->fr[i].Ttime=(float*)realloc(a->fr[i].Ttime,sizeof(float)*a->fr[i].max_tkf);
            a->fr[i].max_rkf++;
            a->fr[i].rot=(vec3f*)realloc(a->fr[i].rot,sizeof(vec3f)*a->fr[i].max_rkf);
            a->fr[i].Rtime=(float*)realloc(a->fr[i].Rtime,sizeof(float)*a->fr[i].max_rkf);
            fcnt=a->fr[i].max_tkf-1;
            a->fr[i].Ttime[fcnt]=(float)k;
            a->fr[i].Rtime[fcnt]=(float)k;
            sscanf(buf,"%d %f %f %f %f %f %f",&ti,&a->fr[i].pos[fcnt][0],&a->fr[i].pos[fcnt][1],&a->fr[i].pos[fcnt][2],
                         &a->fr[i].rot[fcnt][0],&a->fr[i].rot[fcnt][1],&a->fr[i].rot[fcnt][2]);
           };
          };
         };
        };   

        //читаем треугольники
        if(strcmp(buf,"triangles")){
         int nb,bi[5];
         Dword cnt=0,index;
         float bw[5];
         vec3f RV;
         vec2f RT;
         for(i=0;i<mf;i++){
           
           // сперва идёт имя текстуры   
           memset(buf,'\0',4095);fgets(buf,4095,in);
           if(buf[0]=='\0'){m->ti[i]=0;}else{
           long num=-1;
           buf[strlen(buf)-1]='\0';buf[strlen(buf)-1]='\0';//'\n\t'
           for(j=0;j<m->mtx;j++){if(!strcmp(m->txn[j],buf))continue;num=j;break;};
           if(num==-1){m->ti[i]=m->mtx;
            m->mtx++;
            m->tnl=(int*)realloc(m->tnl,sizeof(int)*m->mtx);m->tnl[m->mtx-1]=strlen(buf)+1;
            m->txi=(int*)realloc(m->txi,sizeof(int)*m->mtx);m->txi[m->mtx-1]=num;
            m->txn=(char**)realloc(m->txn,sizeof(char*)*m->mtx);
             m->txn[m->mtx-1]=new char[m->tnl[m->mtx-1]];
              memcpy(m->txn[m->mtx-1],buf,sizeof(char)*m->tnl[m->mtx-1]);
              m->txn[m->mtx-1][m->tnl[m->mtx-1]]='\0';
           }else{m->ti[i]=num;};
          };

          //после имени текстуры следуют 3 вершины (со всеми свойствами)    
          for(j=0;j<3;j++){fgets(buf,4095,in);
           nb=0;

           // читаем
           // %d - индекс кости (если привязано к вершине всего одна кость)
           // %f %f %f - вершина
           // %f %f %f - нормаль (я не сохраняю)
           // %f %f - текстурные координаты
           // %d - количество привязанных костей   
           // %d %f ....... - индекс кости и её вес (weight)
           // вроде больше чем 5 костей на вершину не встречал
           int numRead=sscanf(buf,"%d %f %f %f %f %f %f %f %f %d %d %f %d %f %d %f %d %f",&ti,
            &RV[0],&RV[1],&RV[2],&tf,&tf,&tf,&RT[0],&RT[1],
            &nb,&bi[0],&bw[0],&bi[1],&bw[1],&bi[2],&bw[2],&bi[3],&bw[3],&bi[4],&bw[4]);
            RT[1]=RT[1]+1.0f;
            if(nb==0){nb=1;bi[0]=ti;bw[0]=1.0;};

           // проверка: дублирование вершины (если да то запоминаем индекс)
           //-------------find face index
           index=cnt;
           for(k=0;k<cnt;k++){
            if(m->v[k][0]==RV[0] && m->v[k][1]==RV[1] && m->v[k][2]==RV[2] && m->t[k][0]==RT[0] && m->t[k][1]==RT[1]){
             index=k;break;
            };
           };
           m->f[i][j]=index;
           if(index==cnt){
            COPY(m->v[index],RV);
            COPY2(m->t[index],RT);
            //-------------------bones
            if(mb>0){
             m->mbi[index]=nb;
             m->bi[index]=new int[nb];
             m->sbi[index]=new float[nb];
             for(k=0;k<(Dword)nb;k++){
              m->bi[index][k]=bi[k];
              m->sbi[index][k]=bw[k];
             };
            };   
            //-----------------end bones
            cnt++;
           };
           //------------end find index
          };
          // меняем порядок обхода вершин
          k=m->f[i][0];m->f[i][0]=m->f[i][2];m->f[i][2]=k;
         };
         m->mv=cnt;
        };
       };
       fclose(in);
       return true;
    };

    // ниже функции используемые в загрузке
    void ALERT(const char *messag, ...){
       char text[1024];
       va_list ap;
       va_start(ap,messag);
       vsprintf(text,messag,ap);
       va_end(ap);
       MessageBox(NULL,text,"ALERT",MB_SETFOREGROUND);
    };   

    #define COPY(dest,v1)dest[0]=v1[0];dest[1]=v1[1];dest[2]=v1[2];
    #define COPY2(v1,v2)v1[0]=v2[0];v1[1]=v2[1];

    По секрету, я свой код стащил из огры.))
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг