redhat писал(а): ↑02.07.2007 08:48
Привет viewizard. Нужна твоя небольшая помощь. Тут решили мы сделать один проект, написать движок игры. Поскольку у нас нет опыта в таком деле, можеш подсказать с чего начать.
Чем смогу - тем помогу, как говориться
redhat писал(а): ↑02.07.2007 08:48
Движок мы решыли писать на ассемблере. Архитектуру будем делать таким образом, чтобы можно было легко портировать под любую платформу. Изначально будем писать под x86/x86_64 (Intel, AMD), а после и на RISC процессоры.
Я думаю, это вы поторопились

Писать движки на асемблере - это конечно круто, но этим уже давно никто не занимается, да и раньше (примерно с 2000) на ассемблере писали не весь движок, а только критические по времени исполнения части. Имхо, не заморачивайтесь на ассемблер - пишите на с++ сразу. Сейчас не 1990-2000 годы, компиляторы уже достаточно зубастые и довольно хорошо делают оптимизацию кода.
Плюс, не забывайте, что каждый год появляются новые технологии, которые как раз и дают хороший прирост в производительности (mmx, sse...). Компиляторы сразу на них ориентируют (достаточно поставить опцию в конфиге) и все, а вам придется переписывать код с нуля + не на всех процессорах они есть (RISC/CISC) или реализации могут значительно отличаться.
И самое главное, необходимость в ассемблере убирает рост производительности процессоров

Поверьте, ваши таким трудом выигранные 5фпс просто не заметят на фоне 200фпс, которые будет выдавать игра, а времени вы потратите очень много.
Но (!!! особо подчеркиваю !!!) это мое мнение, говорю его на базе своего опыта, вы вольны делать что хотите.
redhat писал(а): ↑02.07.2007 08:48
Игру планируем выпустить под Linux, Windows, Mac. Сейчас будем разбиратся в сорцах Quake 3 и некоторых других игр. Но пожалуй самый острый вопрос на данный момент - в какой програме делать 3D модели, чтобы их можно было связать с движком, и в каком формате делать текстуры (нам нужно высокое качество и небольшой размер). И возможно форточную версию придётся писать на директе 10.
Зд модели можно делать в 3D максе, можно в MilkShape3D, в блендере (но я там так и не освоился), да в принципе где угодно. В любом случае придется сделать свой экспорт в нужный формат или отдельную программу-конвертор. Или использовать, к примеру, .3ds или что-то другое а не свой формат 3д моделей. Форматов достаточно много. Мы делали так:
1) У удаленных моделеров стоят 3д максы. Они делают модели и передают мне результат в виде .max и 3ds файлов
2) У меря стоит MilkShape3D (еще 2 года назад купил его, стоит около 30 долларов всего), при необходимости я могу корректировать меш, наложение текстур... (MilkShape3D это как раз редактор для игровых моделей).
3) Написал раз конвертор 3ds -> в свой формат.
Писать экспорты для макса и милкшейпа я не стал, быстрее 1 раз конвертор написать.
По поводу текстур. Главное понять, что текстуры различаться будут по применению. Для 2д частей - это одно, для 3д - совсем другое. К чему я это говорю - использовать один формат для хранения текстур это не очень умно. У нас используется 2 формата:
tga - для хранения без потерь качества + если надо передать альфа канал.
jpg - если возможно небольшое ухудшение качества (текстуры без альфа канала можно смело делать в нем)
Так же еще очень часто используются:
png - хорошее сжатие без потери качества, но есть ограничение на кол-во цветов.
dds - если нужно тянуть мип-меп уровни для текстур
По поводу компрессии текстур. Помните, что конечный инсталлятор будет запакован LZ-подобным архивом (zip), т.е. тянуть LZ компрессию в dds или tga, к примеру, смысла нет - это только трата времени при загрузке игры.
Если планируется писать на разных GAPI, советую сделать все графические функции через свой интерфейс (грубо говоря, пишите функции GAPI только в своих отдельных функциях, а в игре используйте только свои функции а не напрямую функции GAPI), чтобы редактировать код только за этим интерфейсом и не переписывать всю игру. От себя еще могу добавить - сразу смотрите на DirectX, он более ограничен чем OpenGL, и это надо сразу учитывать при проектировании своего интерфейса (особенно это касается DirectX 10).