Кладовая программиста. Ящик Пандоры. Игра "Угадай число" > Minecraft истории
истории Minecraft    

Кладовая программиста. Ящик Пандоры. Игра "Угадай число"

Кладовая программиста. Ящик Пандоры. Игра "Угадай число"

Самопал Кладовая программиста. Ящик Пандоры. Игра "Угадай число" 022.01.2004 04:21  |  "...Конечно, игра очень проста и стара как мир, но на ее примере вы поймете, как вообще делаются игры. Мы ведь будем писать не простую угадайку, какую обычно встраивают в сотовые телефоны, а угадайку продвинутую. Игру будет вести виртуальный ведущий. И пу Самопал    В прошлой статье цикла "Кладовая программиста" мы вместе с вами создали довольно мощный текстовый редактор. Вы наверняка самостоятельно внесли в него не одно изменение, но надо двигаться дальше.
   Хочется сделать что-нибудь эдакое, но вот что? Не писать же сразу Doom IV? Это нам пока не по силам, но можно сделать что-то более простое. Сегодня мы с вами напишем настоящую игру. Игру "Угадай число". Разочарованные возгласы? Конечно, игра очень проста и стара как мир, но на ее примере вы поймете, как вообще делаются игры. Мы ведь будем писать не простую угадайку, какую обычно встраивают в сотовые телефоны, а угадайку продвинутую. Игру будет вести виртуальный ведущий. И пусть мы пока не в силах дать ему голос, зато обаяние проще простого. Наша угадайка будет вести рейтинги игроков и сохранять их в отдельном файле.

   Планов громадье

   Рука потянулась к заветному значку "Дельфи" и уже готова совершить обряд двойного клика... Постойте! Любой профессиональный игроразработчик прежде всего пишет дизайн-документ. Это важнейший этап разработки, и если им пренебречь, проект вряд ли доживет до релиза. Мы не будем писать полноценный диз-док для "Угадайки", но в общих чертах наметить возможности стоит.
   Основное окно будет состоять из двух логических зон. Вверху мы поместим картинку ведущего. Вы видели, как "говорят" герои в комиксах? Вот так же будет говорить и наш персонаж. Мы сделаем пять стандартных фраз, которые полностью описывают гeймплей. При старте новой игры ведущий говорит: "Я загадал число. Отгадай-ка его!". После этого игрок вводит свой вариант в текстовое поле ввода под персонажем и нажимает кнопку, которую мы поместим рядом. Шутки ради пусть название этой кнопки будет всегда разным, например:
   "Хм... может быть, это?"
   "Я знаю, твое число вот это!"
   "Я разгадал тебя"
   "Ты хитрый, но я хитрее"
   "Попробуем вот так..."

   Если игрок отгадал, ведущий говорит: "Ты угадал! Молодец! Сыграем еще раз?". Если игрок не угадал, ведущий подсказывает: "Мое число больше" или "Мое число меньше". Во время игры подсчитывается число попыток, которые понадобились игроку, чтобы отгадать число. Если игрок побил рекорд и отгадал за минимальное число попыток, появляется таблица рекордов и предложение ввести свое имя. Таблицу рекордов можно также вызвать в любое время с помощью специальной кнопки. Гeймплей мы расписали, на главной форме не хватает только кнопок Новая игра, Рекорды и Выход.
   Примерный план игры готов. Пора приступать к реализации.

   С пылу, с жару

   Кликните дважды по иконке Дельфи. Утилита запустится и откроет новый проект. Сохраните его. Главная форма у нас будет высокой и узкой, поэтому измените ее размеры соответствующим образом. Через Object Inspector установите свойство Caption формы в "Угадайке". Можно начинать проектировать саму форму. Но до этого ее необходимо настроить. Что будет, если игрок вздумает развернуть окно на весь экран? Все элементы управления (кнопки, рисунок нашего ведущего, поле ввода) окажутся в верхнем левом углу формы, а остальное прострaнcтво будет пустым. Зрелище не для слабонервных. Такие огрехи выдают новичков и неряшливых программистов. Исправим эту оплошность. Кроме того, игроку надо запретить мышкой изменять размеры окна (по умолчанию эта возможность включена).
   Изменим тип границы окна. Откройте свойство формы BorderStyle: вместо bsSizeable поставьте bsSingle. Разверните список подсвойств BorderIcons и свойство biMaximize установите в False. В прошлый раз (в предыдущей статье цикла) вы наверняка заметили, что после запуска программы окно оказывается в том месте, где вы оставили форму при проектировании. Это не очень удобно. Давайте сделаем так, чтобы каждый раз при запуске игры форма оказывалась строго в центре экрана. Для этого достаточно установить свойство Position формы в poDesktopCenter.
   Приступим к наполнению формы. Начнем с нижней части. Внизу формы поставьте три кнопки одинакового размера так, чтобы они тесно прилегали друг к другу и к нижней границе окна. В их свойства Caption запишите соответственно Новая игра, Рекорды... и Выход. Обратите внимание, что Рекорды мы написали с тремя точками. По правилам Windows это значит, что после клика по кнопке перед пользователем откроется новое окно. Чуть выше поместите поле ввода (TEdit), а рядом кнопку без надписи (мы будем выбирать ее случайным образом). Не забудьте очистить поле ввода в свойстве Text.
   Займемся графикой. Нашим ведущим станет симпатичный вампир за авторством Алексея Макаренкова. Вы можете нарисовать какого-нибудь персонажа сами, ну а если рисуете вы плохо, то можно воспользоваться отсканированной фотокарточкой или позаимствовать рисунок вампира с нашего компакта.
   Поместите на самое видное место нашей формы картинку (компонент TImage на вкладке Additional) и с помощью маленькой кнопочки с тремя точками напротив свойства Picture загрузите pic.jpg с вампиром-ведущим. Но вот беда: не понимает "Дельфи" формат jpg. Это надо исправить. Добавьте в строчку uses модуль jpeg. Теперь строчка uses выглядит примерно так:
   uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;

   Пора загружать картинку. Но вампир у нас статичный. Как же он будет разговаривать с игроком? Разговаривать он будет так же, как персонажи "разговаривают" в комиксах, с помощью воздушных шариков-фраз. Нарисуйте картинки всех возможных фраз, или возьмите их с
- Проек-
тируем интер-
фейс игры
нашего диска. Идея такова: мы помещаем поверх картинки ведущего картинки всех его фраз и делаем их невидимыми; как только ведущий что-то говорит, соответствующая фраза становится видимой. Если до этого была видимой другая фраза, она становится невидимой.   
   Поместите на форму картинки всех фраз. Не забудьте поставить свойство Transparent этих картинок в true, а свойство Visible в значение False, ведь с самого начала все картинки должны быть не видны. Фразы "Я загадал число..." и "Ты угадал..." размещаем сверху по центру, фразу "Мое число больше" слева, а фразу "Мое число меньше" справа.
   Вам не надоел серо-гoлyбой однообразный интерфейс Windows? Давайте хоть нашу игру сделаем разноцветной. Неплохо бы покрасить форму в какой-нибудь цвет, например, в желтый. Просто установите свойство Color формы в clYellow. Поле ввода можно покрасить в небесный цвет. Для этого установите его свойство в clAqua. Чтобы придать некоторый стиль и необычность полю ввода, его стоит сровнять с формой; для этого установите свойство BorderStyle (поля ввода, а не формы) в bsNone.
   Давайте сделаем поле ввода активным по умолчанию. Поставьте у формы свойство ActiveControl в Edit1, и при каждом запуске курсор будет сразу появляться в поле ввода.
   Необходимо изменить шрифт всех четырех кнопок и поля ввода на что-то более подходящее. За шрифты любых элементов отвечает свойство Font. Можно изменять шрифт, регулируя подсвойства этого комплексного параметра, но лучше и проще щелкнуть на маленькую кнопочку с тремя точками напротив надписи Font в объектном инспекторе. Перед вами появится большое окно, в котором есть возможность изменить гарнитуру, начертание, кегль и цвет надписи.
   Договоримся о логических именах объектов, чтобы дальше по тексту не называть все время кнопки русскими именами. Кнопка Новая игра будет Button1, Рекорды... Button2, Выход Button3, поле ввода Edit1, картинка ведущего Image1, картинка "Я загадал число..." Image2, картинка "Ты угадал..." Image3, картинка "Мое число больше" Image4, картинка "Мое число меньше" Image5.

   10240 по Фаренгeйту

   Интерфейс готов. Пора программировать игровую модель. Осмотрим форму. Первое, что бросается в глаза, безымянная кнопка. На этой кнопке каждый раз должны меняться надписи. Мы можем прописать изменение надписи во всех местах, где это требуется, но зачем усложнять себе жизнь? Давайте создадим отдельную процедуру, которая только тем и будет заниматься, что менять надписи на кнопке. Переключайтесь на окно редактора кода и после слова implementation пишите:
   procedure ChangeCaption;
   begin
   case random(5) of
   0:Form1.Button4.Caption:=\'Хм... может быть, это?\';
   1:Form1.Button4.Caption:=\'Я знаю, твое число вот это!\';
   2:Form1.Button4.Caption:=\'Я разгадал тебя\';
   3:Form1.Button4.Caption:=\'Ты хитрый, но я хитрее\';
   4:Form1.Button4.Caption:=\'Попробуем вот так...\';
   end;
   end;

   Разберем процедуру. Заголовок и объявление процедуры понятны. Дальше идет конструкция case A of B [C,D...]. Это конструкция выбора какой-то комaнды в зависимости от состояния переменной A. Если конструкция random(5) будет равна, скажем, единице, выполнится комaнда Form1.Button4.Caption:=\'Я знаю, твое число вот это!\'. Random(N) функция, которая возвращает случайное число из промежутка от нуля до N-1. Дальше мы свойству Caption объекта Button4 (наша кнопка) каждый раз присваиваем новое значение. Но вот почему перед Button 4 стоит какой-то объект Form1? Это форма. Ведь кнопка принадлежит форме, а значит, объект Button4 можно рассматривать как свойство объекта Form1.
   Внимательный читатель спросит: "А почему мы раньше никогда Form1 перед объектами формы не указывали, а сейчас указали?". Дело в том, что есть процедуры и функции классов (они, если вы еще не забыли, называются методами), а есть просто процедуры и функции. Сейчас перед вами просто процеДypa. А в тестовом редакторе мы писали код только в обработчиках событий формы. Обработчик события процеДypa класса. Мы везде должны были бы писать перед объектом имя более глобального объекта, к которому он принадлежит. Однако, если мы пишем код в методе глобального объекта, его идентификатор нужно опустить, что мы с успехом и делали. ПроцеДypa ChangeCaption не входит ни в какой класс, она сама по себе. Поэтому в ней надо указывать полный путь до необходимого свойства или объекта. Немного сложно, но, попpaктиковавшись, вы все поймете.
   После первого запуска название кнопки должно смениться случайным образом. Запишем комaнду запуска этой процедуры в обработчик события формы OnCreate. Создать обработчик можно или через вторую вкладку объектного инспектора, или просто щелкнув два раза на пустом прострaнcтве формы. Пишите между begin и end всего одну строчку:
   ChangeCaption;

   Запустите игру. После запуска название кнопки меняется. Что и требовалось сделать. Попробуйте запустить игру несколько раз. Странно, название кнопки всегда одно и то же. Дело все в принципе действия генератора случайных чисел. На самом деле, числа он выдает не случайные, а псевдослучайные, основанные на специальной таблице случайных чисел. Каждый раз при вызове берутся числа из таблицы в одном и том же порядке, поэтому вся случайность теряется. Чтобы это обойти, перед запуском программы надо один раз сбросить указатель таблицы случайных чисел с помощью комaнды Randomize. Поместить ее лучше всего в обработчик OnCreate, ведь он запускается самым первым. В итоге обработчик OnCreate у вас будет выглядеть так:
   procedure TForm1.FormCreate(Sender: TObject);
   begin
   Randomize;
   ChangeCaption;
   end;

   Попробуйте запустить игру несколько раз. Теперь надписи будут разными.
   Напишем процедуру, которая заставит ведущего говорить. В качестве параметра мы будем передавать процедуре целое число, которое обозначает нужную фразу. Вот полный текст этой процедуры:
- ПроцеДypa обработки клика по Button4 в редакторе кода

   procedure Say(text:integer);

   begin
   Form1.Image2.Visible:=false;
   Form1.Image3.Visible:=false;
   Form1.Image4.Visible:=false;
   Form1.Image5.Visible:=false;

   case text of
   0:Form1.Image2.Visible:=true;
   1:Form1.Image3.Visible:=true;
   2:Form1.Image4.Visible:=true;
   3:Form1.Image5.Visible:=true;
   end;
   end;

   Коротко пробежимся по тексту. Сначала мы делаем невидимыми все картинки фраз. Потом с помощью уже знакомой вам конструкции case в соответствии со значением переменной-параметра text делаем видимой нужную картинку-фразу.

   Тонкости гeймплея

   Когда все подготовительные действия выполнены, нужно приступать к проработке гeймплея. Нажимаем на кнопку Новая игра; ведущий должен поприветствовать игрока. Для этого создайте обработчик события нажатия на кнопку. В нем пишите:
   say(0);
   n:=random(100);
   c:=0;

   В переменную n мы заносим случайное число, которое должен отгадать игрок. Переменная с счетчик попыток. Эти переменные должны быть глобальными, потому что мы их будем использовать в нескольких процеДypaх и обработчиках. Объявите процедуру глобальной в разделе var:
   n:integer;
   c:integer;

   Теперь игрок вводит свой вариант ответа в поле Edit1 и нажимает кнопку Button4. В ее обработчике мы должны сравнить вариант игрока со значением в переменной n и вывести на экран соответствующую фразу. Обработчик кнопки Button4 будет выглядеть так:
   ChangeCaption;
   if strtoint(edit1.text)>n then begin
   say(3);
   c:=c+1;
   end;
   if strtoint(edit1.text)    say(2);
   c:=c+1;
   end;
   if strtoint(edit1.text)=n then begin
   say(1);
   if c    end;
   Edit1.Text:=\'\';

   Этот обработчик достаточно сложный, поэтому его разберем детально. Первая комaнда смена надписи на кнопке Button4. Потом начинаются проверки. Взгляните на первое условие. Переменная n сравнивается с конструкцией strtoint это функция, которая преобразует строковую переменную в целочисленную и возвращает эту переменную. Данной функцией мы конвертируем значение edit1.text. В нем содержится строчка, которую ввел игрок. Зачем нужно что-то конвертировать? В "Дельфи" есть несколько типов переменных, в частности, целые числа и строки. Переменные разных типов хранят данные в разных форматах и поэтому несовместимы между собой. Чтобы сравнивать две переменные разных типов, надо одну из них привести к типу другой с помощью специальных функций, таких, как strtoint.
   Если то, что ввел игрок, больше значения переменной n, то на экран с помощью процедуры say выводится информация. После этого увеличивается на единицу счетчик попыток. Следующая проверка почти такая же, с той лишь разницей, что теперь предположение игрока оказывается меньше загаданного числа.
   Самое интересное условие третье. Оно выполняется, если игрок угадал число. Ведущий сообщает об этом (комaнда say(1)). Потом мы проверяем, вдруг игрок отгадал число за рекордное количество попыток (не забывайте, что чем меньше, тем лучше, а не наоборот). Рекорд должен быть записан в глобальную переменную maxc (не забудьте ее объявить). Процедуру для загрузки значения в maxc мы напишем потом. А пока просто считайте, что в этой переменной содержится предыдущий рекорд. Если рекорд побит, мы должны запросить имя игрока, дабы записать его в таблице рекордов, и отобразить данную таблицу. Наконец, мы очищаем поле ввода (присваиваем его свойству text нулевую строку).
   Сделаем новую форму, которая будет запрашивать у игрока его имя. Щелкните на кнопку New Form, которая находится на панели инструментов. Появится новая форма. Надо ее "причесать". В верхнем левом углу разместите поле ввода, а под ним кнопку с надписью ОК. В свойство Caption формы пишите что-то вроде "Вы побили рекорд! Введите свое имя:". Уменьшите форму так, чтобы все выглядело красиво. С помощью свойств запретите изменение размеров формы, очистите содержимое поля ввода.
   Вернемся ненадолго к первой форме и обработчику события кнопки Button4. Метод формы showmodal выводит скрытую форму на экран (у любого приложения по умолчанию все формы, кроме главной, скрыты). Есть одна тонкость: этот метод выводит форму со статусом модальной, то есть как диалог. До тех пор, пока форма не закроется, пользователь не получит доступа к программе. Например, он не сможет переключиться на главное окно программы. Можно использовать столь полезную особенность.
   Стоит задуматься о том, где и как мы будем хранить данные о лучшем игроке. Создадим файл в папке игры и назовем его record.rcd. Это будет обыкновенный текстовый документ, в первой строчке которого будет храниться имя рекордсмена, а во второй число его попыток. Для начала искусственно наполните файл содержимым, например:
   Костя
   12

   Создайте форму, которая будет таблицей рекордов. Но там будет храниться всего один рекорд.
- Игра в действии
Расширить список рекордов до десяти это ваше домашнее задание. Напишите в заголовке формы "Рекорд", сделайте форму маленькой и "причешите", как мы уже поступали с другими формами. Поместите на форму компонент TLabel с палитры Standart, который является простой на дписью. В его свойстве Caption пишите "Рекордсмен". Рядом ставьте еще одну метку (Label2), но оставьте ее пустой. Сюда мы запишем имя рекордсмена. Ниже ставьте еще одну метку и пишите в ней "Его рекорд:", рядом пустую метку Label4. Ниже помещайте кнопку с надписью OK. Присвойте надписям и кнопке шрифт покрасивее. В обработчике кнопки пишите:
   modalresult:=1;
   hide;

   Modalresult нужно присвоить любое число, кроме нуля, чтобы убрать модальность.
   Где мы будем загружать данные о рекордсмене, а где мы их будем сохранять? Таблица рекордов будет появляться два раза: при нажатии на соответствующую кнопку и после появления нового рекордсмена. Не будем изобретать велосипед, и создадим только одну процедуру (а точнее, обработчик), который будем вызывать из двух разных участков кода. Переключайтесь на первую форму и дважды кликайте на кнопке Рекорды. Откроется обработчик события. Вот его полный текст:
   procedure TForm1.Button2Click(Sender: TObject);

     var
   f:textfile;
   nm:string;
   begin
   assignfile(f,extractfilepath(application.exename)+\'record.rcd\');
   reset(f);
   readln(f,nm);
   readln(f,maxc);
   closefile(f);
   form3.showmodal;
   end;

   Во-первых, мы выводим форму с рекордами на экран. Во-вторых, открываем файл record.rcd для чтения как текстовый. Потом читаем из файла первую строчку и записываем ее значение в текст метки 2 на форме рекордов. Это имя рекордсмена. Непосредственно сделать это не получится, поэтому приходится использовать вспомогательную переменную nm. В переменную maxc мы записываем значение второй строчки файла. Потом это же значение записываем в таблицу рекордов. И, наконец, закрываем файл.
   Обратите внимание, что комaндой assignfile мы как бы присваиваем файл значению переменной f. На самом деле f ссылка на файл. Теперь мы сможем обращаться к этому файлу с помощью комaнд, подобных readln. Комaнда reset открывает файл только для чтения. Если бы вы попытались записать что-то в файл, возникла бы ошибка. Почему в комaнде assignfile мы не написали просто имя открываемого файла, а добавили спереди какую-то странную конструкцию? Мы могли сделать и так, но сpaбатывала бы комaнда не всегда. Дело в том, что при старте программы текущая папка назначается ее рабочей папкой, и на нее перемещается специальный указатель файловой системы Windows. Если программа будет обращаться к какому-то файлу по относительному пути, он будет тpaктоваться относительно этого указателя.
   Все вроде бы работает. Но в процессе работы программы указатель может переместиться в другое место. Например, Windows потребуется обратиться к какому-то своему драйверу или записать что-нибудь в файл подкачки. Текущей становится другая папка, и относительный путь уже не сработает. Поэтому желательно указывать именно абсолютный путь к файлу. Application.exename возвращает полный путь до исполняемого файла программы, а комaнда extractfilepath "выкусывает" из этого пути имя файла программы, и остается только путь до папки. К этому пути мы прибавляем имя нужного файла, и получаем абсолютный путь, который работает всегда.
   Переменная maxc нам нужна еще до появления окна рекордов. С ней мы сравниваем количество попыток игрока, если он отгадал число. Мы должны загрузить значение этой переменной при запуске игры. Добавим соответствующие строки в событие OnCreate:
   procedure TForm1.FormCreate(Sender: TObject);
   var
   f:textfile;
   nm:string;
   begin
   Randomize;
   ChangeCaption;
   assignfile(f,extractfilepath(application.exename)+\'record.rcd\');
   reset(f);
   readln(f,nm);
   Form3.Label2.Caption:=nm;
   readln(f,maxc);
   Form3.label4.caption:=inttostr(maxc);
   closefile(f);
   end;

   Теперь можно вернуться к кнопке OK второй формы. Здесь мы должны сохранить в файл данные нового рекордсмена, закрыть текущую форму и вывести форму рекордов. Вот текст обработчика этой кнопки:
   procedure TForm2.Button1Click(Sender: TObject);
   var
   f:textfile;
   begin
   hide;
   modalresult:=1;
   assignfile(f,extractfilepath(application.exename)+\'record.rcd\');
   rewrite(f);
   writeln(f,Edit1.text);
   maxc:=c;
   writeln(f,maxc);
   closefile(f);
   form1.Button2Click(nil);
   end;

   Сначала мы скрываем форму и убираем ее модальность. Потом связываем файловую переменную f с файлом рекордов. С помощью комaнды rewrite мы открываем файл для записи, причем, если в файле что-то до этого было, все сотрется. Чтобы не стирать содержимое, а добавлять новые строки в конец файла, надо применять комaнду append. В первую строчку файла мы пишем только что введенное игроком имя, а затем присваиваем переменной maxc новый рекорд, и тут же пишем его во вторую строчку файла. Потом файл закрываем и... И эмулируем нажатие на кнопку Рекорды... на главной форме. Не удивляйтесь, такая запись вполне возможна. Ведь обработчик события это процеДypa, а значит, ее несложно вызвать. Что мы и сделали. Параметр Sender в теле обработчика мы не использовали, поэтому его можно забить универсальным объектным нулем nil. Его еще называют указателем на пустоту.
   Сохраните проект и две только что созданные формы, и запустите компиляцию. "Дельфи" несколько раз спросит разрешения добавить один модуль в раздел uses другого модуля. Все время подтверждайте. Игра запустится. Можете играть.
   Когда эйфория успеха пройдет, вы заметите, что кое-что забыли. Кнопка Выход не работает. Чтобы исправить оплошность, достаточно в обработчике OnClick данной кнопки написать:
   Application.Terminate;

   Application это глобальный объект, который указывает на вашу программу. У него есть несколько полезных свойств и методов, которыми мы уже не раз пользовались. Например, ExeName и Terminate. Еще Application обpaбатывает сообщения, организует работу окон, распределяет потоки.

   Последние штрихи

   Что еще можно добавить к игре? Окошко About, где вы гордо напишете свое имя и нарисуете логотип. В игре пpaктически не проверяются действия пользователя, нет "защиты от Дypaка". Например, если ввести в Edit1 не число, а какое-нибудь слово, возникнет ошибка и игра вылетит. Поэтому вводимые игроком числа надо проверять. Нет управления последовательностью действий. Вместо того, чтобы нажать на кнопку Новая игра, игрок может сразу же нажать на кнопку Button4. Естественно, игра поведет себя неправильно. Может повредиться файл рекордов, опять возникнет ошибка. Все это, конечно, мелочи, но именно из таких мелочей складывается хорошее отношение пользователей к программистам и компании, выпустившей игру.
   * * *

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


Горячая линия: игрострой

24 часа в сутки вопросы по созданию, модифицированию и вскрытию игр принимаются на адрес gamedev@igromania.ru и по SMS на короткий номер 1121 с префиксом #dev (в начале сообщения печатаете слово #dev, а затем, через пробел, сам вопрос). Стоимость…|Игромания...

18 04 2024 4:29:37

Игровые редакторы

Завоевание Америки * Command & Conquer: Generals * Highland Warriors (Горцы) * Impossible Creatures * MechWarrior 4: Mercen...

17 04 2024 19:38:55

Warhammer и Warhammer 40 000. Русское издание

многие из этих книг переводили и раньше — как энтузиасты, так и российские распространители. Но такие переводы были зачастую несистематизированы и не могли похвастаться подобающим уровнем печати. Теперь на смену черно-белым, буд...

16 04 2024 12:17:41

Говорящая кнопка. Исследование лингвистических возможностей клавиатуры BTC 8180

"...Апологет нового времени - компания BTC. Именно ее инженеры первыми придумали разместить микрофон на клавиатуре, а заодно и снабдить ее всеми подобающими кнопками для осуществления процесса общения с компьютером.....

15 04 2024 21:28:31

Puppeteer

«…Puppeteer тpaктует выражение «весь мир — театр» буквально, игра рассказывает историю в рамках кукольной сцены со всеми вытекающими. Экран обрамляет пышный занавес, закадровый рассказчик бодро комментирует происходящее, из зала время от времени доносятся...

14 04 2024 2:52:10

5 крутейших боссов Borderlands 3

Серия Borderlands известна не только огромным арсеналом оружия, юмором и богатой вселенной, но и битвами с боссами. Для третьей части разработчики даже создали отдельную комaнду внутри студии, которая занималась исключительно дизайном крутейших…|Игромания...

13 04 2024 0:45:30

Горячая линия: игры

Задать нам вопрос можно письмом на games@igromania.ru или смской на номер 1121. Сначала вводите слово #games и только потом — текст самого сообщения Мнимое превосходство японцев в сюжетных играх обычно подкрепляют примерами в лице…|Игромания...

12 04 2024 9:51:25

Sniper: Ghost Warrior 2

За польской студией City Interactive прочно закрепилась слава разработчика второго сорта. И если созданные ею квесты еще удерживаются в рамках приличий, то бесконечные Terrorist Takedown и Code of Honor не выдерживают никакой критики. Пес-призpaк На…|Игромания...

11 04 2024 7:18:43

Skylanders SWAP Force

«…Skylanders — пример правильной «конвейерной» серии. Разработчики из года в год шлифуют привычную схему, приближая ее к совершенству, добавляют новые элементы и в то же время бережно сохраняют все хорошее. Как бы вы ни относились к детским развлечениям (...

10 04 2024 7:13:52

Горячая линия: железо

“Железные” ответы на “железные” вопросы...

09 04 2024 11:12:31

Краткие статьи. Robin Hood: The Legend of Sherwood

У относительно молодой, но уже окончательно определившейся девелоперской конторы Spellbound Studios сложилась странная репутация. Всему прогрессивному человечеству они известны как авторы единственного в мире клона незабвенных Commandos — игры Desperados,...

08 04 2024 21:37:38

Красная paкета. Тестирование нового поколения видеокарт AMD Radeon HD 7000

«…AMD Radeon HD 7970 — прорыв на рынке видеокарт. Плата оказалась не только быстрее всех своих однопроцессорных конкурентов, но еще и значительно экономичнее и тише…»...

07 04 2024 11:20:11

Sol Survivor

«…Sol Survivor выступает в роли самого упертого ботаника-зубрилы, который заучил наизусть талмуд «Как сделать заурядную tower defense». Поначалу кажется, что проекту решительно нечем привлечь внимание игрока — Sol Survivor будто собран по строгой инструкц...

06 04 2024 21:57:34

Syberia 2

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

05 04 2024 17:39:36

Эксклюзив. Earthrise

с этим PvE и мутировавшей фауной мы сами натерпелись. Жил у нас в офисе метровый удав, совсем еще малыш. И как-то вечером он из своего уютного террариума сбежал. Что тут началось! Женщины, визжа, забирались с ногами на стулья, мужчины с хитрым видом гулял...

04 04 2024 11:40:29

The Elder Scrolls 5: Skyrim тонкости локализации

Комaнда локализаторов The Elder Scrolls 5: Skyrim отвечает на вопросы посетителей «Игромании.ру», которые можно было задавать в этой новости. Мы отобрали 10 самых интересных и актуальных вопросов, ответы на которые представлены…|Игромания...

03 04 2024 1:26:27

Sudden Strike: Война за ресурсы

“Час назад я прибил Раффу. Я нашел на карте маленький домик с красным крестом на крыше и сказал себе: “Здесь, в третьей палате, томится Раффа — человек недобрый и злой”. Дальше уже было дело техники. Четыре ИС-2, прикрываемые пехотой, быстренько расправил...

02 04 2024 22:10:11

Горячая линия: игры

Задать нам вопрос можно письмом на games@igromania.ru или смской на номер 1121. Сначала вводите слово #games и только потом — текст самого сообщения. Стоимость одного сообщения — около трех рублей. • • •…|Игромания...

01 04 2024 8:48:57

Горячая линия: железо

Двадцать четыре часа в сутки я мысленно с вами. В остальное время со мной можно связаться, написав по адресу hotline@igromania.ru или отправив SMS на короткий номер 1121 с префиксом #hard (то есть в начале сообщения нужно ввести слово #hard и только…|Игромания...

31 03 2024 11:52:53

Жизнь замечательных разработчиков: Рон Гилберт

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

30 03 2024 13:52:18

Вердикт. Hearts of Iron II: Doomsday

Перед нами дополнение к великолепной глобальной стратегии Hearts of Iron II, известной в России как «День Победы 2». Этого аддона с нетерпением ждали, пожалуй, все фанаты игры. Разработчики обещали учесть в нем все-все-все их пожелания, а такж...

29 03 2024 5:45:48

Во что поиграть в декабре: Cyberpunk 2077, Twin Mirror, Immortals Fenyx Rising, Haven

Этот безумный год наконец-то подходит к концу — однако его последний месяц обещает быть не менее странным. Декабрь забит релизами, но лишь наполовину: последние две недели просто пустуют. Впрочем, на то есть веская причина. Итак, начнём.…|Игромания...

28 03 2024 19:51:52

Превью Warhammer 40,000: Inquisitor Martyr. Святая инквизиция!

У Warhammer 40,000: Inquisitor — Martyr от венгерской студии Neocore Games большие амбиции. Галактика, меняющаяся в результате действий игрока. Внушительный арсенал из цепных мечей и всевозможных болтеров, давно знакомых поклонникам…|Игромания...

27 03 2024 6:29:54

Руководство и прохождение по "Ведьмак"

Бывают игры, от которых не ждешь ничего. Бывают и те, что обречены стать если не шедевром, то «хитом». Чаще всего просто надеешься, что «каждый исполнит свой долг» и в результате получится что-то достойное.А изредка встречаются такие игры, которых боишь...

26 03 2024 20:52:28

Frontlines: Fuel of War

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

25 03 2024 20:58:52

Краткие обзоры. Extreme PaintBrawl 4

Подчас диву даешься, какие игры добираются до четвертых частей! Впрочем, если взглянуть на название, то все становится на свои места. Paintball на Западе — не развлечение для избранных, а вполне обычный способ убить время и получить от этого удовольствие....

24 03 2024 15:16:32

Краткие обзоры. Локализация. Скорая помощь 2

Каждый ребенок хоть раз да играл "в доктора". Для взрослого человека это уже, прямо скажем, неприлично — но поиграть иногда все равно хочется. Для всех желающих ощутить, что это такое — ответственность за чужую жизнь, — Legacy Interactive выпустила про...

23 03 2024 12:26:57

Руководство и прохождение по "Fable: The Lost Chapters"

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

22 03 2024 3:43:27

Даты выхода локализаций и отечественных проектов

Перед вами обновленный список отечественных локализаций и проектов.Данная таблица состоит из двух разделов, которые, в свою очередь, делятся на подразделы:1) ПОСТУПИЛИ В ПРОДАЖУ. Сюда помещаются все те игры, которые недавно поступили в продажу и котор...

21 03 2024 1:44:58

Dungeons & Dragons: Neverwinter

«…Обычно в MMO не принято даже вчитываться в задания — обращают внимание лишь на количество монстров, которых предстоит убить. Но Cryptic Studios сумели грамотно схитрить, позволив игрокам создавать свои собственные приключения с помощью редактора под наз...

20 03 2024 10:39:27

Руководство и прохождение по "Battlefield Heroes"

Battlefield Heroes — самая неоднозначная игра в серии. С одной стороны, встряска визуального стиля серии действительно удалась, а новая динамика очень хороша и увлекательна. С другой — в знакомую нам формулу Battlefield не привнесено ничего нового, а крас...

19 03 2024 8:26:24

Обзоры игр

Playmoabile.ru    Ice Hockey 2003    Жанр: Спортивный симулятор    Хоккей на экране мобильного телефона? Да еще какой — среди стран наличествуют даже Россия и…|Игромания...

18 03 2024 19:13:11

Gothic II

"...Первая часть Gothic была именно той игрой, на коm...

17 03 2024 4:41:40

Обзор фильма «Джумaнджи: Новый уровень». Деды выживали

Когда четыре года назад Sony объявила, что готовит мягкий перезапуск «Джумaнджи», реакция пользователей сети оказалась довольно предсказуемой: преимущественно это был гнев. После cмepти Робина Уильямса, на котором, по сути, и…|Игромания...

16 03 2024 20:25:23

Вердикт. Пункт назначения: Берлин (Beyond Normandy: Assignment Berlin)

“Пункт назначения: Берлин” — это игра, о которой можно с полным правом сказать “так плохо, что уже хорошо”. Ругать этот так называемый “продукт” даже как-то и неудобно: ну разве можно упрекать трэш в том, что он трэш? Тем более такой трэ...

15 03 2024 2:16:53

Гайд: Как попасть на Инадзуму в Genshin Impact 2.0

Со свежим апдейтом у игроков Genshin Impact появилась возможность посетить новый регион. В этом гайде рассказываем, как поскорее отправиться исследовать острова Инадзумы, если вы этого ещё не сделали.   Как открыть квест Инадзумы Чтобы…|Игромания...

14 03 2024 10:15:24

Обзор Sekiro: Shadows Die Twice. Величайший синоби

Sekiro: Shadows Die Twice — это первый на моей памяти проект FromSoftware, который сообщество восприняло со здоровой долей скепсиса. Не без оптимизма, но с куда большей осторожностью, чем обычно. Всё же Миядзаки-сан и его комaнда…|Игромания...

13 03 2024 20:11:19

Форум разработчиков: игровые редакторы

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

12 03 2024 13:29:19

3D это просто. Hash Animation Master

с одной стороны, сочетает в себе возможности крупных 3D-утилит вроде 3DS Max, позволяя создавать все этапы анимации, с другой — достаточно простой, чтобы его за несколько месяцев мог освоить пользователь, вообще никогда не имевший дела с подобными програм...

11 03 2024 6:55:10

Гайд: Коды от всех дверей и сейфов в Hitman 3

В Hitman III за закрытыми дверями скрываются альтернативные пути убийства жертвы, а в сейфах можно найти различные полезные предметы, которые помогут Агенту 47 осуществить задуманное. Комбинации в игре фиксированные и будут одинаковыми у всех игроков…|Игромания...

10 03 2024 3:33:40

Far West

"...Дело достойно настоящего мужчины — это не m...

09 03 2024 17:16:20

Обзор Kingdom Hearts III. Сказка для не самых маленьких

Есть сказки для детей. Есть сказки для взрослых. Есть сказки многослойные — интересные и тем и другим. А есть Kingdom Hearts III, и её сложно отнести к какой-либо из этих категорий. Разве что изобрести новую: для продвинутых детей (потому…|Игромания...

08 03 2024 14:17:35

Первый взгляд. SOLAR

Рассудив, что первый блин всегда выходит комом, Brat Designs плюнула на доведение до ума своего дебютного проекта Breed и объявила о разработке сразу двух новых игр — Toon Army и SOLAR. Но если Breed создавался по образу и подобию...

07 03 2024 9:49:45

Второе измерение. Тестирование моноблочного компьютера HP TouchSmart 610-1030ru

«…Еще одно применение моноблоку нашел один из наших дизайнеров. Увидев 23-дюймовый «планшет», он тут же спросил, установлен ли на него Photoshop, и, получив отрицательный ответ, два часа провел в Paint, рисуя милые узорчики и кораблики. Рисовать пальцами...

06 03 2024 18:56:28

Muтант Voкала. MP3-плеер Creative MuVo

Creative MuVo — это миниатюрный цифровой плеер, объединяющий в себе как возможности воспроизведения аудиоформатов MP3 и WMA, так и свойства переносного флэш-носителя. Одна из самых необычных и эксклюзивных идей компании Creative...

05 03 2024 17:37:16

Чужой. Биология совершенного организма

Чужие, или ксеноморфы, из одноименной серии фильмов — пожалуй, самые страшные инопланетные монстры в истории кино. Страшные, потому что продуманные. Сценарист Дэн О’Бэннон и художник Ганс Руди Гигер детально проработали биологию…|Игромания...

04 03 2024 9:25:54

Windows NT. Очевидное и невероятное

Что значит для вас магическое сочетание двух букв — NT? Если ничего или лишь смутное воспоминание, что ваша операционка "вроде бы на этом ядре", то данная статья приоткроет завесу тайны. Под Windows NT подразумевается все семейство операционных систем на...

03 03 2024 16:24:52

Движки для веб-галерей

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

02 03 2024 22:29:20

Новинки рынка

RoverPC S1 (помесь мобильника с КПК) * LOAS USB Vacuum cleaner (USB-пылесос) * Lokur Nowem (прозрачный корпус) * Digitex FMSD-0256 (продвинутая флэшка) * Mitsumi DW 7872 TE (всеядный DVD-привод) * Asotel Omni 56K Midi (голосовой факс-модем)...

01 03 2024 9:24:37

Обзор сериала «Локи». Бог самообмана

Год простоя Marvel решила компенсировать ковровой бомбардировкой. Прямо сейчас за каждый цент сражается «Чёрная Вдова», через полтора месяца нагрянет «Шан-Чи», потом выйдут «Вечные», а там…|Игромания...

29 02 2024 6:56:29

Еще:
Игры -1 :: Игры -2 :: Игры -3 :: Игры -4 :: Игры -5 :: Игры -6 :: Игры -7 :: Игры -8 :: Игры -9 :: Игры -10 :: Игры -11 :: Игры -12 :: Игры -13 :: Игры -14 :: Игры -15 :: Игры -16 :: Игры -17 :: Игры -18 :: Игры -19 :: Игры -20 :: Игры -21 :: Игры -22 :: Игры -23 :: Игры -24 :: Игры -25 :: Игры -26 :: Игры -27 :: Игры -28 :: Игры -29 :: Игры -30 :: Игры -31 :: Игры -32 :: Игры -33 :: Игры -34 :: Игры -35 :: Игры -36 :: Игры -37 :: Игры -38 :: Игры -39 :: Игры -40 :: Игры -41 :: Игры -42 :: Игры -43 :: Игры -44 :: Игры -45 :: Игры -46 :: Игры -47 :: Игры -48 :: Игры -49 :: Игры -50 :: Игры -51 :: Игры -52 :: Игры -53 :: Игры -54 ::