Форум Игромании
 
Регистрация
Справка
Пользователи Календарь Сообщения за день

Ответ
 
Опции темы
Старый 29.04.2008, 20:08   #681
Новичок
 
Регистрация: 17.04.2008
Сообщений: 2
Репутация: -5 [+/-]
Help please!!! НЕЗНАЮ как сделать чтобы WEUnlimited не говорил "нет названия функции" (Эт на добавленых действиях!)
Jok3r вне форума  
Ответить с цитированием
Старый 30.04.2008, 15:02   #682
Новичок
 
Регистрация: 13.04.2008
Сообщений: 2
Репутация: 0 [+/-]
как я понял для любителя халявы лучше irrlicht'а не найти .. так ведь?
и ещё вопрос а где к нему мануал русский найти?
ЗЫ: надоели уже отвечать - учи англиский.. учи англиский (ну на минимальном уровне я его знаю...... но прочитать инструкция до конца просто не хватает сил...)
ЗЫ2:ответ поищи в гугле тож глупый (а ведь мне так уже отвечали....)
Завуалированный мат и обсцентная лексика теперь строжайше запрещены.

Последний раз редактировалось pokibor; 30.04.2008 в 15:45.
VIRTUSS вне форума  
Ответить с цитированием
Старый 30.04.2008, 15:44   #683
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от VIRTUSS Посмотреть сообщение
как я понял для любителя халявы лучше irrlicht'а не найти .. так ведь?
Смотря что превносить в критерии "лучше". Освоить Irrlicht, как мне кажется, действительно проще всего.
Цитата:
Сообщение от VIRTUSS Посмотреть сообщение
и ещё вопрос а где к нему мануал русский найти?
Нигде. Где-то я видел часть примеров с переведёнными комментами, и всё.
Цитата:
Сообщение от VIRTUSS Посмотреть сообщение
ЗЫ: надоели уже отвечать - учи англиский.. учи англиский (ну на минимальном уровне я его знаю...... но прочитать инструкция до конца просто не хватает сил...)
В программировании без усердия и знания английского всё равно делать нечего. Все мануалы на свете в переводе не найдёшь, а если уж вышел какой-то новый продукт - только на английском и остаётся читать. Учите сейчас, потом поздно будет.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 01.05.2008, 18:31   #684
Новичок
 
Аватар для WereWolf13
 
Регистрация: 12.04.2008
Адрес: Псих больница №12, я-торт
Сообщений: 26
Репутация: 2 [+/-]
Цитата:
Сообщение от pokibor Посмотреть сообщение
А какие вообще форматы понимает Quest3D?

3ds он импортирует(покрайней мере в импорте его видно). Даже написано, что модель Успешна конвертнута, но я все обшарил. Ниследа от модели нет. Эх, а такая задумка игры была! Сюжет тема! Да и ничего подобного в игровой индустрии пока нет, но у меня просто руки спускаются до колен. Хоть к редакции Игромании обращайся! Но разве меня одного они будут делать видео уроки или, хотя бы, статьи? Может какой-нибудь другой неслабый и недорогой движок посоветуете?
WereWolf13 вне форума  
Ответить с цитированием
Старый 01.05.2008, 18:45   #685
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
WereWolf13
Выше написано слово "Irrlicht". Видно?
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 03.05.2008, 15:46   #686
Юзер
 
Регистрация: 02.01.2008
Адрес: &GameDev
Сообщений: 188
Репутация: 17 [+/-]
залез на сайт майкрософт, там увидел такой инструмент, как DarkGDK, я так понял,
это ставитс на Visual C++ express и используется для создания игр.
объясните кто знает, что это такое, и стоит ли обратить на него внимание при выборе движка,
короче дайте инфу, что это за птиц такой))

Цитата:
Сообщение от GRT-unit Посмотреть сообщение
Visual C++ express
кстати, как функционально ограничена эта версия vc++, можно ли на ней создавать коммерческие проекты?
стоит ли ее ставить или отдать предпочтение пиратской Visual Studio Professional?

Последний раз редактировалось The Vork; 03.05.2008 в 16:09.
The Vork вне форума  
Отправить сообщение для The Vork с помощью ICQ Отправить сообщение для The Vork с помощью Skype™ Ответить с цитированием
Старый 03.05.2008, 16:36   #687
Новичок
 
Аватар для _†DAMIAN†_
 
Регистрация: 22.12.2007
Сообщений: 11
Репутация: 18 [+/-]
Цитата:
Сообщение от GRT-unit Посмотреть сообщение
залез на сайт майкрософт, там увидел такой инструмент, как DarkGDK, я так понял,
это ставитс на Visual C++ express и используется для создания игр.
объясните кто знает, что это такое, и стоит ли обратить на него внимание при выборе движка,
короче дайте инфу, что это за птиц такой))
Да ставится на Visual C++ Express 2008 за другой год не пойдет и еще тебе понадобится DirectX SDK за Апрель, за дугой месяц SDK так-же не подойдет. Инсталить нужно по очереди, сначала MVisual C++ затем DirectX SDK и в конце Dark GDK.
Dark GDK - да используется для создания PC игр. Там синтаксис легкий вроде легко все можно делать, вот к примеру полный код одного из примеров с коментариями, выводит на форму твою 3D-модель:

Скрытый текст:

Код:
// Dark GDK - The Game Creators - www.thegamecreators.com

// whenever using Dark GDK you must ensure you include the header file
#include "DarkGDK.h"

// the main entry point for the application is this function
void DarkGDK ( void )
{
    // turn on sync rate and set maximum rate to 60 fps
    dbSyncOn   ( );
    dbSyncRate ( 60 );

    dbPrint ( "Please wait loading model..." );
    dbSync ( );
    dbSync ( );
    
    dbLoadObject ( "Colonel-X.X", 1 );
    
    dbPositionCamera ( 0, 50, -80 );

    dbLoopObject ( 1 );
    dbSetObjectSpeed ( 1, 40 );
    
    // our main loop
    while ( LoopGDK ( ) )
    {
        // update the screen
        dbSync ( );
    }

    // return back to windows
    return;
}


Цитата:
Сообщение от GRT-unit Посмотреть сообщение
кстати, как функционально ограничена эта версия vc++, можно ли на ней создавать коммерческие проекты?
стоит ли ее ставить или отдать предпочтение пиратской Visual Studio Professional?
+1
В моем случае только Visual Studio Professional 2005 или Visual Studio Express 2008?
_†DAMIAN†_ вне форума  
Отправить сообщение для _†DAMIAN†_ с помощью ICQ Отправить сообщение для _†DAMIAN†_ с помощью Skype™ Ответить с цитированием
Старый 03.05.2008, 17:15   #688
Юзер
 
Регистрация: 02.01.2008
Адрес: &GameDev
Сообщений: 188
Репутация: 17 [+/-]
Цитата:
Сообщение от _†DAMIAN†_ Посмотреть сообщение
+1
В моем случае только Visual Studio Professional 2005 или Visual Studio Express 2008?
сори, не понял
The Vork вне форума  
Отправить сообщение для The Vork с помощью ICQ Отправить сообщение для The Vork с помощью Skype™ Ответить с цитированием
Старый 03.05.2008, 18:38   #689
Новичок
 
Аватар для _†DAMIAN†_
 
Регистрация: 22.12.2007
Сообщений: 11
Репутация: 18 [+/-]
Цитата:
Сообщение от GRT-unit Посмотреть сообщение
сори, не понял
"+1" это я не тебе, я имелл в виду что меня так-же интересуют эти-же вопросы:
Цитата:
Сообщение от GRT-unit Посмотреть сообщение
кстати, как функционально ограничена эта версия vc++, можно ли на ней создавать коммерческие проекты?
стоит ли ее ставить или отдать предпочтение пиратской Visual Studio Professional?
_†DAMIAN†_ вне форума  
Отправить сообщение для _†DAMIAN†_ с помощью ICQ Отправить сообщение для _†DAMIAN†_ с помощью Skype™ Ответить с цитированием
Старый 04.05.2008, 10:27   #690
Юзер
 
Регистрация: 02.01.2008
Адрес: &GameDev
Сообщений: 188
Репутация: 17 [+/-]
а последний Direct X sdk включает direct3d 9c и direct3d 10, или нужно скачивать sdk для каждой версии directX?
ЗЫ directX'a за апрель я не нашел, там самый последний за март
The Vork вне форума  
Отправить сообщение для The Vork с помощью ICQ Отправить сообщение для The Vork с помощью Skype™ Ответить с цитированием
Старый 04.05.2008, 12:28   #691
Новичок
 
Аватар для _†DAMIAN†_
 
Регистрация: 22.12.2007
Сообщений: 11
Репутация: 18 [+/-]
Цитата:
Сообщение от GRT-unit Посмотреть сообщение
а последний Direct X sdk включает direct3d 9c и direct3d 10
Последний DirectX SDK (за Март 2008) содержит в себе и 9с и 10-й DirectX.
Цитата:
Сообщение от GRT-unit Посмотреть сообщение
или нужно скачивать sdk для каждой версии directX?
Тебе нужно скачать только DirectX SDK за Август 2007 так-как Dark GDK совместим только с SDK за Август, SDK за другой месяц не подойдет.
Цитата:
Сообщение от GRT-unit Посмотреть сообщение
ЗЫ directX'a за апрель я не нашел, там самый последний за март
Microsoft DirectX SDK (August 2007):
http://www.microsoft.com/downloads/d...DisplayLang=en

P.S. Кто не будь знает где можно скачать DarkBASIC Professional ver. 6.8 c таблеткой (кряком)?

Последний раз редактировалось _†DAMIAN†_; 07.05.2008 в 19:32.
_†DAMIAN†_ вне форума  
Отправить сообщение для _†DAMIAN†_ с помощью ICQ Отправить сообщение для _†DAMIAN†_ с помощью Skype™ Ответить с цитированием
Старый 13.05.2008, 20:14   #692
Юзер
 
Аватар для LuciF.E.A.R.
 
Регистрация: 07.03.2007
Адрес: Челябинск
Сообщений: 270
Репутация: 41 [+/-]
Как создать шрифт для Irrlicht 0.14? Не устраивают стандартные в силу того, что там тока Courier и какой-то моноширинный, да и русский текст нужен будет. Я сначала думал, что буквы считываются по пикселям, но потом понял, что нет. Обнаружил какие-то красные точки по краям символов. Всё, что нужно - это ограничить каждый символ двумя красными точками наверху?
__________________
Static-X - it's not 4ever. But it is so cool!!!
LuciF.E.A.R. вне форума  
Отправить сообщение для LuciF.E.A.R. с помощью ICQ Ответить с цитированием
Старый 13.05.2008, 20:28   #693
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
LuciF.E.A.R.
А какой у Вас Irrlicht? С 1.3.1, скажем, идёт новая программа для создания шрифтов, там уже и русскую группу символов можно создавать, и кучу других настроек делать. Смотрите в \tools\IrrFontTool\newFontTool
Проект разве что компиляции требует, но компилится без проблем.

P.S. Насколько я понимаю, с точками - это старый стиль. Теперь всё делается с помощью xml-файла, что гораздо удобнее. Читайте help (он там в программе самой есть по кнопке help), и будет Вам счастье
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)

Последний раз редактировалось pokibor; 13.05.2008 в 20:36.
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 15.05.2008, 09:16   #694
Новичок
 
Аватар для Gamerus
 
Регистрация: 13.05.2008
Адрес: На стыке вселенных.
Сообщений: 2
Репутация: 0 [+/-]
Гексы!

Помогите! Мне нужно работать с гексами, но мне мало что понятно.
Вот мой пример поля



на нём мне нужно найти расстояние между точками A(4,1) и B(1,2).
Ещё буду очень благодарен за алгоритм поиска путей для гексов: программа на С++ или псевдо код.
И ещё. Моя система координат верна или нужно как-то по другому?
__________________
Выпьем за то что-бы стоял,
Полный стакан пива на столе!

Выпьем за то что-бы девушки всегда давали,
Нам допить его до конца!

А теперь выпьем за то о чём вы подумали первый раз!!!

Последний раз редактировалось Gamerus; 15.05.2008 в 10:52.
Gamerus вне форума  
Отправить сообщение для Gamerus с помощью ICQ Ответить с цитированием
Старый 15.05.2008, 20:12   #695
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Gamerus
Вот какую систему координат использовал я. По сути она схожа с Вашей, только несколько перевёрнутой.
Скрытый текст:



Замечу, что тут сразу показано, как эта система отображается на плоскости, чтобы легче было рассчитывать преобразование одних координат в другие. Подразумевается, что m, w и h - величина соответствующих частей хекса в переносе на плоскость.

Теперь код модуля, отвечающего за эту карту. Я его так и не закончил (работа подвалила, и идеями стало некогда баловаться), но кое-что полезное там есть
Заголовочный файл hexmap.h:
Скрытый текст:
Код:
#ifndef HexMapH
#define HexMapH

//Тип каждого HEX'а
struct HEX_BASE_TYPE {
  unsigned char hex_type;
  unsigned short move_cost;
  HEX_BASE_TYPE(): hex_type(0), move_cost(0xFFFFu) {}
};

//Здесь хранятся данные о цене вхождения на каждую клетку
//с соответствующим типом
//Типов может быть до 255 штук, и каждый из них
//может иметь цену входа от 1 до 255 или 0 (непроходимо)
class HexCosts {
private:
  unsigned char n;//количество
  unsigned char *costs;//цены входа
public:
  HexCosts(unsigned char number);
  unsigned char GetCost(unsigned char n) const {return costs[n];}
  void SetCost(unsigned char n, unsigned char move_cost) {costs[n] = move_cost;}
  ~HexCosts();
};

class HexMap {
protected:
  HEX_BASE_TYPE **m;
  unsigned short w, h;//Ширина-высота
  struct __HM_POINT {unsigned short x, y, c; __HM_POINT(unsigned short X, unsigned short Y, unsigned short C) : x(X), y(Y), c(C) {}};
public:
  HexMap();
  HexMap(unsigned short width, unsigned short height);
  void Create(unsigned short width, unsigned short height);
  void Clear();

  unsigned short GetWidth() const {return w;}
  unsigned short GetHeight() const {return h;}
  HEX_BASE_TYPE **GetMap() const {return m;}

  void BuildMoveZone(unsigned short startX, unsigned short startY, unsigned short maxCost, const HexCosts *hexCosts);
  ~HexMap();
};

class GameHexMap : public HexMap {
protected:
	float k_w, k_m, k_h;//Ширина, средняя часть, высота хекса в условных коорд.
	bool is_last_row;//Присутствует ли на карте нижний ряд
	float map_width, map_height;//Ширина и высота карты в условных коорд.
public:
	GameHexMap(
		unsigned short width, unsigned short height,//Ширина / высота карты
		float hexWidth,//Ширина хекса в условных координатах
		float hexMiddle,//Ширина верхней стороны хекса в условных координатах
		float hexHeight,//Высота хекса в условных координатах
		bool isLastRow//Есть ли последний, самый нижний ряд (нечётн. x, y = height - 1)
		);
	virtual ~GameHexMap() {}
	
	//Получение хекса в определённых координатах. Координаты идут из (0,0) к (map_width, map_height)
	//Возвращает false, если координаты находятся вне хексов; иначе true. При этом hexX и hexY всегда корректны в т.ч. и в случае отрицательных величин
	virtual bool GetHex(float x, float y, int &hexX, int &hexY);
	//Получение локальных координат центра определённого хекса
	virtual void GetHexCenter(unsigned short hexX, unsigned short hexY, float &x, float &y);

	//Перегружаемые функции для визуализации
	//Прорисовка экрана
	virtual void Draw() {}
	//Преобразование экранных координат в локальные и обратно
	virtual void ScreenToLocal(float screenX, float screenY, float &localX, float &localY) {}
	virtual void LocalToScreen(float localX, float localY, float &screenX, float &screenY) {}
	virtual void ScreenToLocal(float &X, float &Y) {}
	virtual void LocalToScreen(float &X, float &Y) {}
	//Двигает камеру на определённое смещение
	virtual void MoveCamera(float dx, float dy) {}
	//Перемещает камеру в опр. координаты
	virtual void SetCameraPosition(float x, float y) {}
};
#endif
Файл реализации hexmap.cpp:
Скрытый текст:
Код:
#include <stdlib.h>
#include <windows.h>
#include <queue>
#include <math.h>
#include "HexMap.h"

using namespace std;

#define round(X) (((X) - floor(X)) < 0.5f ? floor(X) : ceil(X))

HexCosts::HexCosts(unsigned char number) {
  n = number;
  costs = new unsigned char [n];
}

HexCosts::~HexCosts() {
  if (costs) delete [n] costs;
  costs = NULL;
}

//==============================================================================

HexMap::HexMap() {
  m = NULL;
  w = h = 0;
}

HexMap::HexMap(unsigned short width, unsigned short height) {
  m = NULL;
  Create(width, height);
}

HexMap::~HexMap() {
  Clear();
  m = NULL; w = h = 0;
}

void HexMap::Create(unsigned short width, unsigned short height) {
  Clear();
  w = width; h = height;
  m = new HEX_BASE_TYPE *[w];
  for (unsigned short i = 0; i < w; i++) {
    m[i] = new HEX_BASE_TYPE[h];
  }
}

void HexMap::Clear() {
  if (m) {
    for (unsigned short i = 0; i < w; i++) {
      delete [h] m[i];
    }
    delete [w] m;
  }
}

void HexMap::BuildMoveZone(unsigned short startX, unsigned short startY, unsigned short maxCost, const HexCosts *hexCosts) {
  for (unsigned short i = 0; i < w; i++) {
    for (unsigned short j = 0; j < h; j++) {
      m[i][j].move_cost = 0xFFFFu;
    }
  }
  queue<__HM_POINT> way;
  m[startX][startY].move_cost = 0;
  way.push(__HM_POINT(startX, startY, 0));
  unsigned short move_cost, cur_move_cost;
  unsigned char hmc;
  unsigned short x, y, it = 0;
  while (!way.empty()) {
    it++;
    x = way.front().x; y = way.front().y;
    cur_move_cost = m[x][y].move_cost;
    if (cur_move_cost != way.front().c) {way.pop(); continue;}
    way.pop();
    #define SET_CELL(X,Y) \
    HEX_BASE_TYPE *cur_m = &m[X][Y]; \
    hmc = hexCosts->GetCost(cur_m->hex_type); \
    if (hmc < 0xFFu) { \
      move_cost = cur_move_cost + hmc; \
      if ((move_cost < cur_m->move_cost)&&(move_cost <= maxCost)) {\
        cur_m->move_cost = move_cost; \
        way.push(__HM_POINT(X, Y, move_cost)); \
      } \
    }
    if (y > 0) {
      //Верхний [0, -1]
      SET_CELL(x, y - 1);
      if (!(x & 1)) {
        if (x > 0) {
          //Левый в -1 ур. [-1, -1]
          SET_CELL(x - 1, y - 1);
        }
        if (x < (w - 1)) {
          //Правый в -1 ур. [+1, -1]
          SET_CELL(x + 1, y - 1);
        }
      }
    }
    if (y < (h -1)) {
      //Нижний [0, +1]
      SET_CELL(x, y + 1);
      if ((x & 1)) {
        if (x > 0) {
          //Левый в +1 ур. [-1, +1]
          SET_CELL(x - 1, y + 1);
        }
        if (x < (w - 1)) {
          //Правый в +1 ур. [+1, +1]
          SET_CELL(x + 1, y + 1);
        }
      }
    }
    if (x > 0) {
      //Левый в этом ур. [-1, 0]
      SET_CELL(x - 1, y);
    }
    if (x < (w - 1)) {
      //Правый в этом ур. [+1, 0]
      SET_CELL(x + 1, y);
    }
    #undef SET_CELL
  }
}

//==============================================================================

GameHexMap::GameHexMap(unsigned short width, unsigned short height, float hexWidth, float hexMiddle, float hexHeight, bool isLastRow) : HexMap(width, height) {
	k_w = hexWidth;
	k_m = hexMiddle;
	k_h = hexHeight;
	is_last_row = isLastRow;
	if  (w % 2) {//нечётное
		map_width = ((float)((w >> 1) + 1)) * (k_w + k_m) - k_m;
	} else {//чётное
		map_width =  ((float)(w >> 1)) * (k_w + k_m) + (k_w - k_m) / 2.0f;
	}
	if (is_last_row) {
		map_height = (((float)h) + 0.5f) * k_h;
	} else {
		map_height = ((float)h) * k_h;
	}
}

bool GameHexMap::GetHex(float x, float y,  int &hexX, int &hexY) {
	x = (x + k_m / 2.0f) / ((k_m + k_w) / 2.0f) - 1.0f;//Модифицируем x
	y /= k_h;//Модифицируем y
	//Теперь x - между хексом floor(x) и ceil(x)
	float x1 = floor(x); float x2 = ceil(x);
	//Теперь y - между хексом floor(y) и floor(y - 0.5)
	float y1, y2;
	if (((int)x2) & 1) {
		y1 = floor(y) + 0.5;
		y2 = floor(y - 0.5f) + 1.0f;
	} else {
		y2 = floor(y) + 0.5;
		y1 = floor(y - 0.5f) + 1.0f;	
	}
	if (((x - x1) * (x - x1) + (y - y1) * (y - y1)) < ((x - x2) * (x - x2) + (y - y2) * (y - y2))) {
		hexX = x1;
		if (hexX & 1) {
			y1 -= 1.5;
		} else {
			y1 -= 0.5;
		}
		hexY = round(y1);
	} else {
		hexX = x2;
		if (hexX & 1) {
			y2 -= 1.5;
		} else {
			y2 -= 0.5;
		}
		hexY = round(y2);
	}
	if ((hexX < 0)||(hexY < 0)||(hexX >= w)||(hexY >= h)) return false;
	if ((!is_last_row)&&(hexX & 1)&&(hexY == (h - 1))) return false;
	return true;
}

void GameHexMap::GetHexCenter(unsigned short hexX, unsigned short hexY, float &x, float &y) {
	x = ((float)hexX) * (k_w + k_m) / 2.0f + k_w / 2.0f;
	y = ((float)hexY) * k_h + (hexX & 1 ? k_h : k_h / 2.0f);
}


Значит, что здесь к чему:
HEX_BASE_TYPE - это тип каждого хекса, который Вы можете изменить под свои нужды. В моём простейшем варианте там всего два поля:
hex_type - тип хекса как некое число от 0 до 255
move_cost - цена попадания в этот хекс, отдана под построение зоны хода

HexCosts - класс для задание соответствия, передвижение по какому хексу сколько стоит в неких очках хода. 0 считается за непроходимость хекса. Соответственно, в конструкторе задаётся количество типов хексов, затем SetCost для каждого типа изменяется цена хода по этому типу
P.S. А, нет, кажется, за непроходимость считается значение 255...

HexMap - базовый класс для карты. В конструкторе задаётся её ширина и высота (выше показана система координат), хранится карта как двумерный массив. Крайние клетки, если необходимо, всегда можно сделать абсолютно непроходимыми.
При помощи BuildMoveZone строится зона хода, то есть рассчитываются цены попадания из определённой точки в окрестные до некого предела. Почему не ищется путь из одной в другую? Потому, что делалось это для пошаговой игры "героеподобного" типа, где как раз строить зону хода и надо на хексовом поле боя, а вовсе не искать путь. Но если Вам охота искать путь, то разобравшись в алгоритме построении зоны хода, Вы спокойно напишите поиск пути желаемым методом. Однако очень вероятно, что построения зоны хода Вам хватит.
Итак:
startX, startY - начальная точка
maxCost - до достижения какой стоимости всего пути строить зону
hexCosts - цены движений по определённым хексам. Обращаю внимание, что шлются они именно при построении зоны хода, т.е. у разных юнитов может быть своя стоимость движения по хексам.
В результате поля move_cost клеток заполняются стоимостями движения в них. Как это преобразуется в путь? Очень просто. Мы берём конечную точку пути и ищем среди её соседей хекс, стоимость достижения которого минимальна. Затем по тому же принципу его соседа, и так далее. Принцип определения соседей см. в коде BuildMoveZone, там всё ясно.

Класс GameHexMap, наследующий от HexMax - это проецирование хексовой карты на плоскость. Из рисунка должно быть ясно, как эта карта предполагается на плоскости расположившейся.
В конструкторе width и height - ширина и высота карты в хексах,
hexWidth, hexMiddle и hexHeight - длины w, m и h соответственно в единицах измерения плоскости, isLastRow - присутствует ли на карте самый нижний ряд хексов.
GetHex - позволяет определить, какому хексу принадлежат соответствующие координаты на плоскости (например, в которых щёлкнул мышкой пользователь).
GetHexCenter наоборот, возвращает координаты цента определённого хекса в единицах измерения плоскости.
Остальные методы абстрактные и вставлены для дальнейшего наследования.

Ну и читайте комменты Удачи, если есть вопросы - задавайте.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)

Последний раз редактировалось pokibor; 16.05.2008 в 09:32.
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 15.05.2008, 21:03   #696
Юзер
 
Регистрация: 02.01.2008
Адрес: &GameDev
Сообщений: 188
Репутация: 17 [+/-]
а что такое эти хексы??
The Vork вне форума  
Отправить сообщение для The Vork с помощью ICQ Отправить сообщение для The Vork с помощью Skype™ Ответить с цитированием
Старый 15.05.2008, 21:08   #697
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
GRT-unit
Шестиугольники, на которые разбита карта вместо привычных клеток.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 16.05.2008, 07:32   #698
Новичок
 
Аватар для Spy2000
 
Регистрация: 08.02.2008
Сообщений: 2
Репутация: 0 [+/-]
Конечно может такой вопрос уже звучал, но я только только зарегестрировался. Вот вопрос. Как сгладидь (инструмент Plane делаю ладшафт в 3DsMax 8) так сказать подъёмы, а то больно резкие они получаются.
Spy2000 вне форума  
Отправить сообщение для Spy2000 с помощью ICQ Ответить с цитированием
Старый 16.05.2008, 08:51   #699
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Spy2000
Делать с большим разрешением либо сглаживать, "на лету" генерируя только окружающую игрока область каким-нибудь методом аппроксимации, скажем - наименьших квадратов с базисными синусоидами-косинусоидами.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 16.05.2008, 10:12   #700
Новичок
 
Аватар для Spy2000
 
Регистрация: 08.02.2008
Сообщений: 2
Репутация: 0 [+/-]
Цитата:
Сообщение от pokibor Посмотреть сообщение
Spy2000
Делать с большим разрешением либо сглаживать, "на лету" генерируя только окружающую игрока область каким-нибудь методом аппроксимации, скажем - наименьших квадратов с базисными синусоидами-косинусоидами.
С болшим разрешением будут галы т.к. ком слабый а сглаживание буду пробовать. Буду эксперементировать.
Spy2000 вне форума  
Отправить сообщение для Spy2000 с помощью ICQ Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 19:35.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Rambler's Top100 Яндекс цитирования