ПРОЕКТ ЗЕРКАЛО-44

  В начале было слово
И слово было два байта ...
 


 Манифест
 Дизайн -
  документ
 CVS
 Горизонты
 Форум
 Файлы
 Ссылки
 Команда
 История
 Архив



Доброго времени суток!

 Этот сайт посвящён проекту стратегической игры, позволяющей программировать поведение войск.

 Смотреть сначала Манифест, потом Дизайн-документ, потом Форум, потом Горизонты (что пока не вошло в концепт игры), потом что хотите :)))


Последние новости

14.10.04
  Теперь их два и они постоянно двигаются :) Хоть и хаотично...
  Подправил глюки при передвижении (там неправильный коэффициент был и очистка была без центровки), но не всё исправил- иногда спрайты скачут. Теперь, что теперь, теперь нужно определится куда двигаться дальше. Наверно выделение юнитов охватом и отсыл в точку (для этого пасфинд нужен)

05.10.04
  Он уже двигается! Но как-то криво... Оставляя за собой след... И перескакивая в конце... Ладно, будем разбираться. Наверно всё из-за округления координат.
  Но он уже двигается :)))

21.09.04
  Сделал выделение унита мышой. Пока кривовато - он выделяется по границе его спрайта -но зато отработан механизм отображения юнита по событию: сейчас обновляется только выделенный/развыделенный юниты.

16.09.04
  Перенес определение ткнутого мышкой хекса в ЮзерИнтерфейс. Добавил размещение юнитов - клик мышкой при нажатом SHIFT. Теперь можно строить воображаемые армии из танков :))) Неужели они когда-нибуд еще и двигаться будут?... Будут!
  Подправил алгоритм определения выбранного хекса - там жучок был. Добавил координаты хексов при отображении сетки - наверняка пригодится. Релизнул.

14.09.04
  Загрузился созданием спрайтом танка. Вообще хочу сделать игру в пиксель-арте. Что это такое? Смотрите: http://pixel.nascimpact.com/pixel.php - это коллекция пиксельных картинок.
  Попытался нарисовать пиксельный танк. Вроде что-то получилось... Так себе, если честно.... И как его потом вращать - не представляю... В который раз убедился, что я - не художник ;) Проекту нужен пиксельный художник! Тока где его взять-то... Программистов - раз и два... Эх, лана, сделаем что-то дышущее - будем раскручиваться.
  Провел несколько улучшений по совету DogWatch-а. Научился указывать траспарентный цвет для загруженного спрайта. Релизнул изменения - смотрите.
  Все еще думаю над компоновкой мира, его отображателя и юнитов.

10.09.04
  Чуть изменил компоновку. Теперь Unit не знает о своем отображении, зато это знает Reflector. При создании юнита в рефлекторе регистрируется этот юнит с его типом (визуальным). Ведь может быть множество юнитов, имеющих одинаковый вид. При перерисовке рефлектор берет позиции юнитов и отдает команду экземпляру UnitView, который соответствует типу юнита, перерисовать юнит в заданной позиции.
  Еще поменял цвет сетки, что бы не резала глаз.

09.09.04
  Сделал первую версию глобальных классов:
  • World - класс содержащий игровое поле и юниты на нем. Обсчитывает игровой такт, коллизии, юнитов, их программы и проч.
  • Unit - класс, отвечающий за юнита, его поведение. У каждого юнита есть свой обьект класса UnitView, который ведает отображением юнита на экране.
  • UserInterface - класс, понимающий чего хочет узер, какую команду он дает игре.
  • Reflector - класс, отображающий мир и юнитов на экран (посредством класса Display)
  • Display - класс, обеспечивающий низкий уровень взаимодействия с видеокартой (вывод спрайтов, флип и т.п.)
  • ResourceHolder - класс, обеспечивающий доступ к ресурсам игры (картинки, файлы данных и т.п.)
  • Debug - вспомогательный класс, выводящий отладочную информацию на консоль.
  В процессе обработки такта игры World определяет какие юниты изменили своё положение/сосотояние и сообщает о них Reflector-у. Который потом идет по списку и перерисовывает эти юниты на экране (посредством UnitView). А сам экран перерисовывает Display. На работу всех их влияет UserInterface, который сообщает что хочет узер (двигает экран, посылает куда-то юнита, отдает команды и т.д.) И теперь главный цикл игры выглядит так:
 	need_run = 1
	while need_run:
		# берем комaнды узера
		need_run=globj.UserInterface.proceedActionsFromUser()
		# производим мировай такт (рассчет движений/взрывов/программ)
		globj.World.makeTick()
		# отрисовываем юниты в видимую область
		globj.Reflector.show()
		# физическая отрисовка экрана
		globj.Display.flip()
		pygame.time.wait(1)
  Это все еще не окончательно, изменения возможны, но костяк я думаю заложен. Комментарии? В форум.

08.09.04
  По просьбе DogWatch-а включил в дистрибутив bat-файлы для разных разрешений.

07.09.04
  Пофиксил багу в ехе-дистрибутиве: оказывается в library.zip лежат pyc-и всех модулей. Теперь z44.exe.rar распух, а z44.dist.rar похудел. Спасибо Mickangelo за багрепорт.
  Вынес глобальные обьекты (дебаггер, ресурс_холдер, дисплей, мир) в отдельный модуль globj и инициализирую их при запуске, а видны они отовсюду посредством импорта модуля globj
  Начал создавать классы мира и юнитов (и сопутствующие им отображатели). Пока при старте создается один юнит и отображается (внутри сделано криво - заглушка) . Но как-то не укладывается взаимодействие классов и их отображателей - кто про что знает и как/когда срабатывает... Думаю.

23.08.04
  Восстановил форум. В очередной раз. Пусто на форуме... ветер гуляет по осенним дорожкам форума...
  Раздумываю над классом ResourceHolder, пусть он ведает ресурсами игрушки (спрайтами, мапами, фонтами) Пока за его спиной будут обычные файлы, если понадобится - сделаем какой-нить XML/pak/wad
  Так же раздумываю над отделением графического представления юнита от модели юнита. Наверно будет 2 класса Unit и UnitView, первый дружит с World, второй - с Display, а общаться будут так "я изменил положение, отрисуй меня" "ага, давай координаты/углы" "вот они" "отрисовано, сэр"

20.08.04
  Поборол таки py2exe - там оказывается фонт не копировался. Так что теперь можете качать exe-шник, который по идее будет работать и на машинке без питона. Пожелания приветствуются.

17.08.04
  Придумал как оно всё (спрайты) будет отображаться. Когда начал реализовывать, увидел, что за меня это "всё" уже придумали создатели SDL :) - рисовать на экране, предварительно очистив прям-к под спрайтом из бэкграунда.
  Посему: переделал внутренности класса Display (добавлены методы clearScreen, showSprite), упростил класс измерителя FPS, написал немного комментов, нарисовал спрайт танка и вывел его в позиции 100,100 :) Дальше будем пытацца танк двигать (для начала - выделить мышой).
  И наверно нужно уже сделать классы юнитов (простецкие, для того лишь что бы в правильном русле делать движение спрайтов)

11.08.04
  Сделал загрузку некого подобия карты. Сделал триггер отображения сетки хексов по клавише "с". Попробовал сделать ехе-шник с помощью py2exe: больно здоровый он получается, ок 1.5Мб и не работает ;) видать там еще нуно указывать модули pygame, как пока не знаю. Думаю над алгоритмом вывода спрайтов.

09.08.04
  Перешел на Python 2.3.4 - поновее, да и python2exe есть под него (пока не затачивал). Сделал: выбор хекса мышкой; разрешение как параметр командной строки --resolution [800x600|1024x768|1280x1024] (без параметра будет зашитое в конфиге 1280x1024); отрисовка FPS. Далее хочу сделать: клавишу "показать сетку", сделать ini-шку параметров и наконец-то класть спрайты...

29.07.04
  Да уж, проект был в глубокой заморозке. За это время я понял, что изучать VC++ на профессиональном уровне мне не удается, а на любительском не получается - основная работа и личная жизнь отнимает все время.
   Поэтому нужен простой в изучении инструмент, спрайтовый. И такой нашёлся - pygame.org Это python-враппер над графической библиотекой SDL, сама библиотека кросс-платформенная (мне про неё еще с год назад говорил dogwatch, но я не послушал)
   Скачал pygame, попробовал - все просто. За пару вечеров накидал отрисовку игрового поля, потом решил сделать ИП состоящим из сот (hex-ы) С неделю думал как и что, потом воплотил. Сейчас сделал (не до конца, отпуск помешал) определение hex-а, в который узер ткнул мышкой. Скачивайте в файлах (рабочая верссия, с глюками, по просьбе LaC). В планах: доделать определение ткнутого hexa, запустить на поле спрайты-танки и заставить их ездить.
   Еще из новостей: про проект было упоминание в журнале Game.EXE Вот цитата: "Могилы любительских проектов по мотивам Nether Earth рассеяны по просторам мирового Интернета (вот одна из русских березок: http://zerkalo44.narod.ru)..." О как. Могила. Сам он могила :) Трепыхаемся еще...

История ...



Последние сообщения на форуме:




изменено 15.02.06

Hosted by uCoz