danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Программирование

Руководство Пользователя GLFW.Глава 1 и Глава 2.

Перед вами перевод Руководства Пользователя библиотеки GLFW

Автор перевода: Nerevar
--

Часть 1

Введение

GLFW - это портируемое API (Application Program Interface) которое управляет специфическими задачами операционных систем относящихся к программированию с OpenGL. В то время как OpenGL в целом является портируемым, простым в использовании и в результате имеется чистый и компактный код, специфические механизмы операционных систем которые требуются для создания и управления OpenGL-окна являются сложными. GLFW пытается исправить это путем предоставления следующего функционала:
-открытие и управления OpenGL-окном
-управление вводом с клавиатуры,мыши и джойстика
-предоставление высокоточного таймера
-поддержка мульти-поточности
-поддержку запросов и использования OpenGL-расширений
-встроенную возможность загрузки изображений
Весь этот функционал реализован в виде набора простых для использования функций,что дает возможность написания OpenGL-приложения с помощью всего-лишь нескольких строк кода.
GLFW API не зависит от платформы и операционной системы,что дает простую возможность портирования OpenGL-приложений основанных на GLFW между поддерживаемыми платформами.
В данный момент поддерживаются следующие платформы:
-Microsoft Windows
-Unix or Unix-like systems running the X Window System with GLX version 1.3 or later
Существует также устаревшая поддержка Mac OS версий 10.3 и 10.4,используя Carbon API.

Часть 2

Приступаем к работе
В этой части вы узнаете,как написать простое OpenGL-приложение,используя GLFW.Мы начнем с инициализации GLFW,затем мы откроем окно и отловим некоторые действий пользователя.

2.1 Подключаем заголовок GLFW

Обычным способом подключения заголовка GLFW является:

#include <GL/glfw.h>

Этот заголовок определяет все константы,типы и прототипы функций GLFW API.Он также по-умолчанию включает заголовки OpenGL и GLU(Graphic Library Utils),предоставляемые вашей средой разработки и определяющие все необходимые константы и типы,которые нужны для работы этих заголовков на этой конкретной платформе.
По-умолчанию заголовок gl.h включен.Если вы хотите вместо этого включить gl3.h,определите GLFW_INCLUDE_GL3 перед включением заголовка GLFW.
Также по-умолчанию заголовок glu.h включен.Если вы хотите избежать этого,установите GLFW_NO_GLU перед включением заголовка GLFW.

2.2 Инициализация GLFW

Перед использованием любых функций GLFW,необходимо вызвать glfwInit.Это инициализирует части GLFW, не относящиеся к окну,такие как поточность,таймер или ввод с джойстика.C-синтаксис:

int glfwInit( void )

glfwInit возвращает GL_TRUE если инициализация прошла успешно, или GL_FALSE если не удалось инициализировать.
Когда ваше приложение выполняется с помощью GLFW, обычно в самом конце программы вы должны вызывать glfwTerminate. С-синтаксис:

void glfwTerminate( void )

Это освобождает все ресурсы, выделенные GLFW, закрывает окно,если оно открыто и уничтожает любые вторичные потоки,созданные GLFW (после этого вызова вы должны вызвать glfwInit снова,прежде чем использовать любые функции GLFW).

2.3 Открываем окно

Открытие OpenGL-окна осуществляется с помощью вызова функции glfwOpenWindow. Эта функция принимает 9 аргументов, которые используются для описания следующих свойств открываемого окна:
-размеры окна (ширина и высота) в пикселях
-размер цветового и альфа буфера в битах
-размер буфера глубины в битах (Z-buffer)
-размер буфера трафарета в битах
-следует ли использовать в полно-экранном или оконном режиме.
C-синтаксис функции glfwOpenWindow:

int glfwOpenWindow( int width, int height,
int redbits, int greenbits, int bluebits,
int alphabits, int depthbits, int stencilbits,
int mode )

 
glfwOpenWindow возвращает GL_TRUE если окно открыто правильно, или GL_FALSE если GLFW
не удалось открыть окно.
GLFW пытается открыть максимально соответствующее запрашиваемым параметрам окно.Некоторые параметры могут быть опущены установлением их в 0, что дает GLFW возможность использования стандартных значений или данный функционал будет выключен.Например,если ширина и высота будут установлены равными нулю,GLFW будет использовать стандартное разрешение экрана - 640х480.
Если размер буфера глубины равен нулю,открытое окно не будет иметь буфера глубины.
Аргументы режима используются для определение того,будет ли окно в полно-экранном или оконном режиме.
Если выбран режим GLFW_FULLSCREEN,окно будет охватывать весь экран и никакие границы окна или кнопки не будут видны.
Если это возможно,видео-режим будет выбран наиболее соответствующим переданным аргументам.
Кроме того,указатель мыши будет скрыт и заставки запрещены.Обычно это лучший режим для игры и демо-приложений.

Если выбран режим GLFW_WINDOW,окно будет открыто как обычно,с границами и кнопками.Указатель мыши не будет спрятан и заставки могут быть активированы.
Для закрытия окна вы можете использовать glfwTerminate, как написано выше,либо можете использовать
более логичный подход,используя функцию glfwCloseWindow, которая имеет C-синтаксис:

void glfwCloseWindow( void )

Обратите внимание,вам не нужно вызывать glfwTerminate и glfwInit перед открытием нового окна,после того как текущее будет закрыто вызовом glfwCloseWindow.

2.4 Используем отлов ввода пользователя

GLFW дает несколько путей отлова ввода пользователя, с которыми мы ближе познакомимся в главе 4. Один из простейших путей отлова ввода пользователя - использование функции glfwGetKey:

int glfwGetKey( int key )

Она определяет текущее состояние отдельных клавиш клавиатуры. Аргумент определяет, какую клавишу следует проверить,и это может быть либо печатный ISO 8859-1 (Latin 1) символ (например, 'A', '3 'или'. '), или специальный идентификатор ключа (см. справочное руководство GLFW для списка специальных идентификаторов ключей).
glfwGetKey возвращает GLFW_PRESS если клавиша в данный момент нажата, или GLFW_RELEASE если клавиша в данный момент не нажата. Например:

A_pressed = glfwGetKey( ’A’ );
esc_pressed = glfwGetKey( GLFW_KEY_ESC );

Для того,чтобы glfwGetKey имела какой-нибудь эффект, необходимо опрашивать входные события на регулярной основе. это можно сделать одним из двух способов:
-Неявным вызовом glfwSwapBuffers часто.
-Явным вызовом glfwPollEvents часто.
В основном вы не должны заботиться об этом,так как обычно вызов glfwSwapBuffers происходит для смены заднего и переднего буфера в каждом кадре. Однако,если это не происходит, вы должны вызывать glfwPollEvents порядка 10-100 раз в секунду чтобы держать GLFW в курсе состояния ввода пользователя.

2.5 Собираем всё вместе: минимальное GLFW-приложение

Теперь,когда вы знаете как инициализировать GLFW, открыть окно и обработать ввод пользователя, попробуем написать простое OpenGL-приложение

#include <GL/glfw.h>
#include <stdlib.h>
int main( void )
{
int running = GL_TRUE;
// Инициализируем GLFW
if( !glfwInit() )
{
   exit( EXIT_FAILURE );
}
// Открываем OpenGL-окно
if( !glfwOpenWindow( 300,300, 0,0,0,0,0,0, GLFW_WINDOW ) )
{
   glfwTerminate();
   exit( EXIT_FAILURE );
}
// Основной цикл
while( running )
{
// Функции отрисовки OpenGL находятся здесь
   glClear( GL_COLOR_BUFFER_BIT );
// Сменяем задний и передний буферы
   glfwSwapBuffers();
// Проверяем,нажата ли клавиша Esc,либо окно закрыто
   running = !glfwGetKey( GLFW_KEY_ESC ) && glfwGetWindowParam( GLFW_OPENED );
}
// Закрываем окно и деинициализируем GLFW
   glfwTerminate();
// Выходим из программы
   exit( EXIT_SUCCESS );
}

Эта программа открывает окно 300х300 и выполняется в цикле,пока клавиша Esc не будет нажата,либо окно не будет закрыто.Все функции OpenGL,которые вызываются в данном примере - это очистка окна.

Также к статье прикрепляю glfw.lib,glfwdll.lib,glfw.h,glfw.dll, OPENGL32.lib

Смотрите также:


Комментарии



Глупый вопрос, но всеже, зачем вы подключили библиотеку stdlib.h ?(просто многие подумают, что она нужна...)

Xipxop:

stdlib.h

для этого:

exit( EXIT_FAILURE );
...
exit( EXIT_SUCCESS );

а вообще SFML более трушная либа,чем эта

Прошу прощения, а где архив с файлами, прикреплённый к статье?

aversilov:

Прошу прощения, а где архив с файлами, прикреплённый к статье?

Статья вышла три года назад, может когда-то и был прикреплённый архив

Справка