2013-04-09 87 views
-1

我在Action Script 3和C++的某些游戏引擎中拥有游戏开发经验。 但是,我想提高生产力,所以我想用Python,ruby或LUA开发一个新项目。 这是一个好主意吗?如果是的话,你会建议哪一个?什么是杀手游戏开发工具集或引擎?Python,Ruby或LUA中的游戏开发?

+0

Unity对Lua也有一些支持。 – Amicable 2013-04-09 08:07:49

回答

1

如果您有什么不满,请联系Pyglet
这是一个针对OpenGL的跨平台Python版本独立钩子,具有出色的性能。这有点棘手,但它比Python世界中的其他任何东西都做得更好。

如果你是初学者,我会用Pygame去。
这对系统有点累赘,但是用现代计算机不是问题..另外,它为游戏开发提供了预打包的API(因此得名):)

“官方”列表Python的游戏/图形引擎: http://wiki.python.org/moin/PythonGames

一些好的:

  • 的Panda3D
  • Pyglet
  • pygame的
  • Blender3D

例Pyglet代码:

#!/usr/bin/python 
import pyglet 
from time import time, sleep 

class Window(pyglet.window.Window): 
    def __init__(self, refreshrate): 
     super(Window, self).__init__(vsync = False) 
     self.frames = 0 
     self.framerate = pyglet.text.Label(text='Unknown', font_name='Verdana', font_size=8, x=10, y=10, color=(255,255,255,255)) 
     self.last = time() 
     self.alive = 1 
     self.refreshrate = refreshrate 
     self.click = None 
     self.drag = False 

    def on_draw(self): 
     self.render() 

    def on_mouse_press(self, x, y, button, modifiers): 
     self.click = x,y 

    def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers): 
     if self.click: 
      self.drag = True 
      print 'Drag offset:',(dx,dy) 

    def on_mouse_release(self, x, y, button, modifiers): 
     if not self.drag and self.click: 
      print 'You clicked here', self.click, 'Relese point:',(x,y) 
     else: 
      print 'You draged from', self.click, 'to:',(x,y) 
     self.click = None 
     self.drag = False 

    def render(self): 
     self.clear() 
     if time() - self.last >= 1: 
      self.framerate.text = str(self.frames) 
      self.frames = 0 
      self.last = time() 
     else: 
      self.frames += 1 
     self.framerate.draw() 
     self.flip() 

    def on_close(self): 
     self.alive = 0 

    def run(self): 
     while self.alive: 
      self.render() 
      # ----> Note: <---- 
      # Without self.dispatc_events() the screen will freeze 
      # due to the fact that i don't call pyglet.app.run(), 
      # because i like to have the control when and what locks 
      # the application, since pyglet.app.run() is a locking call. 
      event = self.dispatch_events() 
      sleep(1.0/self.refreshrate) 

win = Window(23) # set the fps 
win.run() 




注上Pyglet与Python 3.X:

你必须下载1.2alpha1否则它会抱怨你没有安装Python3.X: