篇文章属于'节目'

GORC -地图编辑器?

昨天有计时器的问题得到解决,不知何故我现在可以奉献的场景。 在这里,我想,但让我们不容易去上野,花方案整件事几次相当Bedenkminuten微型

第一次我一直在寻找一个可爱的地图编辑器和平铺发现。 是用Java编写并运行这样好的也认真参与任何操作系统。 我也觉得很方便,卡都存储在XML和可分配在地图编辑器中的对象及其属性。

后者是当它作为一个记事本适合例如有用。 事实可能是这样,即使你设计的卡丢失其内容。 他们的目标或传送点心灵传输领域的优秀的东西...:)

在国内,我将节省大约3二维数组现场。 一楼砖来。 为什么? 我注意到在机器人三,它看起来不很漂亮,如果在森林wegätzt墙,因为当时有一个在森林中的白色瓷砖。 这将是很好,如果有会出现在我的帐户棕色森林土。 这正是让我做我的第一个数组(我打电话,让我一层0次微型)。

第一层将包含所有其他非全国人大游戏对象。 并在第2层的屋顶,然后一切可以运行在长期查理。 查理你在我的帐户只在一所房子,是不是引起更多的二层和我们有在机器人天台游戏同样的效果:)

NPC和所有对象都存储在一个列表中的每个。 然后这些不sooooo长时间延迟,但我必须有一个在所有可能的多个对象和相同的领域。 由于这种情况的话,我相信,只要球员抛弃的对象。 或者是因为我错过了什么?

目前,我已经为每个对象自己的巴纽兼容,但不幸的是各种瓷砖没有那么大。 所以这里要再谈一个单一图像获得完全tileset。 一个或两个转变的对象基类,这个小问题也将得到解决。

我希望的时刻,我仍然在本周内创造这一切,因为这样我可以放过再次在GUI蒸汽;)

12评论 2009年2月8日

GORC -我只是做愚蠢的是:(

因为有爱一切都运作得很成功,我抄了计时器,并作为预防措施交换全浮动整数变量。 这带来了不错的速度撞上我的动画爆裂和完美。 但我只是想利用液态对象运动和一切开始打勾。 所以,一切转换回浮动。 现在他们更流畅,但他希望是愚蠢又哑,20医科损失:(

,必须有更好的... ...我们将目光

2009年2月7日

GORC -下一站:对象类

没有在他们的新家园辛格尔顿(屏幕,定时器,图像)的最基本的功能杂音消失。 游戏类还需要慢慢形成:)

下一步是为游戏元素对象的基类。 首先,我想看看它是如何在野生环境的行为,因为它必须关心任何动画也。 没有爱,我应该关心自己,所以这一次*笑*

我已经在爱情GORC每个对象实例的版本已发现自己的实例图片...这当然是没有必要的资源。 这我得考虑,以确保图像加载一次,并会在任何其他“存储从缓存”花时间。

因此,我站出来...尽管冷战思维过程非常缓慢和微型

2009年2月6日

GORC - C + +中

前一段我还不敢肯定。 但是,没有我刚回答贺克的评论,有Ð(再次),而非由我对变量和父类函数的继承他们的想法不感兴趣小子。

我承认我是来真的不知道我应该做的事情如“虚拟”和“保护”。 但是,如果我为:

 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 void draw ( uint x , uint y ) { ... } ... } class Animation : Image { ... void draw ( ) { draw ( 1 , 1 ) ; } ... } 一流的 图像(... 无效(uint,uint y)的(...) ...)动画  :图像(... 无效()(画(1,1);))... 

的确,为什么要抱怨上帝的意志是D编译器,类不绘制动画uint(“uint)函数? 我的理解是,他们仍然应该继承自Image类,对不对? 好,感谢谷歌,我是这样看:

 
 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 的x,y)
     
         ...
     
     ...
 

 Image 动画  图像
 
     ...
     draw ; 别名形象。  绘制;

     无效()
     
         , 1 ) ;(1,1);
     
     ...
  

唷! 慢慢地,我真的想不处理谁在他睡觉的面向对象的原则,应该允许D的手指:(

所以...我买的C + +,这涉及我的无知有点亲切,并尝试了解它;)

3条评论 2009年2月5日

GORC -新的开端? C语言,C + +,基本免费或D?

在这里我的旧笔记本电脑GORC运行得太慢。 这主要是因为情感的使用OpenGL。 一个2D游戏引擎SDL的就足够完美。 眼镜。 但是,现在怎么办?

其实一个非常好的时机GORC在一个“真正的”编程语言和重写相同使用SDL库。 最后,我需要不超过SDL的,SDL_mixer和SDL_image。 后来还是南湖为脚本,但在那之前还有时间...

在短期来这里列出四种语言:C语言,C + +,基本的,免费数字火星四,后者我一直想闻一多一点密切合作。 我选择的图书馆的支持。

C和C + +不喜欢我写的太多了。 几乎可以被编译的一切,我只是爱的语法:)

免费基本就像一个快速的基本语法C。 可以编译,但可惜只适用于Windows和Linux。

D将可能是“更好地比C + +”。 在何种程度上影响像GORC项目的容易,不知道。 编制设计扩频,非常感谢容易在C / C + +。 因为我还从来没有真正的管理,这让我的程序编译通过。/配置&作出。 只是太贵了所有*笑*

在这里,一次小的方向一眼D辑:

 
 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的; 进口探戈。 印务局。 控制台; 无效的主要()(尝试 (DerelictSDL. 负载 ();) 赶上 (例外五)(法院(“ 无法加载SDL的共享库。\ ñ”); 返回;)SDL_Init(SDL_INIT_VIDEO); SDL_SetVideoMode(640,348,24,SDL_SWSURFACE); SDL_WM_SetCaption(GORC“, 空); mainloop: 虽然 (真)(SDL_Event事件 (SDL_PollEvent(&事件))(开关 (事件)( 案件 SDL_QUIT: 打破 mainloop; 默认: 打破;))SDL_Delay(10);)法院(“冲电气 Dokili。\ ñ”); SDL_QUIT(); DerelictSDL。 卸载 ();) 

所以? 我买了什么呢?

4条评论 2009年2月3日

GORC -像素无票

我今天一整天的死看* *摇头

菜单和对话框框架已经没有任何问题制定,确定...我们仍然能够迅速完成的主菜单,然后下班后。 尼克斯适应那里...不知怎的,无论是菜单项没有在窗口或窗口太大。 但是你可以去当一个错误的框架的一部分正是8 × 10像素,是一个大的字体大小是相同的信? 简单的数学,但不适合的东西!

我实际上只是几个字母的字体资源油漆错过一个框架,看到错误。 在此之前,我有我的源可能已经读过没有结果校正一千倍。 对于位图字体(当然我不知道)爱插入标准的功能是一个新兴的一两个字母之间的像素。 幸好还有一个功能,由于我可以离开这个愚蠢的像素;)

好吧,我现在已经有足够的节目。 菜单可以现在终于等到今天,谁是18岁,是我已经没有强有力的庆祝活动。

恭喜你,兄弟!

2评论 2009年1月24日

GORC -游戏对象类过后,何去何从?

前言:我发现我GORC我对机器人论坛游戏线程现在被DevBlog滥用。 这时候,我现在工作的人反对,我的进步,在这个博客帖子...其实,他们也属于思想;)

所以...我用了上周塞进类的所有游戏元素。 一个场景的内容是没有一个二维数组较长,但在两种洛表。 其中一个机器人,那么也许所有其他的NPC这里来。 而在其他表中插入所有(墙壁其他元素,黄金等)。

该程序的目的是为了使游戏的逻辑控制。 而是一个长期的if - then - else块现在把一个类的实例在其特定对象的所有逻辑。 一个例子:

 
 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 )黄金类=(“金”,对象)

 "images/gold-0.png" )黄金love.graphics.newImage图像=(“images/gold-0.png”)
 , 0 )金像:setCenter(0,0)

 "sounds/gold.wav" )金声love.audio.newSound =(“声音 / gold.wav”)

 x, y, params )黄金init 函数:( 的x,y,params)
	 self.super:初始化(的x,y)

	 self.ani =金像
 结束

 obj ) 功能黄金:canEnter(obj的)
	 -可球员签订的唯一
	 obj ) then return false end 如果不是球员:由(obj的), 则返回false结束
	 返回true
 结束

 obj ) 功能黄金:onEntered(obj的)
	 obj ) then return end 如果不是球员:由(obj的), 然后返回结束

	自: 删除 ()
	 spieler.gold spieler.gold + 1 =
	 love.audio.play(金声)
 结束 

确定。 一个收藏对象现在没有真正的脚本技术的挑战。 但如何对某事更复杂?

 
 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 )绝缘子=(“绝缘体”,移动)

 love.graphics.newImage ( "images/isolator-0.png" ) , 16 , 12 , 0.1 , 0 )隔离图像= love.graphics.newAnimation(love.graphics.newImage(“images/isolator-0.png”),16,12,0.1,0)
 , 6 )隔离器的图像:setCenter(8,6)

 x, y, params )绝缘子功能:初始化(的x,y,params)
	 self.super:初始化(的x,y)

	 self.ani =绝缘体形象

	 self.speed = spieler.speed
 结束

 obj )绝缘子功能:canEnter(obj 的)
	 当地 dx和dy

	 -可球员签订的唯一
	 obj ) then return false end 如果不是球员:由(obj的), 则返回false结束

	 -绝缘体动作了,
	 -我们无法进入,或在它的方向去
	 -当我们漫步否则

	 then return false end 如:isMoving(), 然后返回false结束

	 dx的= self.X - obj.x
	= self.y - obj.y

	 dx, dy ) 回报:canMoveTo(dx和dy)
 结束

 dx, dy )绝缘子功能:canMoveTo(dx 和dy)
	 Szenen:current ( ) :get ( self.x + dx, self.y + dy ) 本地外地=场景:电流():获取(self.X + dx的,self.y + 镝)

	 0 then如果外地== 0,  
		 16 , dy * 12 ):setTarget(dx的12 * 16 *
		 返回true 
	 结束

	 ( feld ) do 因为我,能量场) 在对  
		 e.obj ) and not Barbwire:made ( e.obj ) then 如果不是绝缘体:制造(e.obj), 而不是巴巴尔:由(e.obj), 那么
			 返回false
		 其他
			 dx, dy ) then 如果 e.obj:canMoveTo(dx)上 ,然后 16 , dy * 12 ):setTarget(dx的12 * 16 *
				 返回true
			 结束
		 结束
	 结束

	 返回false
 结束 

另一侧的好处是现在有能力在同一领域的几个项目。 当一个人进入了第一次现场,通常只有一个字段对象。 但是,谁发挥的机器人游戏已经知道,在某些时候已经到了清理库存情况。 多田! 有什么能比任何事情是不是在目前需要更好的,只是躺在一个堆? 当再次需要它,只需运行在外地和自动将你收集一切。

可惜我不能真的很高兴我的小“成就”,因为它的成本框架:(只在墙上的60医科1000只以下的场景第50次把它丢在边界仍持有(该介绍300-400对象),但一旦你把他们周围的绝缘体,你能再次消失高达10帧。

不过有一个或其他的想法我怎么可以限制损失。 但长远而言,我会更好的东西找一个表现之解决方案。 什么复杂,但决不是对象的快速中央脚本...

现在我想,但不必担心它,我曾在GUI思维GORC widment。 最后,比赛将是菜单,消息框,上面所有的库存。 我们会看到,夜晚才刚刚开始微型

2009年1月22日

类中的Lua

我有几天开始在GORC流体运动,并试图安装一个小的代码更容易做出。 由于如查理和机器人是针织非常相似,没有什么比两个对象也得出同样的功能(移动,使用...)让。 它出来的是这样的:

 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
  movable_create 函数 ()
     =(男)
     x = 0时
    = 0
     返回
 结束

 m, x, y ) movable_setPosition 功能 (米中,x,y)的
     x = x
    = Ÿ
 结束

 -例子:
球员= movable_create()
 , 2 ) movable_setPosition(球员,2,2) 

一切都进行得还算顺利。 但是,刚才我在想。 岂不是很有意思,建立整个对象? 但是,我们如何在南湖? 经过大量的使用Google和摆弄,我得出以下结论:

 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:初始化() Newin 返回结束如果 〜= 零然后 自我,setmetatable BaseClass的(new_class,__index =(BaseClass的,__call = 功能 (...) 返回自己:新(...) 完)) 结束函数 new_class:类() 返回结束 new_class 功能 new_class:超() 返回结束 new_class BaseClass的功能 :初始化() 函数结束 new_class:是(theClass) 当地 b_isa = 虚假当地 = cur_class new_class (零 〜= cur_class) (假 == b_isa) 做,如果 cur_class == theClass = true,则 b_isa 其他 cur_class = cur_class:父类() 返回结束结束结束结束返回 b_isa new_class 

该文件在它自己的最好,如“class.lua保存。 在行动上看到整体来说,我们有:

 
 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" ) -- Standard Objekt Object = Class ( nil ) function Object:init ( ) -- Gridposition self.x = 0 self.y = 0 -- Sprite / Animation self.ani = 0 end function Object:setPosition ( x, y ) self.x = x self.y = y end -- Bewegliche Objekte Moveable = Class ( Object ) function Moveable:init ( ) self.super ( ) :init ( ) -- Ziel Gridposition self.nx = 0 self.ny = 0 -- Bewegungsrichtung (entfernen!) self.dir = 0 self.ani_x = 0 self.ani_y = 0 -- Felder pro Sekunde self.speed = 4 self.last_update = 0 end function Moveable:draw ( ) local x, y x = ( self.x - 1 ) * 16 + self.ani_x y = self.y * 12 + self.ani_y love.graphics.draw ( self.ani, x, y ) end ... -- Beispiel: mauer = Objekt ( ) mauer:setPosition ( 10 , 15 ) spieler = Movable ( ) spieler:setPosition ( 2 , 2 ) love.filesystem。 要求 (“class.lua”) -标准对象类对象=(无)函数对象:的init() - Gridposition self.X self.y = 0 = 0 -雪碧/动画 self.ani = 0 结束函数对象:setPosition(的x,y)= x的 self.X self.y = Y  -可移动可移动的物体 =(对象)可移动的功能 :初始化()self.super():初始化() -目标Gridposition self.nx self.ny = 0 = 0 -消除运动方向(!)self.dir self.ani_x = 0 = 0 = 0 self.ani_y - = 领域每秒 self.speed self.last_update = 4 0 结束函数移动式:绘制() 本地X,x的y =(self.X - 1)* 16 +为y = self.ani_x self.y * 12 + self.ani_y love.graphics.draw(self.ani中,x,y)的 结束 ... -例如:=对象():setPosition(10,15)移动球员=()球员:setPosition(2,2) 

现在问我,但不是所有这一切到底如何运作;)对我来说是一。 谁是有兴趣的运作仍然可以有这么聪明阅读以下网页:

2009年1月19日

多种语言iPhone应用程序

想象一下,在她刚刚为iPhone小游戏前你在德国写的。 但是,因为你要呼吁尽可能多的观众,应该有一个英文版本。 但你如何唱好这个问题? 有一次,我GOOGLE了一下。

在您的Xcode项目目录您提交给两个目录:“de.lproj”“en.lproj”

crusher_locale_dirs.jpg

现在,它适合你的项目使用添加- >“新建文件... - >”其他- >“文件弦乐两个新的文件添加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

我有时作为一个主菜单为例,代码仍然是这样的:

 
 2
 3
 4
 5
 6
 7
 MenuItemFont itemFromString : @ "Starte Spiel" target : self selector : @selector ( startGame : ) ] ; MenuItem * help = [ MenuItemFont itemFromString : @ "Hilfe" target : self selector : @selector ( help : ) ] ;开始菜单项* = [MenuItemFont itemFromString:@“ 开始游戏” 的目标:自我选择:@ 选择开始游戏(:)];菜单项*帮助= [MenuItemFont itemFromString:@“ 帮助” 目标:自我选择:@ 选择 (帮助:)] ; 

字符串“开始游戏”“帮助取代”我们的NSLocalizedString()函数。StartGameKeyHelpKey给我们什么字符串现在想拥有该机构说,翻译的过程中,;)

 
 2
 3
 4
 5
 6
 7
 8
 9
 菜单项*开始=
     [MenuItemFont itemFromString:
     , @ "" ) NSLocalizedString(@“StartGameKey”,@“”)
     @selector ( startGame : ) ] ; 目标:自我选择:@ 选择 (开始游戏:)];

 *菜单项帮助=
     [MenuItemFont itemFromString:
     , @ "" ) NSLocalizedString(@“HelpKey”,@“”)
     @selector ( help : ) ] ; 目标:自我选择:@ 选择 (帮助:)]; 

即使我们两个Localizable.strings编辑文件,对这一方案得到我们后来翻译的字符串。

德国:

 
 2
  "Starte Spiel" ; “StartGameKey”=“开始游戏”;
 "Hilfe" ; “HelpKey”=“帮助”; 

英文:

 
 2
  "Start Game" ; “StartGameKey”=“开始游戏”;
 "Help" ; “HelpKey”=“帮助”; 

我们曾经和已经交付给iPhone的最佳语言翻译:)应设置为一个语言,我们将不提供翻译似乎是采取了什么是英语翻译在大多数情况下,完全确定。

2009年1月13日

界面设计的iPhone冒险

虽然我仍然试图找出如何呈现在纹理的OpenGL ES,这是问题出现了如何设计界面?

这里有足够多的一次典型的例子:

964203001-00.gif

m_4878_1088181171_snap0011.png

或者,正如我已经看到了关于我的小精灵冒险:

1.jpg

不知怎的,这将是对我很重要,但我们的方式提供给最终整合iPhone一些。 减永久可见按钮,减少不必要的三维视图,并最终将成为不良,稍大的手指。 议案规定的领域内的三维视图,以党的drag'n'drop改变党的成立,等等一个非常粗略的结构可能是这样的:

screenshot_01.jpg

你怎么看的呢? 或者你可能有更好的建议?

2009年1月10日


翻译

页面

最后文章

分类

档案

梅塔


页面优化可湿性粉剂缩小 WordPress的插件