Сообщений хранится в соответствии с "программирование"

GORC - Карта редактор?

У таймера проблема вчера как-нибудь решить, и теперь я могу посвятить сцены. Здесь я хотел бы, но давайте не просто программа по нему идти дикой природы и провести все это в несколько раз, а Bedenkminuten XD

Первый раз, когда я искал милый редактор карт и черепичные нашли. Написано в Java и работает так хорошо, чтобы также серьезно, участвующих в любой операционной системе. То, что я также очень удобно, карты хранятся в XML и могут быть отнесены к объектам в редактор карт, его свойства.

Последний, например полезна, если он подходит как блокнот. Это может быть так что даже при создании карты отсутствует его содержание. Или телепорт Телепорт их целевого поля ... Nice вещь:)

Внутренне, я буду экономить на сцену в три 2D массивов. В первом этаже плитки. Почему? Я заметил в робота 3, который она выглядит не очень хорошо, если стены в лесу wegätzt, потому что тогда есть белый кафель в середине леса. Было бы здорово, если бы появиться на моем счету бурых лесных почвах. Именно это позволяет мне быть моим первым массива (я называю только слой 0 раз XD).

Слой 1 будет содержать все остальные игры не-NPC объекты. И в 2 слоя затем крыши, и все еще может работать под длинный Чарли. Чарли Вы находитесь на мой счет в доме просто не обращается более 2 слоя и мы имеем тот же эффект, как и в Робот игры на крыши:)

NPCs и все объекты хранятся каждая в список. Затем эти данные не SOOOOO долго он задерживается, и я должен иметь, несмотря на все возможности нескольких объектов в одной и той же области. Потому что это ситуация, я думаю, только если игрок сбрасывает объектов. Или потому, что я пропустил что-то?

В настоящее время я для каждого объекта свой PNG совместимы, но, к сожалению, с черепичными не слишком велика. Так вот будет вернуться к одной изображение полного tileset. Один, два изменения в базовый класс объекта, а также эта маленькая проблема будет решена.

Я надеюсь, раз, я все же создать все это в течение этой недели, потому что тогда я могу выпустить пар снова в GUI;)

12 комментариев 8 февраля 2009

GORC - Я только что делать глупо быть: (

Потому что люблю все было так хорошо работает, я скопировал и таймер включен в качестве меры предосторожности все с плавающей точкой в целочисленных переменных. Это принесло хороший всплеск скорости и захлопнул мою анимацию совершенства. Но я просто хотел использовать жидкие движения объекта, и все начали отмечать. Так что все конвертируется обратно с плавающей точкой. Теперь они больше жидкости, но он ожидает, что глупо и немой, 20 FPS потеря: (

, Там должно быть лучше ... мы взглядом ...

7 февраля 2009

GORC - Следующая остановка: Класс объекта

Самые основные функции безропотно в свои новые дома Синглтон (экран, таймер, изображение) исчезли. Класс игры также принимает форму медленно:)

Следующим шагом является объект класса базы для игровых элементов. Сначала я хочу посмотреть, как он ведет себя в условиях дикой природы, потому что он должен заботиться также о каких-либо анимации. Без любви я должен заботиться о себе и на этот раз * LOL *

То, что я заметил в версии Love GORC каждого экземпляра объекта имеет свой собственный экземпляр изображения ... что, конечно, не обязательно ресурсов. На этот раз я получил, принятые для обеспечения того, чтобы изображение загружается только один раз и будет рассматриваться в любое другое "магазин" из кэша.

Поэтому я пришел вперед ... и, несмотря на холод и крайне медленный процесс мышления XD

6 февраля 2009

GORC - C + +

Раньше я не был так уверен. Но не успел я ответил на комментарий HERC, не было D (опять же), а отреагировали на мою идею о наследовании переменные и функции родительского класса с их детишками.

Я признаю, да, я не знаю, что мне делать с вещами, как "виртуальный" и "охраняемых". Но если бы я, как:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
  Изображение класса
 (
     ...
     uint x , uint y ) недействительным вничью (UINT UINT х, у)
     (
         ...
     )
     ...
 )

 Image Анимация класса: Изображение
 (
     ...
     недействительным сделать ()
     (
         , 1 ) ; привлечь (1, 1);
     )
     ...
 ) 

сделал, зачем жаловаться Богу будет компилятор D, класс не обратить анимации UINT ("UINT) делает? Насколько я понимаю, что они должны все-таки в наследство от изображения класса, не так ли? Ok, благодаря Google, я знаю, что это таким образом, чтобы:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
  Изображение класса
 (
     ...
     uint x , uint y ) недействительным вничью (UINT UINT х, у)
     (
         ...
     )
     ...
 )

 Image Анимация класса: Изображение
 (
     ...
     draw ; Псевдоним изображения. обратить обратить;

     недействительным сделать ()
     (
         , 1 ) ; привлечь (1, 1);
     )
     ...
 ) 

Тьфу! Медленно, я действительно думаю о том, кто не касаются принципов ООП во сне, должны позволить пальцы D: (

Итак ... Я возьму C + +, который занимается моим невежеством мало благ и попробовать, чтобы узнать его;)

3 комментариев 5 февраля 2009

GORC - новое начало? C, C + +, BASIC бесплатно или D?

Здесь, на мой старый ноутбук GORC работает слишком медленно. Это в значительной степени потому, что любовь использует OpenGL. SDL для 2D-движка игры хватило бы прекрасно. Naja. Но что же теперь?

На самом деле очень хорошее время для GORC в "реальный" язык программирования для написания нового и, как использовать библиотеку SDL. Наконец, я должен не более чем на SDL, SDL_mixer и SDL_image. Позже, Lua сценария еще нет, но до сих пор еще есть время ...

В шорт-лист здесь приходят 4 Языки: C, C + +, BASIC и бесплатные Digital Mars D. последнего я всегда хотел, чтобы понюхать поближе. Библиотеки по своему выбору все поддерживаем.

Для C и C + + не любит, я пишу слишком много. Можно очень многое будет компилироваться на все, и я очень люблю синтаксис:)

Бесплатный BASIC, как с синтаксисом C Быстрый Basic. Можно собирать, но к сожалению, только для Windows и Linux.

D, вероятно, будет "лучше" C + +. Насколько легко на проект, как воздействие GORC, не знаю. Компиляция предназначен DSSS благодаря намного легче, чем в C / C + +. Ибо я до сих пор так и не удалось на самом деле это моя программа для компиляции пропускать. / Настройка и и делать. Это слишком дорогой все * LOL *

Здесь же, после небольшой взгляд в сторону D:

  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
 . sdl ; import tango. io . Console ; void main ( ) { try { DerelictSDL. load ( ) ; } catch ( Exception e ) { Cout ( "Could not load the SDL shared library. \n " ) ; return ; } SDL_Init ( SDL_INIT_VIDEO ) ; SDL_SetVideoMode ( 640 , 348 , 24 , SDL_SWSURFACE ) ; SDL_WM_SetCaption ( "GORC" , null ) ; mainLoop : while ( true ) { SDL_Event event ; while ( SDL_PollEvent ( & event ) ) { switch ( event. type ) { case SDL_QUIT : break mainLoop ; default : break ; } } SDL_Delay ( 10 ) ; } Cout ( "Oki Dokili. \n " ) ; SDL_Quit ( ) ; DerelictSDL. unload ( ) ; } импорт в запустение. SDL. SDL; импорт танго. IO. консоли; силы основных () (попробуйте (DerelictSDL. нагрузки ();) поймать (Exception е) (суд ("Не удалось загрузить динамическую библиотеку SDL. \ п"); возвращение;) SDL_Init (SDL_INIT_VIDEO); SDL_SetVideoMode (640, 348, 24, SDL_SWSURFACE); SDL_WM_SetCaption (GORC ", NULL); основной цикл: в то время (правда) (SDL_Event событие в то время как (SDL_PollEvent (и события)) (переключатель (событие . тип) (случай SDL_QUIT: преодолей основной цикл; умолчанию: перерыв;)) SDL_Delay (10);) суда ("Oki Dokili. \ п"); SDL_QUIT (); DerelictSDL. выгрузить ();) 

Ну и что? То, что я возьму его сейчас?

4 комментариев 3 февраля 2009

GORC - пиксельные без билета

То, что я сегодня весь день, глядя на мертвого трясти головой * *

Рамочная для меню и диалогов были разработаны без проблем, ничего ... мы быстро завершили в главном меню, а затем закрытия. Никс припадок ... Как-то ни меня, не в окне или в окне был слишком велик. Но что вы можете пойти не так, когда часть кадра ровно 8 × 10 пикселей и 1 большой буквы шрифта того же размера? Простая математика, но не подходит что-нибудь!

Я на самом деле только несколько букв шрифта ресурсов краски хватает основы, чтобы увидеть эту ошибку. До сих пор у меня источника, вероятно, уже читал тысячу раз без результата коррекции. Стандартные функции любви к растровых шрифтов добавил (а я, конечно, не знаю) является новым один пиксель между двумя буквами. Но, к счастью, также есть функция, благодаря которой я мог бы оставить эту глупую пикселей;)

Ну, я уже было достаточно программирования. Меню может ждать теперь, когда, наконец, сегодня, кто 18, и уже без меня сильная в торжествах.

Поздравляю, брат!

2 комментарии 24 января 2009

GORC - объект класса игра закончена, а что дальше?

Предисловие: Я заметил, что я GORC нить моей в игре Робот Форума в настоящее время, как злоупотребляли DevBlog. Раз я теперь будет работать против него, и мои мысли и прогресса в этом блоге ... там, где они на самом деле принадлежат тоже;)

Так что ... я использую на прошлой неделе и чучела всех игровых элементов на классы. Содержание сцену уже не в 2D массив, но в два Lua таблиц. Один из роботов, то, возможно, все остальные NPCs прийти сюда. А в другой вставить таблицу все другие элементы (стены, золото и т.д.).

Цель всего это сделать игровую логику управляемой. Вместо того, чтобы долго, если-то-иначе блоков ставлю всю логику для определенного объекта в своем классе, например. Например:

  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
  "Gold" , Object ) Золото = класса ("золото", Object)

 "images/gold-0.png" ) Золото love.graphics.newImage Image = ("images/gold-0.png")
 , 0 ) Золото Изображение: setCenter (0, 0)

 "sounds/gold.wav" ) Золотой Звук love.audio.newSound = ("Звуки / gold.wav")

 x, y, params ) Золото инициализации функции: (х, у, параметры)
	 self.super: инициализации (х, у)

	 self.ani = Gold Изображение
 конец

 obj ) Функция Золото: canEnter (объект)
	 - Может быть введена только на плейере
	 obj ) then return false end если не игрока: сделано (объект), то возвращение ложных конец
	 возвращение истинной
 конец

 obj ) Функция Золото: onEntered (объект)
	 obj ) then return end если не игрока: сделано (объект), то возвращение конец

	 себя: удалить ()
	 spieler.gold spieler.gold + 1 =
	 love.audio.play (золото Sound)
 конец 

Ok. Коллекционных объектов в настоящее время никакого реального сценария технической проблемой. Но как-то более сложным?

  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
 "Isolator" , Moving ) IsolatorImage = love.graphics.newAnimation ( love.graphics.newImage ( "images/isolator-0.png" ) , 16 , 12 , 0.1 , 0 ) IsolatorImage:setCenter ( 8 , 6 ) function Isolator:init ( x, y, params ) self.super:init ( x, y ) self.ani = IsolatorImage self.speed = spieler.speed end function Isolator:canEnter ( obj ) local dx, dy -- kann nur vom Spieler betreten werden if not Player:made ( obj ) then return false end -- bewegt sich der Isolator bereits, -- können wir ihn nicht betreten, bzw. in seine Richtung gehen -- da wir sonst durch ihn hindurch laufen if self:isMoving ( ) then return false end dx = self.x - obj.x dy = self.y - obj.y return self:canMoveTo ( dx, dy ) end function Isolator:canMoveTo ( dx, dy ) local feld = Szenen:current ( ) :get ( self.x + dx, self.y + dy ) if #feld == 0 then self:setTarget ( dx * 16 , dy * 12 ) return true end for i, e in pairs ( feld ) do if not Isolator:made ( e.obj ) and not Barbwire:made ( e.obj ) then return false else if e.obj:canMoveTo ( dx, dy ) then self:setTarget ( dx * 16 , dy * 12 ) return true end end end return false end Изолятор = класса ("изолятор", перемещение) Image = love.graphics.newAnimation изолятор (love.graphics.newImage ("images/isolator-0.png"), 16, 12, 0,1, 0) изолятор Изображение: setCenter (8, 6 ) изолятор функция инициализации (х, у, параметры) self.super: инициализации (х, у) = self.ani изолятор изображения self.speed = spieler.speed конце функции Изолятор: canEnter (объект) местные дх, ди - можно только доступ к ним невозможен из игроков, если игрок: сделано (объект), то возвращение ложных конец - диэлектрик движется уже - мы не можем вводить его или ее направлении двигаться в - в противном случае мы запускаем через него самостоятельно, если: isMoving () затем вернуться ложных дх конец = self.X - obj.x ду = self.y - obj.y обратным: canMoveTo (ах, ау) конец функции Изолятор: canMoveTo (ах, ау) = локального поля сцены: текущее (): получить (self.X + дх, ду self.y +), если поле == 0, то # * я: setTarget (DX 16, ау * 12) возвращение к истинной цели я, с парами (на местах) делать, если не Изолятор: Made (e.obj), а не Барбвир: (e.obj), затем вернуться ложным еще, если e.obj: canMoveTo (ах, ау), то самостоятельно: сделано setTarget (ах * 16 * 12 ду) возвращение истинной цели конец возвращения конец ложной конец 

Другой побочный эффект заключается в возможности сейчас есть несколько пунктов этой же области. Когда человек входит сцену в первый раз, как правило, только один объект в поле. Но кто играл игра робот уже знает, что в какой-то момент настало время, чтобы очистить его инвентаризации. Тада! Что может быть лучше, чем что-либо, не нужны в данный момент, просто лежал в куче? И когда это необходимо снова, просто скакать по полю, и автоматически вы собираете все.

К сожалению, я не могу счастливым о моем маленьком "достижение", потому что стоимость кадров: (интро немногим менее 1000 от 60 FPS на стенах просто упала ниже пятидесятого в сценах он держит до сих пор на границах ( 300-400 объектов), но как только вы их толкать изоляторы, вы можете снова исчезнуть до 10 кадров.

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

Теперь я хотел бы, но не беспокойтесь об этом, и заставил меня думать о GUI для widment GORC. Наконец, игра будет меню, окна сообщений, и прежде всего инвентаря. Мы посмотрим, и ночь только началась XD

22 января 2009

Занятия в Lua

У меня было несколько дней, начиная движения флюидов в GORC установлен и попробовал код немного легче. Так например, "Чарли и роботы были сдвинуты весьма схожи, ничего не было более двух объектов также использовать те же функции (перемещение, использовать ...) позволяют. Она вышла в чем-то вроде этого:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 m = { } mx = 0 my = 0 return m end function movable_setPosition ( m, x, y ) mx = x my = y end -- Beispiel: spieler = movable_create ( ) movable_setPosition ( spieler, 2 , 2 ) movable_create функция () () т = х = 0 = 0 моего возвращения конце функции movable_setPosition м (т, х, у) х = х = у моей конец - пример: movable_create игроков = () movable_setPosition (плеер, 2, 2) 

Все работали очень хорошо. Но сейчас я думаю. Разве не интересно весь объект здания ориентироваться? Но как в Lua? После долгих и прибегая к помощи возиться, я пришел к следующему выводу:

  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
 Class ( baseClass ) local new_class = { } local class_mt = { __index = new_class } function new_class:new ( self, ... ) local newinst = { } setmetatable ( newinst, class_mt ) newinst:init ( ) return newinst end if nil ~ = baseClass then setmetatable ( new_class, { __index = baseClass, __call = function ( self,... ) return self:new ( ... ) end } ) end function new_class:class ( ) return new_class end function new_class:super ( ) return baseClass end function new_class:init ( ) end function new_class:is ( theClass ) local b_isa = false local cur_class = new_class while ( nil ~ = cur_class ) and ( false == b_isa ) do if cur_class == theClass then b_isa = true else cur_class = cur_class:superClass ( ) end end return b_isa end return new_class end - Функция класса (BaseClass) местные = () местных new_class class_mt class.lua = () функция new_class new_class __index = новое (я, ...) местных = () Newin setmetatable (Newin, class_mt) Newin: Init () Newin возвращения конец, если ~ = ноль, то setmetatable BaseClass (new_class, __index = (BaseClass, __call = функция (я, ...) обратным: новые конце (...))) конец функции new_class: класс () конец new_class возвращения Функция new_class: супер () возвращает конец функции new_class BaseClass: Init () функцию new_class конца: есть (theClass) местные b_isa = = ложных местных cur_class new_class время (ноль ~ = cur_class) и (ложные == b_isa) делать, если cur_class == theClass то b_isa = правда еще cur_class = cur_class: супер класс () конец конец конец возвращение возвращение b_isa new_class конец 

Лучший в своем собственном файле, например, "class.lua сохранить. В действии видит в целом, мы имеем:

  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
 55
 56
 57
 58
 59
 60
  "class.lua" ) love.filesystem. требовать ("class.lua")

 - Стандарт объекта

 nil ) Класс объекта = (ноль)

 Объект функции: Init ()
	 - Gridposition
	 self.X = 0
	 self.y = 0

	 - Sprite / Анимация
	 self.ani = 0
 конец

 x, y ) Объект функции: setPosition (х, у)
	 self.X = х
	 self.y = у
 конец

 - Перемещение объектов

 Object ) Передвижные = класса (Object)

 Передвижные функции: Init ()
	 self.super (): Init ()

	 - Цель Gridposition
	 self.nx = 0
	 self.ny = 0

	 - Направление движения для удаления (!)
	 self.dir = 0

	 self.ani_x = 0
	 self.ani_y = 0

	 - Поля в секунду
	 self.speed = 4
	 self.last_update = 0
 конец

 Передвижные функции: нарисовать ()
	 местных х, у

	 ) * 16 + self.ani_x х = (self.X - 1) * 16 + self.ani_x
	 12 + self.ani_y у = 12 + * self.y self.ani_y

	 love.graphics.draw (self.ani, х, у)
 конец

 ...

 - Пример:

 стены = недвижимости ()
 , 15 ) стены: setPosition (10, 15)

 Движимое игроков = ()
 , 2 ) игроков: setPosition (2, 2) 

Спроси меня сейчас, но не точно, как все это работает;) Для меня это один. Кто-прежнему заинтересована в функционировании может быть настолько умные читать следующие страницы:

19 января 2009

Многоязычный iPhone App

Представьте, что вы перед ней немного игра для iPhone и в письменном немецком языке. Но потому, что вы хотите обратиться к широкой аудитории, не должно быть на английском языке. Но как проблемы? Я когда-то в поисковой системе Google немного.

В каталоге проекта Xcode Вы передадите в двух каталогах: "de.lproj" и "en.lproj"

crusher_locale_dirs.jpg

Теперь она соответствует вашим проектом, используя Добавить -> Новый файл ... -> Другое -> File Строки два новых файла добавил Localizable.strings ". Один в "de.lproj" и других в "en.lproj" каталог.

crusher_locale_newfile.jpg crusher_locale_newfile_en.jpg crusher_locale_newfile_de.jpg

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

crusher_locale_xcode_0.jpg

Я иногда в качестве примера из главного меню, код по-прежнему выглядит следующим образом:

  1
 2
 3
 4
 5
 6
 7
  * Элемент меню Пуск =
     @ "Starte Spiel" [MenuItemFont itemFromString: @ "начать игру"
     @selector ( startGame : ) ] ; Цель: самостоятельно выбора: @ селектор (начало игры:)];

 * Элемент меню Справка =
     @ "Hilfe" [MenuItemFont itemFromString: @ "Помощь"
     @selector ( help : ) ] ; Цель: самостоятельно выбора: @ селектор (помощь:)]; 

Строки "начать игру" и "помочь заменить" мы NSLocalizedString () функцию. StartGameKey и HelpKey дают теперь, что строки мы хотим, чтобы агентства пояснил, что в переводе, конечно;)

  1
 2
 3
 4
 5
 6
 7
 8
 9
  * Элемент меню Пуск =
     [MenuItemFont itemFromString:
     , @ "" ) NSLocalizedString (@ "StartGameKey", @ "")
     @selector ( startGame : ) ] ; Цель: самостоятельно выбора: @ селектор (начало игры:)];

 * Элемент меню Справка =
     [MenuItemFont itemFromString:
     , @ "" ) NSLocalizedString (@ "HelpKey", @ ")
     @selector ( help : ) ] ; Цель: самостоятельно выбора: @ селектор (помощь:)]; 

Даже наши два Localizable.strings править файлы, эта программа получает наше позднее переведенных строк.

В немецком языке:

  1
 2
  "Starte Spiel" ; "StartGameKey" = "начала игры";
 "Hilfe" ; "HelpKey" = "Справка"; 

и английском языках:

  1
 2
 "Start Game" ; "HelpKey" = "Help" ; "StartGameKey" = "Начать игру", "HelpKey" = "Справка"; 

И вот уже мы когда-либо доставлены в iPhone лучшие переводы с других языков:) это язык должен быть установлен, для которых мы предлагаем не перевод, кажется, перевод на английский язык принято, что в большинстве случаев, вполне нормально.

13 января 2009

Дизайн интерфейсов для iPhone RPG

Хотя я все еще пытаюсь узнать, как сделать OpenGL ES в текстуре, то возникает вопрос, как проектировать интерфейс?

Есть здесь еще достаточно классические примеры:

964203001-00.gif

m_4878_1088181171_snap0011.png

Или, как я видел в RPG на мой эльф:

1.jpg

Как-то это было бы очень важно для меня, но некоторые из путей, которые мы предлагаем, в конечном счете интегрировать iPhone. Менее постоянно видимые кнопки, которые снижают 3D-изображение без необходимости, и которые в конечном итоге служат плохо с несколько большими пальцами. Движение партией в 3D-изображение определенных областях, изменить участник создание drag'n'drop и т.д. очень грубой структуры могли бы выглядеть следующим образом:

screenshot_01.jpg

Что вы думаете об идее? Или вы, возможно, другие варианты?

10 января 2009


Переводчик

Страницы

Последние статьи

Категории

Архив

Мета


Страница оптимизирована по WP преуменьшать плагин