evg 31.07.2010 01:48
Linux Games — Обзор Seven Kingdoms:Ancient Adversaries
Seven Kingdoms - стратегия реального времени(RTS), созданная Тревором Чаном из Enlight в 1997 году. В августе 2009-ого отдана сообществу на правах GPL.Повидал я много RTS: одни сводились к постройке войска и «выносе» противника, другие брали за основу торговлю или строительство. Но не одна не пыталась соединить все это вместе и добавить сюда науку и шпионаж, лояльность населения и экономику. Нет, конечно, есть AoE и иже с ними со всей этой структурой, но реализация «второстепенных» компонентов — тривиальная.
Игра не получила той популярности, которой заслуживала. Может быть причиной стала графика. Настоятельно рекомендую, тем кто хочет «свистелок и рюшечек» - дальше не читать. Или излишняя сложность для новичка(пойди, разберись со всеми этими компонентами). Те же кто смог постичь суть оценили ее с достоинство — оценки игроков тому подтверждение (для меня это стало сюрпризом — на ag.ru 80%).
Начнем со сборки: качаем исходники и дата-архив, распаковываем и:
1 |
|
для сборки требуется sdl и openal
Потом распаковываем архив с датой, копируем туда 7kaa и запускаем его:
1 |
|
Gameplay
Как писалось выше в 7K ушли от классического стиля RTS, по-этому выделю интересные моменты игрового процесса.
В игре 10 королевств(7 из основной + 3 добавлены в аддон Ancient Adversaries): японцы, китайцы, майя, персы, викинги , греки, норманны, египтяне, моголы(индусы) ,зулусы. Каждое королевство имеет свой набор юнитов. А также для каждого своя супер постройка с супер юнитом(Fryhtans)
Торговля, дипломатия и шпионаж неотъемлемые составляющие игрового процесса: караван отправляется на чужой рынок, только если у вас есть договор с этим противником, маршрут каждого каравана или задание каждому шпиону отдается отдельно после выбора цвета,расы под которою он маскируется.
Лояльность. Вы не можете напасть на союзника, но можете изменить лояльность его юнитов к Вам. Если лояльность Вашего юнита будет низкой, то он «переметнется» к противнику или союзнику. Соответственно, захват городов — это не процесс «тупого налома», а улучшение отношения местных жителей разных рас к Вам.
Ресурсы. Основных два: золото и пища. Золото зарабатывается при торговле или захвате чего-либо(город или логово). Торговать можно рудой добытой в рудниках или товарами - руда прошедшая обработку на заводе. Пища производится городом.
Здания. Каждомый тип зданий соответствует своему направлению:
Город. В городе живут люди:) Они могут работать в одном из зданий или быть крестьянами — без специализации.
Форт. Служит для прокачки 8 воинов. В форте должен находиться генерал или король
Рудник. В нем добывается руда, которая продавается на рынке или идет дольше на завод.Руду добывают до 8 человек.
Завод. Производит конечный товар, идущий на рынок приносящий золото. 8 чел.
Рынок. Основной приход золота. Не требует рабочих
Научная башня. В ней ведется разработке новой боевой техники и кораблей. 8 чел.
Порт. Строятся боевые, транспортные и торговые суда. Не требует рабочих
Военных завод. Строит боевые машины, разработанные в научной башне. 8 чел.
Трактир. Служит для найма наемников.
Все юниты имеют свою лояльность. Рабочие при работе в одном из зданий «прокачивают» навык этого здания. Например, в рудниках рабочий улучшает навык добычи руды. У юнитов есть национальность :) То есть каждый юнит принадлежит к какой-то расе. Задача у Вас выполнить цель сценария. К примеру, уничтожить противника: не убить его, а оставить без подчиненного населения. Так что Вы строите интернациональное государство...
Писал бы еще много про геймплей, но мысли уходят далеко в нюансы. А это лишнее. Советую пройти тренировку, где подробно рассмотрены все компоненты игры, каждый урок посвящен отдельной теме.
Ну, а дальше... играть, играть и еще раз играть!
Ложка дегтя
Если вы зашли так далеко, то мелкие неудобства и проблемы не повлияют на желания «пощупать» игру. И так...
1.Управления конца 90-х: отсутствие хоткеев для строений и группировки юнитов.
2.Отсутствие мультиплеера. Он мне не нужен, но предупредить стоит
3.И... epic fail:
Слова и идеи остаются в этом посте: играть в нее или нет решать Вам.
З.Ы. 90-е — это время атмосферных игр — не час или два(Привет, ск2! Какая длинная у тебя компания!)!!!
leonike 31.07.2010 09:00 #
+ 0 -
спасибо за обзор, потекли слюнки, пошел ставить
Ай нид хелп
lameragain@lameragain-desktop:~/7$ ./configure.pl
Platform: linux32
Detecting gcc version: 4.4.3 ok
Ready to run build.pl
lameragain@lameragain-desktop:~/7$
lameragain@lameragain-desktop:~/7$ ./build.pl
Entering 'src'.
Entering 'audio/openal'.
g++ -c -g -DAMPLUS -DUSE_OPENAL -DUSE_SDL -DDEBUG -DNO_ASM -DNO_WINDOWS -I../../../include openal_audio.cpp -o openal_audio.o
build.pl: couldn't build 'cpp'. Stopping.
lameragain@lameragain-desktop:~/7$
кстати, Quit to Windows можно же найти в исходниках и наверняка поправить :)
где ихняя багзилла?
где ихняя багзилла?
lameragain@lameragain-desktop:~/7$ sudo apt-get install build-essential
password for lameragain:
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Будут установлены следующие дополнительные пакеты:
dpkg-dev g++ g++-4.4 libstdc++6-4.4-dev xz-utils
Предлагаемые пакеты:
debian-keyring debian-maintainers g++-multilib g++-4.4-multilib gcc-4.4-doc
libstdc++6-4.4-dbg libstdc++6-4.4-doc
НОВЫЕ пакеты, которые будут установлены:
build-essential dpkg-dev g++ g++-4.4 libstdc++6-4.4-dev xz-utils
обновлено 0, установлено 6 новых пакетов, для удаления отмечено 0 пакетов, и 6 пакетов не обновлено.
Необходимо скачать 7 331kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 23,9MB.
Хотите продолжить <�Д/н>? y
Получено:1 http://ru.archive.ubuntu.com/ubuntu/ lucid/main libstdc++6-4.4-dev 4.4.3-4ubuntu5 <1 491kB>
Получено:2 http://ru.archive.ubuntu.com/ubuntu/ lucid/main g++-4.4 4.4.3-4ubuntu5 <4 950kB>
Получено:3 http://ru.archive.ubuntu.com/ubuntu/ lucid/main g++ 4:4.4.3-1ubuntu1 <1 442B>
Получено:4 http://ru.archive.ubuntu.com/ubuntu/ lucid/main xz-utils 4.999.9beta+20091116-1 <228kB>
Получено:5 http://ru.archive.ubuntu.com/ubuntu/ lucid-updates/main dpkg-dev 1.15.5.6ubuntu4.1 <653kB>
Получено:6 http://ru.archive.ubuntu.com/ubuntu/ lucid/main build-essential 11.4build1 <7 278B>
Получено 7 331kБ за 7с (920kБ/c)
Выбор ранее не выбранного пакета libstdc++6-4.4-dev.
(Чтение базы данных ... на данный момент установлено 165350 файлов и каталогов.)
Распаковывается пакет libstdc++6-4.4-dev (из файла .../libstdc++6-4.4-dev_4.4.3-4ubuntu5_i386.deb)...
Выбор ранее не выбранного пакета g++-4.4.
Распаковывается пакет g++-4.4 (из файла .../g++-4.4_4.4.3-4ubuntu5_i386.deb)...
Выбор ранее не выбранного пакета g++.
Распаковывается пакет g++ (из файла .../g++_4%3a4.4.3-1ubuntu1_i386.deb)...
Выбор ранее не выбранного пакета xz-utils.
Распаковывается пакет xz-utils (из файла .../xz-utils_4.999.9beta+20091116-1_i386.deb)...
Выбор ранее не выбранного пакета dpkg-dev.
Распаковывается пакет dpkg-dev (из файла .../dpkg-dev_1.15.5.6ubuntu4.1_all.deb)...
Выбор ранее не выбранного пакета build-essential.
Распаковывается пакет build-essential (из файла .../build-essential_11.4build1_i386.deb)...
Обрабатываются триггеры для man-db ...
Настраивается пакет xz-utils (4.999.9beta+20091116-1) ...
Настраивается пакет dpkg-dev (1.15.5.6ubuntu4.1) ...
Настраивается пакет libstdc++6-4.4-dev (4.4.3-4ubuntu5) ...
Настраивается пакет g++-4.4 (4.4.3-4ubuntu5) ...
Настраивается пакет g++ (4:4.4.3-1ubuntu1) ...
update-alternatives: используется `/usr/bin/g++' для предоставления `/usr/bin/c++' (c++) в автоматический режим.
Настраивается пакет build-essential (11.4build1) ...
lameragain@lameragain-desktop:~/7$ ./build.pl
Entering 'src'.
Entering 'audio/openal'.
g++ -c -g -DAMPLUS -DUSE_OPENAL -DUSE_SDL -DDEBUG -DNO_ASM -DNO_WINDOWS -I../../../include openal_audio.cpp -o openal_audio.o
In file included from ../../../include/surface.h:31,
from ../../../include/OVGABUF.h:29,
from ../../../include/OBUTTON.h:28,
from ../../../include/OBOX.h:32,
from openal_audio.cpp:27:
../../../include/surface_sdl.h:28:21: error: SDL/SDL.h: Нет такого файла или каталога
In file included from openal_audio.cpp:33:
../../../include/openal_audio.h:26:19: error: AL/al.h: Нет такого файла или каталога
../../../include/openal_audio.h:27:20: error: AL/alc.h: Нет такого файла или каталога
In file included from ../../../include/surface.h:31,
from ../../../include/OVGABUF.h:29,
from ../../../include/OBUTTON.h:28,
from ../../../include/OBOX.h:32,
from openal_audio.cpp:27:
../../../include/surface_sdl.h:33: error: ISO C++ forbids declaration of ‘SDL_Surface’ with no type
../../../include/surface_sdl.h:33: error: expected ‘;’ before ‘*’ token
../../../include/surface_sdl.h:39: error: expected ‘)’ before ‘*’ token
../../../include/surface_sdl.h:59: error: ‘SDL_Color’ has not been declared
../../../include/surface_sdl.h: In member function ‘char* SurfaceSDL::buf_ptr()’:
../../../include/surface_sdl.h:42: error: ‘surface’ was not declared in this scope
../../../include/surface_sdl.h: In member function ‘char* SurfaceSDL::buf_ptr(int, int)’:
../../../include/surface_sdl.h:43: error: ‘surface’ was not declared in this scope
../../../include/surface_sdl.h: In member function ‘int SurfaceSDL::buf_pitch()’:
../../../include/surface_sdl.h:44: error: ‘surface’ was not declared in this scope
../../../include/surface_sdl.h: In member function ‘int SurfaceSDL::buf_size()’:
../../../include/surface_sdl.h:45: error: ‘surface’ was not declared in this scope
../../../include/surface_sdl.h: In member function ‘int SurfaceSDL::buf_width()’:
../../../include/surface_sdl.h:46: error: ‘surface’ was not declared in this scope
../../../include/surface_sdl.h: In member function ‘int SurfaceSDL::buf_height()’:
../../../include/surface_sdl.h:47: error: ‘surface’ was not declared in this scope
../../../include/surface_sdl.h: In member function ‘void SurfaceSDL::set_buf_ptr(char*)’:
../../../include/surface_sdl.h:52: error: ‘surface’ was not declared in this scope
../../../include/surface_sdl.h: In member function ‘void SurfaceSDL::set_default_buf_ptr()’:
../../../include/surface_sdl.h:53: error: ‘surface’ was not declared in this scope
In file included from openal_audio.cpp:33:
../../../include/openal_audio.h: At global scope:
../../../include/openal_audio.h:40: error: ‘ALuint’ does not name a type
../../../include/openal_audio.h:129: error: ISO C++ forbids declaration of ‘ALCdevice’ with no type
../../../include/openal_audio.h:129: error: expected ‘;’ before ‘*’ token
../../../include/openal_audio.h:130: error: ISO C++ forbids declaration of ‘ALCcontext’ with no type
../../../include/openal_audio.h:130: error: expected ‘;’ before ‘*’ token
openal_audio.cpp: In function ‘bool check_al(int)’:
openal_audio.cpp:53: error: ‘ALenum’ was not declared in this scope
openal_audio.cpp:53: error: expected ‘;’ before ‘err’
openal_audio.cpp:54: error: ‘AL_NO_ERROR’ was not declared in this scope
openal_audio.cpp:57: warning: cannot pass objects of non-POD type ‘class Error’ through ‘...’; call will abort at runtime
openal_audio.cpp: At global scope:
openal_audio.cpp:82: error: variable or field ‘set_source_panning’ declared void
openal_audio.cpp:82: error: ‘ALuint’ was not declared in this scope
openal_audio.cpp:82: error: expected primary-expression before ‘int’
openal_audio.cpp:92: error: variable or field ‘set_source_volume’ declared void
openal_audio.cpp:92: error: ‘ALuint’ was not declared in this scope
openal_audio.cpp:92: error: expected primary-expression before ‘int’
openal_audio.cpp:103: error: ‘ALenum’ does not name a type
openal_audio.cpp: In constructor ‘OpenALAudio::OpenALAudio()’:
openal_audio.cpp:166: error: ‘class OpenALAudio’ has no member named ‘al_context’
openal_audio.cpp:167: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp: In member function ‘int OpenALAudio::init_wav()’:
openal_audio.cpp:209: error: ‘ALCint’ was not declared in this scope
openal_audio.cpp:209: error: expected ‘;’ before ‘size’
openal_audio.cpp:211: error: ‘ALCint’ cannot appear in a constant-expression
openal_audio.cpp:211: error: template argument 1 is invalid
openal_audio.cpp:211: error: template argument 2 is invalid
openal_audio.cpp:211: error: invalid type in declaration before ‘;’ token
openal_audio.cpp:217: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:217: error: ‘alcOpenDevice’ was not declared in this scope
openal_audio.cpp:218: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:224: error: request for member ‘push_back’ in ‘attributes’, which is of non-class type ‘int’
openal_audio.cpp:226: error: ‘class OpenALAudio’ has no member named ‘al_context’
openal_audio.cpp:226: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:226: error: invalid types ‘int’ for array subscript
openal_audio.cpp:226: error: ‘alcCreateContext’ was not declared in this scope
openal_audio.cpp:227: error: ‘class OpenALAudio’ has no member named ‘al_context’
openal_audio.cpp:229: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:229: error: ‘alcGetError’ was not declared in this scope
openal_audio.cpp:233: error: ‘class OpenALAudio’ has no member named ‘al_context’
openal_audio.cpp:233: error: ‘alcMakeContextCurrent’ was not declared in this scope
openal_audio.cpp:235: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:235: error: ‘alcGetError’ was not declared in this scope
openal_audio.cpp:239: error: request for member ‘clear’ in ‘attributes’, which is of non-class type ‘int’
openal_audio.cpp:240: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:240: error: ‘ALC_ATTRIBUTES_SIZE’ was not declared in this scope
openal_audio.cpp:240: error: ‘size’ was not declared in this scope
openal_audio.cpp:240: error: ‘alcGetIntegerv’ was not declared in this scope
openal_audio.cpp:241: error: request for member ‘resize’ in ‘attributes’, which is of non-class type ‘int’
openal_audio.cpp:242: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:242: error: ‘ALC_ALL_ATTRIBUTES’ was not declared in this scope
openal_audio.cpp:243: error: request for member ‘size’ in ‘attributes’, which is of non-class type ‘int’
openal_audio.cpp:243: error: invalid types ‘int’ for array subscript
openal_audio.cpp:249: error: invalid types ‘int’ for array subscript
openal_audio.cpp:252: error: invalid types ‘int’ for array subscript
openal_audio.cpp:254: error: ‘ALC_MONO_SOURCES’ was not declared in this scope
openal_audio.cpp:255: error: invalid types ‘int’ for array subscript
openal_audio.cpp:256: error: invalid types ‘int’ for array subscript
openal_audio.cpp:258: error: ‘ALC_STEREO_SOURCES’ was not declared in this scope
openal_audio.cpp:259: error: invalid types ‘int’ for array subscript
openal_audio.cpp:260: error: invalid types ‘int’ for array subscript
openal_audio.cpp: In member function ‘void OpenALAudio::deinit_wav()’:
openal_audio.cpp:279: error: ‘class OpenALAudio’ has no member named ‘al_context’
openal_audio.cpp:281: error: ‘class OpenALAudio’ has no member named ‘al_context’
openal_audio.cpp:281: error: ‘alcDestroyContext’ was not declared in this scope
openal_audio.cpp:282: error: ‘class OpenALAudio’ has no member named ‘al_context’
openal_audio.cpp:285: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:287: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp:287: error: ‘alcCloseDevice’ was not declared in this scope
openal_audio.cpp:288: error: ‘class OpenALAudio’ has no member named ‘al_device’
openal_audio.cpp: In member function ‘int OpenALAudio::play_long_wav(InputStream*, const DsVolume&)’:
openal_audio.cpp:527: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:527: error: ‘set_source_panning’ was not declared in this scope
openal_audio.cpp:528: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:528: error: ‘set_source_volume’ was not declared in this scope
openal_audio.cpp: In member function ‘virtual DsVolume OpenALAudio::get_loop_wav_volume(int)’:
openal_audio.cpp:656: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:656: error: ‘AL_GAIN’ was not declared in this scope
openal_audio.cpp:656: error: ‘alGetSourcef’ was not declared in this scope
openal_audio.cpp:657: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:657: error: ‘AL_POSITION’ was not declared in this scope
openal_audio.cpp:657: error: ‘alGetSourcefv’ was not declared in this scope
openal_audio.cpp: In member function ‘virtual void OpenALAudio::yield()’:
openal_audio.cpp:691: error: ‘ALint’ was not declared in this scope
openal_audio.cpp:691: error: expected ‘;’ before ‘state’
openal_audio.cpp:702: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:702: error: ‘AL_SOURCE_STATE’ was not declared in this scope
openal_audio.cpp:702: error: ‘state’ was not declared in this scope
openal_audio.cpp:702: error: ‘alGetSourcei’ was not declared in this scope
openal_audio.cpp:703: error: ‘AL_STOPPED’ was not declared in this scope
openal_audio.cpp: In member function ‘virtual void OpenALAudio::set_wav_volume(int)’:
openal_audio.cpp:816: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:816: error: ‘AL_GAIN’ was not declared in this scope
openal_audio.cpp:816: error: ‘alGetSourcef’ was not declared in this scope
openal_audio.cpp:817: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:817: error: ‘alSourcef’ was not declared in this scope
openal_audio.cpp: In member function ‘virtual void OpenALAudio::volume_long_wav(int, const DsVolume&)’:
openal_audio.cpp:857: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:857: error: ‘set_source_volume’ was not declared in this scope
openal_audio.cpp:858: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:858: error: ‘set_source_panning’ was not declared in this scope
openal_audio.cpp: In constructor ‘OpenALAudio::StreamContext::StreamContext()’:
openal_audio.cpp:866: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp: In destructor ‘OpenALAudio::StreamContext::~StreamContext()’:
openal_audio.cpp:876: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:879: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:879: error: ‘alDeleteSources’ was not declared in this scope
openal_audio.cpp: In member function ‘bool OpenALAudio::StreamContext::init(AudioStream*)’:
openal_audio.cpp:885: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:888: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:888: error: ‘alGenSources’ was not declared in this scope
openal_audio.cpp: In member function ‘bool OpenALAudio::StreamContext::stream_data(int)’:
openal_audio.cpp:973: error: ‘ALenum’ was not declared in this scope
openal_audio.cpp:973: error: expected ‘;’ before ‘format’
openal_audio.cpp:974: error: ‘ALuint’ was not declared in this scope
openal_audio.cpp:974: error: expected ‘;’ before ‘buf’
openal_audio.cpp:975: error: ‘ALint’ was not declared in this scope
openal_audio.cpp:975: error: expected ‘;’ before ‘state’
openal_audio.cpp:980: error: ‘format’ was not declared in this scope
openal_audio.cpp:980: error: ‘openal_format’ was not declared in this scope
openal_audio.cpp:985: error: ‘buf’ was not declared in this scope
openal_audio.cpp:989: error: ‘alGenBuffers’ was not declared in this scope
openal_audio.cpp:997: error: expected ‘;’ before ‘processed’
openal_audio.cpp:999: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:999: error: ‘AL_BUFFERS_PROCESSED’ was not declared in this scope
openal_audio.cpp:999: error: ‘processed’ was not declared in this scope
openal_audio.cpp:999: error: ‘alGetSourcei’ was not declared in this scope
openal_audio.cpp:1004: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:1004: error: ‘alSourceUnqueueBuffers’ was not declared in this scope
openal_audio.cpp:1037: error: ‘alBufferData’ was not declared in this scope
openal_audio.cpp:1041: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:1041: error: ‘alSourceQueueBuffers’ was not declared in this scope
openal_audio.cpp:1048: error: ‘buf’ was not declared in this scope
openal_audio.cpp:1048: error: ‘alDeleteBuffers’ was not declared in this scope
openal_audio.cpp:1052: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:1052: error: ‘AL_SOURCE_STATE’ was not declared in this scope
openal_audio.cpp:1052: error: ‘state’ was not declared in this scope
openal_audio.cpp:1052: error: ‘alGetSourcei’ was not declared in this scope
openal_audio.cpp:1054: error: ‘AL_PLAYING’ was not declared in this scope
openal_audio.cpp:1056: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:1056: error: ‘alSourcePlay’ was not declared in this scope
openal_audio.cpp:1063: error: ‘buf’ was not declared in this scope
openal_audio.cpp:1064: error: ‘alDeleteBuffers’ was not declared in this scope
openal_audio.cpp: In member function ‘void OpenALAudio::StreamContext::stop()’:
openal_audio.cpp:1072: error: ‘ALint’ was not declared in this scope
openal_audio.cpp:1072: error: expected ‘;’ before ‘count’
openal_audio.cpp:1073: error: ‘ALuint’ was not declared in this scope
openal_audio.cpp:1073: error: expected ‘;’ before ‘buf’
openal_audio.cpp:1075: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:1077: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:1077: error: ‘alSourceStop’ was not declared in this scope
openal_audio.cpp:1078: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:1078: error: ‘AL_BUFFERS_PROCESSED’ was not declared in this scope
openal_audio.cpp:1078: error: ‘count’ was not declared in this scope
openal_audio.cpp:1078: error: ‘alGetSourcei’ was not declared in this scope
openal_audio.cpp:1082: error: ‘class OpenALAudio::StreamContext’ has no member named ‘source’
openal_audio.cpp:1082: error: ‘buf’ was not declared in this scope
openal_audio.cpp:1082: error: ‘alSourceUnqueueBuffers’ was not declared in this scope
openal_audio.cpp:1083: error: ‘alDeleteBuffers’ was not declared in this scope
build.pl: couldn't build 'cpp'. Stopping.
Интересная была игрушка в девяностых, а сейчас-то зачем раскапывать?
А зачем закапывать? Классная игрушка. И графика нормальная, годная. Как раз вспомнить молодость.
классная, была, и ее уже проходили. это все равно что играть в Дюну - шедевр, но зачем?
Хм... Ну... возможно. Правда я не играл и, вроде бы не собираюсь. Но, судя по всему, будет хит.
Но старкрафт 2 - нечастое исключение, которое готовили, между прочим, около 10 лет. Это тебе не фифы клепать каждый год или нидфоспыды "с новой графикой и сюжетом". Старкарфт 2, Фаллаут 3й. Много ли еще таких игр найдется, которые можно назвать действительно хитами и в которые с удовольствием будут играть олдфаги лет через 10-20.
Но старкрафт 2 - нечастое исключение, которое готовили, между прочим, около 10 лет. Это тебе не фифы клепать каждый год или нидфоспыды "с новой графикой и сюжетом". Старкарфт 2, Фаллаут 3й. Много ли еще таких игр найдется, которые можно назвать действительно хитами и в которые с удовольствием будут играть олдфаги лет через 10-20.
Для поклонников AoE cоветую глянуть "Rise of Nations", под вайном идет идеально и что немаловажно, игра доооолгая.
играл, неплохая игра, но вторая эпоха мне больше нравится, да и под вайном прекрасно идет
Это Стар Крафт 2 со своей ну-оче-е-е-нь длинной компанией. Имхо, все вкладывают в мултиплеер и только. Классно? Да, но коротко!
в ubuntu 10.04 64-bit понадобится еще установить:
sudo apt-get install g++-multilib
И не пойму, почему epic fail? Замечательнейшая, прекрасная винрарнейшая таргзипнейшая графика. Уже собираю.
Извеняюсь, не подумал в три ночи про стрелочки. 8.00 запостил и уехал на дачу
Думаю, можно вытащить из неё текст и воспользоваться услугами translated.by
Просто я не дружу с английским, так что для меня это печально. Понятно, что это не шутер какой-нибудь вроде кваки, и без знания английского мне не осилить эту игру:)
Вот, смотри на обзор:
Seven Kingdoms
брал датафайлы с локализованной игры. Качал с рутреккера (торен сру бывший). Как видно по скринам, всё отлично завелось линуксовыми бинарниками, собранными из GPL-исходников.
Seven Kingdoms
брал датафайлы с локализованной игры. Качал с рутреккера (торен сру бывший). Как видно по скринам, всё отлично завелось линуксовыми бинарниками, собранными из GPL-исходников.
да, описание действительно хорошее там! Жаль, автор больше ничего не писал :( я бы за такие обзоры даже деньги платил )))