Решил тут "поставить" для себя задачку - чтение из БД1, некой SQL выборки, передача результатов оной по TCP на удаленную машину, там update другой БД2 принятыми результатами.
Условия: БД1 - один экземпляр, удаленных машин с БД2 - много. Процесс должен быть максимально автоматизированным и фоновым (относительно работы пользователя на любой из машин, хоть с БД1, хоть с БД2).
Повод - давно не работал с TCP-протоколом - напрочь забыл как.
Ну и потоки поизучать - хороший полигон.
На тек. момент сделал следующее:
клиентскую часть для WinSocket-проги.
По крайней мере - она долбится по указанному диапазону портов на указанный IP-адрес, меняя порт при ошибке подключения, при успешном подключении - должна стопорить и писать в MEmo на форме.
Кстати пишет в это Memo - весь процесс подключения, дублирует это в лог-файл (о
... Читать дальше »
Разработка начата 16 октября 2007 года. Примерно через месяц определились с ориентировочной длительностью - 3-3,5 месяца. После НГ установили граничный срок на 31.01.2008.
Самое интересное - много времени было потрачено на инструментарий и адаптацию движка к данной задаче игры. А вот некоторые моменты игровой механики (генерация объектов, выстрелы и кое-что еще), система столкновений, управление, система частиц, обработка объектов, GUI - модули взяты из наработок HOMESHIP. Соотвественно на эти моменты время затрачено исключительно на оптимизацию (которая все еще продолжается) и на стыковку.
Очень много времени потеряно из-за отсутствия диздока. Один из самых "тяжелых" моментов - когда в конце второго месяца разработки (уже есть какая-то демка, танки бегают, стреляют, объекты разрушаются) потребовалось ввести турели... Сложность оказалась в том что турели - объект смешанного типа. Органи
... Читать дальше »
Сделано плавное и неглючное перемещение камеры по сцене, масштабирование планет. Изменен масштаб тактического режима, изменен его внешний вид и способ отображения информации со сканеров, увеличен масштаб основного режима. Устранены все проблемы с увеличением количества кораблей в сцене. Изменен формат конфигурационного файла кораблей, теперь в одном файле хранятся модели, конструкция корабля, текстуры. Правила для ИИ пока хранятся отдельно, но это - пока... Соответственно изменены утилиты "сборки" конфигураций кораблей.
Также в проект интегрирован менеджер ресурсов - модуль работающий с единой базой ресурсов и осуществляющий единую загрузку всех общих текстур, звуков и т.д., а также - подгрузку динамически востребованных ресурсов.
Вроде таки победил я этого зверя окончательно. Любить возню с GUI больше от этого не стал, но притерпелся... Осталось доделать парсер файлов с раскладками и можно окончательно интегрировать в проект.
Из реализованных элементов GUI:
1. Окна
2. Кнопки
3. Слайдеры ("движки")
4. текст (label)
5. панель (окно в окне)
6. CheckBox
7. RadioButton
8. ScrollBox
9. ScrollBar
10. ComboBox
11. Progress Bar
12. Edit
13. ListBox
Из эффектов поддерживаемых модулем GUI:
1. Dragging - т.е. перетаскивание окон, слайдеров
2. Hide\Show - изменения видимости окон и элементов
3. Изменения прозрачности и блендинга любых элементов
4. Наложение окон друг на друга
5. Различаются нажатия, удержания и отпускания трех кнопок мыши + вр
... Читать дальше »
Тут сегодня допер... Пришлось дорабатывать шейдер освещения кораблей на использование аддитивной текстуры. Вроде сделал. Довел до ума бамп-шейдеры на астероиды и планеты. Никак не могу сделать тоже самое с функцией, отвечающей за масштаб модели планеты при приближении камеры к ней или удалении от нее... То ли с самой функцией напортачил, то ли с коэффициентами... Функция сама по себе экспоненциальная... Но чистая экспонента - слишком резво и явственно нелинейно планета меняет масштаб... Линейный же коэффициент получается очень маленьким... Что значит "очень"? Ну например, расстояние (на котором меняется масштаб) равно 150000. На этом расстоянии изменение масштаба составляет 10,3. Делим второе на первое - получаем очень некрасивое число... Вот, называется, сам себе создал проблему... А все из-за того что есть желание иметь пропорциональные планеты. Т.е. если вышел на орбиту такой - так она полнеба занимает...
Наконец я могу снова нормально зайти на свой сайт и чего-нить здесь написать нового... Из нового:
1. Переделал (улучшил) навигацию во всех режимах игры (обычный, тактический, карта галактики)
2. Добавил бамп-шейдеры (для планет и астероидов)
3. Доработал режимы создания галактики (режимов три - кластер - собственно простой Random, скопление-туманность - звезды располагаются в некоторой сфере, и спираль - с произвольным кол-вом лучей от 3-х...). Доработка касалась качества распределения звезд, и создания "фоновых" звезд. Их нельзя будет посетить, но они активно участвуют в создании фона в основном и тактическом режимах. В этих режимах на скайсфере видны (соответственно своим положениям в галактике) все фоновые звезды, а также - звезды галактики из некоторого объема вокруг звездной системы в которой находится игрок. Т.е. - если вы видите какую-то звезду на "небосводе" то она реально там находится. :) И чем игрок ближе будет к центру галактики (исключение - класте
... Читать дальше »
В движок добавлена поддержка шейдеров. Также реализована модель бликового освещения - теперь корабли стали "металлическими", а не "пластмассовыми" на вид. Эти улучшения движка уже пойдут в готовящуюся демку. Эх... Нам бы еще пару художников - текстуры и арт рисовать... А то все уперлось в текстуры...
Взялся я таки за шейдеры... Пока за вертексные. В принципе, думаю что дело ими и ограничится (или не ограничится), ибо все что я от оных ожидаю - металлический блик на кораблях. Чтобы корабли перестали быть "пластмассовыми"... Ломаю голову над уровнем детализации работы с экипажами кораблей... С учетом того что на корабле могет быть до 500 человек команды... Ну в общем, как-то сомнительно мне что кто-то возымеет желание с каждым возиться отдельно. И пока что меня никто в этом даже не пробовал переубеждать. Вот и думаю - может нафиг его - менеджмент экипажа? Оставить мониторинг распределения по кораблю, состояний, приказов... А все управление возложить на корабельный ИИ. Также разумеется оставить обработку в соответствии со структурой экипажа, и его цепочкой командования. Вот такие мысли...