Что делать тем у кого он не поддерживается? Ну к примеру вот скажем есть игра, несложная, и тут вдруг я решил поиграть ее на своем старом железе, как быть с обратной совместимостью? Тоже самое выходит и с Directx, берем 11 сразу, и что получаем? Там наверху совсем не думают об этом, и выходит так что ты должен быть мастер на все руки. (Если вы понимаете о чем идет речь.) Все конечно еще зависит от жанра, есть такие которые до сих пор популярны и по прошествии долгих лет, именно о них сейчас идет речь.
Задай себе вопрос зачем тебе эти новшества? Если можно взять старый, проверенный, удобный. В общем гнаться пока некуда, начинать нужно с самых истоков.
Deswing, Сам лично советую взять тебе OpenGL. Меньше возни, быстрее обучение, сравнивая с Directx. Есть конечно в нем свои минусы, но это быстро решается. В общем если надумаешь изучать OpenGL, можешь связаться со мной по лс, помогу в изучении. Если никто не знает, это то же самое, как если бы этого не было вовсе.
Сообщение отредактировал Zweifx - Суббота, 16 Февраля 2013, 06:49
В консоли все выводится. Я сначала думал что у меня что-то в движке не так сделано, написал на чистом Directx (Взял обычный пример из книги) но проблема осталась.
Есть проблема, замечаю в своих приложениях на Directx подергивание объекта при движении. Вертикальная синхронизация включена, пробовал привязать к дт. но это сделало только хуже, объект будто застревает на долю секунды в одном положении. Тестировал на OpenGL, подергиваний практически нет, в отличие от ситуации с Directx. Прошу помощи.
Прилагаю приложение. Test Если никто не знает, это то же самое, как если бы этого не было вовсе.
Хотел бы задать пару вопросов по игровому циклу, а именно как ограничить скорость игры, читал статьи, но так и не пришел к самому оптимальному решению.
Расскажу о проблемах с которыми столкнулся. Делаю простенькую игру, пришел к тому что захотелось организовать определенную скорость игры, так как тестировать буду на разных компьютерах. Без ограничений скорости игры, отрисовка и просчет шли параллельно и никаких затруднений не возникало, объект рисовался плавно на экране без каких либо резких перемещений. Далее сделал привязку к таймеру, ограничил fps до 30 кадров в секунду. Примерная реализация была такая:
Code
const int TICKS_PER_SECOND = 30; const int SKIP_TICKS = 1000 / TICKS_PER_SECOND;
Но с такой реализацией пропала плавность движения объекта, он будто застревает на долю секунду. Иначе говоря меня этот вариант не устроил.
Также делал отрисовку кадра не зависящей от скорости игры. Но объект не плавно двигался как и в первом варианте.
Можно ли каким-нибудь способом сделать движение объектов плавным как в случае без ограничений, и сделать отрисовку кадров не зависящей от этого процесса? Если никто не знает, это то же самое, как если бы этого не было вовсе.
kikas86, Сделать класс эллипса, создать для него <vector>, и контролировать создание и удаление. Если никто не знает, это то же самое, как если бы этого не было вовсе.
Grendaiser, Нужно подходить снизу (☻), квест берется нажатием клавиши "Y".
Добавлено (25.04.2012, 22:33) --------------------------------------------- Обновление темы, добавлена игра "Once". Также были восстановлены ссылки на скачивание. Если никто не знает, это то же самое, как если бы этого не было вовсе.
Сообщение отредактировал Zweifx - Среда, 25 Апреля 2012, 22:33
redinard, Ты не перевел формат вершин из D3DFVF_XYZRHW в D3DFVF_XYZ во первых, во вторых ты не применил функцию матриц, в третьих у тебя допущена ошибка в самой функции матрицы( Ты не написал SetTransform( D3DTS_VIEW, &MatrixView ) Установку матрицы вида).
Здравствуй maXimBestUA, посмотрел игру, вижу ты все таки постарался!
Но чувствуется, что ты пока не умеешь правильно оформлять код (Сравнивая со своим, когда начинал учить С++), но главное что все работает!
Так вот, начнем с проверок, их можно было сделать как функции (См. мой прим.), к тому же ты используешь много циклов (Возникают проблемы с чтением твоего кода), в main можно было бы обойтись одним циклом while(1).
Вот я немного переделал твой код функции main. Можно конечно написать еще лучше, но пока как есть. Т.к. использую Code::Blocks, была написана функция для корректного отображения Рус.яз. (coutr(const char* txt)) можешь заменить на привычный для себя (cout).
Code
int state(int num1, int num2, int num3, int num4) { if(num1 < num2 || num3 > num4){ coutr("+--------------WARNING-------------------+\n"); coutr("Вы ввели некоректные данные, повторите.\n"); coutr("+----------------------------------------+\n"); return 0x5; } }
int main (void) {
int c, x, b; // Эти переменные лучше вынести из функции, или инициализировать их нулями.
if (state(x, 0, x, 4) == 0x5) // Проверка меню x < 0 || x > 4 если да, функция state вернет 0x5 continue; // Пропустить остальной код, и начать цикл заного.
if(state(money, b, 1, b) == 0x5) //Проверка money < b || 1 > b если да, функция state вернет 0x5 continue; // Пропустить остальной код, и начать цикл заного. }
switch (x) { case 1: game1(c, b); break; case 2: game2(c, b); break; case 3: game3(b); break; case 4: game4(b); break; case 0: return 0; break; } } return 0; }
Переходить к оконным приложениям тебе еще рано, сейчас тебе лучше научиться правильно оформлять код, переходить к Классам(ООП) иначе будешь путаться (Сам много с этим провозился, понимая суть).
Контуры моей мысли, думаю, тебе понятны. Если никто не знает, это то же самое, как если бы этого не было вовсе.
Сообщение отредактировал Zweifx - Среда, 04 Апреля 2012, 04:04
Не нашел разделов для этого, решил выложить сюда. Тема будет состоять из моих поделок на С++.
-------------------------------------------------------------------------------------------------------------------------------------------- First Console Game
(В процессе создания не успел придумать название) Суть игры: Вы управляете символом (☺) передвигаясь по карте (Лабиринту), можно брать квесты у символов (☻) по истреблению всякой нечести, точнее других символов, а именно (@,A) в разных количествах. Есть счет опыта и монстров которые нужны для квеста. При накоплении определенного количества опыта, появляется другой (☻) с квестом.
Исправления: (23.01.12) v0.3: 1. Монстры больше не появляются в стенах. 2. Счетчик монстров активируется только когда взят квест.
-------------------------------------------------------------------------------------------------------------------------------------------- Once
Новый проект (реконструкция старого), решил добавить графики, к тому же только недавно ознакомился с directx. На данный момент реализовано управление, камера, в скором будущем будет добавлен геймплей.
Если есть какие-нибудь идеи, советы, пишите в комментарии.
Управление: Стрелки, Камера - ЛКМ.
Скриншоты:
Скачать Если никто не знает, это то же самое, как если бы этого не было вовсе.
Сообщение отредактировал Zweifx - Среда, 25 Апреля 2012, 22:54
Жанр: RPG, Платформер, Песочница. Конструктор игр: Game Maker. Пространство: 2D. Вид: Сбоку. Похожие игры: Cave Story, Terraria. ЯП: GML. Платформа: Windows. Предоставление исходного кода игры: Не предоставляется. Какой тип лицензии распространения: Неизвестно. Сроки разработки: Работа началась: 01.01.2012. Окончание планируется: 01.03.2012. Состав имеющейся команды: Программист-разработчик(Zweifx).
О самой игре: Главная цель игры состоит из цепочек квестов, по мере выполнения которых игрок будет получать новое оружие, опыт, квестовые вещи, для активации некоторых фич игры. В игре будут присутствовать данжи, небольшие "Сцены" с боссами по типу игры Cave Story. Возможно будет реализовано, глобальное модифицирование карт, наподобие игры Terraria. Большое количество времени сейчас уделяется дизайну игры, каждая карта в игре будет в корне отличаться от других. Сюжет будет придумываться по ходу проекта. Сюжет игры будет зависеть только от вас! Вы сами выбираете цепочку заданий от нее и будет зависеть исход игры. (Так как нету дизайнера персонажей, используется спрайт Квота.)
После того как будет готов проект, скорее всего будет добавлен мультиплеер.
В команду требуются: 2D Дизайнер(Персонажи, отрисовка фона, дизайн интерфейса.) также если у вас есть желание помочь проекту, можете писать мне в лс.
Скриншоты:
Обновления:
07.01.12 Добавлен новый блок, улучшен интерфейс. Также исправлен баг который позволял ставить блок в воздухе. Блоки ставяться в последовательности(Снизу вверх; если сбоку имеется блок одного вида, то можно поставить блок рядом с ним)
08.01.12 [0.32a] Добавлен режим мультиплеера (Пока что не стабильно), также сделана возможность одиночной игры.
10.01.12 [0.41] Добавлена шкала жизней, опыта. При наведении на персонажа показывает всю подробную информацию.