crayan, привет. Вообще хотелось бы в 3д (думаю наложить текстурку на куб не так уж сложно), но в 3д ведь добавляется третья ось. Получается, что генератор придется писать куда сложнее. От 2д не плююсь, но хотелось бы всё-таки 3D. Однако принципы генерации карт как в 2д, так и в 3д понять не могу. Ну а все знакомые говорят, что всё на самом деле просто...
Привет всем! Я вот решился писать что-то вроде Minecraft, но с использованием примеров (т.е. не с 0). Писаться всё это чудо будет на ЯП C++. OpenGL и DirectX не использовал. Использовал лишь движки GEGE и HGE. DirectX по неким причинам использовать не могу (в чистом виде, ну а если в движок вшит - то можно). Собственно, тема такая: какой движок юзать? как работает вообще эта генерация? примеры есть? Я видел source code из minetest, но там всё запутанно и архитектура приложения весьма сложная. Пока я пришёл лишь к тому, что координаты и расположение блоков будут храниться в byte map[x][y]. Например map[1][1] = 1; - это блок земли в X:1, Y:1. Я не знаю в чём работать и на что смотреть. Нужен "старт". Надеюсь, что вы меня поймете...
Витаминчиков попей, полегчает. Ты попробуй отрезать код кусок за куском и компилить, пока ошибка не исчезнет. Исчезнет - значитца, в отрезанном куске все и заключалось.
Я знаю что это за кусок. Это загрузка\вывод графики. От этого я и зол
if (hge->Input_GetKeyState(HGEK_ESCAPE)) {return true;} /*Если нажата клавиша escape*/ return false;
}
int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int) /*Точка входа*/ { hge = hgeCreate(HGE_VERSION); hge->System_SetState(HGE_FRAMEFUNC, frameFunc); /*Указатель на пользовательскую функцию кадра*/ hge->System_SetState(HGE_WINDOWED, true); /*Полноэкранный или оконный режи приложения*/ hge->System_SetState(HGE_USESOUND, false); /*Ипользовать или нет звук в HGE*/ hge->System_SetState(HGE_TITLE, "HGE Test =)"); /*Строка, которая является заголовком окна приложения*/ hge->System_SetState(HGE_SCREENWIDTH, 641); /*Ширина окна*/ hge->System_SetState(HGE_SCREENHEIGHT, 345); /*Высота окна*/ hge->System_SetState(HGE_HIDEMOUSE, false); /*Скрыть или нет курсор мыши*/
if (hge->System_Initiate()) /*Инициализирует всю аппаратную и программную часть, необходимую для запуска движка и создает окно приложения*/ { sprite01 = hge->Texture_Load("01.gif"); grass = new hgeSprite(sprite01,100,100,32,32); grass->SetBlendMode(BLEND_DEFAULT); grass->SetTextureRect(0,0,32,32,false); hge->System_Start(); /*Начинает выполнять определенную пользователем функцию кадра (frameFunc)*/ } else /*Иначе*/ { return true; /*Возвращаем "true"*/ } hge->System_Shutdown(); hge->Release(); return 0; }
извиняюсь что завел новую тему. Просто та потеряла свою актуальность. При попытке компиляции именно ЭТОГО кода ничего не выдает, лишь говорит что есть ошибка. Я в тупике. Чистом тупике
bool frameFunc() /*Кадровая функция. Вызывается каждый кадр*/ { if (hge->Input_GetKeyState(HGEK_ESCAPE)) {return true;} /*Если нажата клавиша escape*/ return false; }
int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int) /*Точка входа*/ { hge = hgeCreate(HGE_VERSION); hge->System_SetState(HGE_FRAMEFUNC, frameFunc); /*Указатель на пользовательскую функцию кадра*/ hge->System_SetState(HGE_WINDOWED, true); /*Полноэкранный или оконный режи приложения*/ hge->System_SetState(HGE_USESOUND, false); /*Ипользовать или нет звук в HGE*/ hge->System_SetState(HGE_TITLE, "HGE Test =)"); /*Строка, которая является заголовком окна приложения*/
if (hge->System_Initiate()) /*Инициализирует всю аппаратную и программную часть, необходимую для запуска движка и создает окно приложения*/ { hge->System_Start(); /*Начинает выполнять определенную пользователем функцию кадра (frameFunc)*/ } else /*Иначе*/ { return true; /*Возвращаем "true"*/ }
bool frameFunc() /*Кадровая функция. Вызывается каждый кадр*/ { if (hge->Input_GetKeyState(HGEK_ESCAPE)) {return true;} /*Если нажата клавиша escape*/ return false; }
int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int) /*Точка входа*/ { hge = hgeCreate(HGE_VERSION); hge->System_SetState(HGE_FRAMEFUNC, frameFunc); /*Указатель на пользовательскую функцию кадра*/ hge->System_SetState(HGE_WINDOWED, true); /*Полноэкранный или оконный режи приложения*/ hge->System_SetState(HGE_USESOUND, false); /*Ипользовать или нет звук в HGE*/ hge->System_SetState(HGE_TITLE, "HGE Test =)"); /*Строка, которая является заголовком окна приложения*/
if (hge->System_Initiate()) /*Инициализирует всю аппаратную и программную часть, необходимую для запуска движка и создает окно приложения*/ { hge->System_Start(); /*Начинает выполнять определенную пользователем функцию кадра (frameFunc)*/ } else /*Иначе*/ { return true; /*Возвращаем "true"*/ }
Не хочу быть в этом детском саде. Это меня раздражает.
Тогда не смей меня оскорблять - заруби на носу)
Добавлено (22.08.2012, 17:17) --------------------------------------------- Новая текстура: Старая: Прогресс или регресс? Укажите на мои ошибки и расскажите как можно улучшить текстуру, пожалуйста
Добавлено (22.08.2012, 17:18) --------------------------------------------- хотя, кажется, трава хуже стала
О_о У тебя репа тогда должна быть где-то -200 или меньше.
Я не считаю себя художником. И это что, вызов?) Могу скинуть свои каракули на А4. Сравним) Дуэль, а? :"D
Quote (LunarPixel)
Saitei, ну я не мастер, конечно ) да и в майн не играл, особо в тайлы не всматривался )) Потому, смотри лучше на проф. работы ) Просто попробуй перерисовать саму землю, добавь шума туда ) я обычно так делаю, после того, как основу нарисую )