精华内容
下载资源
问答
  • 适用于Python的OpenGL 3D游戏引擎。 版本0.7 MIT许可证。 工作正在进行中。 渲染示例 视频 要求: 2.7或3.4+ pip install pysdl2 pip install git+https://github.com/jr-garcia/Glaze.git pip install numpy ...
  • Blender的3D游戏引擎
  • 不过,它演示了您可以从Python以60fps的速度移动数百位几何体。虽然上面的演示是相当简单的,因为它使用简单的几何和无纹理的脸,我发现一件事是,更详细的几何,纹理映射或其他更现代的图形效果没有实质性的影响帧...

    它被称为“图书馆”,但我太天真了:它是一堆个人实验代码。

    不过,它演示了您可以从Python以60fps的速度移动数百位几何体。

    虽然上面的演示是相当简单的,因为它使用简单的几何和无纹理的脸,我发现一件事是,更详细的几何,纹理映射或其他更现代的图形效果没有实质性的影响帧速率。或者至少它们不会比在C程序中使用相同的效果更糟糕。这些都是在GPU上运行的,所以如果您的程序是用Python编写的,这一点都没有区别。

    Python对性能敏感的一点是,如果您在CPU端创建动态几何体,例如通过弯曲或融化形状来移动形状内的各个顶点。在Python中进行这种逐顶点计算,然后从结果构造一个新的ctypes数组,然后将这个几何体分流到GPU,每帧都会很慢。相反,您可能应该在顶点着色器中执行此操作。

    另一方面,如果你只需要仿射变换(移动物体、旋转物体、打开抽屉、旋转车轮、弯曲有关节的机器人手臂),那么所有这些都可以通过GPU完成,而你的程序是用Python编写的,这对性能没有什么影响。

    展开全文
  • I am planning to write an simple 3d(isometric view) game in Java using jMonkeyEngine - nothing to fancy, I just want to learn something about OpenGL and writing efficient algorithms (random map genera...

    I am planning to write an simple 3d(isometric view) game in Java using jMonkeyEngine - nothing to fancy, I just want to learn something about OpenGL and writing efficient algorithms (random map generating ones).

    When I was planning what to do, I started wondering about switching to Python. I know that Python didn't come into existence to be a tool to write 3d games, but is it possible to write good looking games with this language?

    I have in mind 3d graphics, nice effects and free CPU time to power to rest of game engine? I had seen good looking java games - and too be honest, I was rather shocked when I saw level of detail achieved in Runescape HD.

    On the other hand, pygame.org has only 2d games, with some starting 3d projects. Are there any efficient 3d game engines for python? Is pyopengl the only alternative? Good looking games in python aren't popular or possible to achieve?

    I would be grateful for any information / feedback.

    解决方案

    If you are worried about 3D performance: Most of the performance-critical parts will be handled by OpenGL (in a C library or even in hardware), so the language you use to drive it should not matter too much.

    To really find out if performance is a problem, you'd have to try it. But there is no reason why it cannot work in principle.

    At any rate, you could still optimize the critical parts, either in Python or by dropping to C. You still gain Python's benefit for most of the game engine which is less performance-critical.

    展开全文
  • 使用Python脚本玩转类FOMO3D游戏 前言 笔者其实编程水平并不高,也是半路出家的半吊子,第一次在CSDN上发帖,如果在技术上有什么不成熟的地方请各位大佬能够指教一下。 另外,本文只探究技术,并不鼓励大家把大量的...

    使用Python脚本玩转类FOMO3D游戏

    前言

    笔者其实编程水平并不高,也是半路出家的半吊子,第一次在CSDN上发帖,如果在技术上有什么不成熟的地方请各位大佬能够指教一下。
    另外,本文只探究技术,并不鼓励大家把大量的经历投入到这类游戏上。

    1.什么是FOMO3D

    FOMO3D本身是个区块链游戏,至于什么游戏类型,我不知道该怎么定义,可以说这个游戏本身就创造了一种游戏类型,大家可以参考一下百度上的搜索结果。

    游戏的规则很简单,玩家购买key投入到四种不同的动物上,没买一把key,key的价格都会上涨,而每买一把key,结束时间都会延迟30s。知道最后没人买了,这个游戏就会结束,最后的购买者及其所在团队会被判定为胜利者,并按照团队的分红模式进行分红。
    在这里插入图片描述
    虽说ETH的价格已经跌了很多,但笔者并没有那么多的ETH,做实验嘛,还是挑便宜的币做实验来的好。
    所以,笔者决定在币价比较低的FOMO类游戏平台开始测试。
    入口在FUNMVP
    在这里插入图片描述
    FUNMVP这个网站是在一个区块链的投资群里看到的,不过笔者注意到这里的人大部分都是投资人不是做技术的,所以大体猜测了一下,如果这些人参与这个游戏,他们大部分应该都是手工操作的,那么我使用脚本和他们跑,也许时间会久一些,但只要策略对,我耗得过他们。(事实上经过观察,他们确实在手动玩)

    2.规则分析

    既然决定要写脚本,那一定要先研究规则,不明白规则就瞎操作肯定是要跪的。
    在这里插入图片描述
    从规则上我们可以看出,每个奖金池的前5%总是有稳定的回报,既然如此我们可以得出结论,每个动物的第一把key是稳赚不赔的,而如果我们能预估出每局每个动物会被投入多少key,那么我们就可以知道,我们在前面有多少把key时可以获得稳定的收益。
    而每个奖池的分配规则并不一样,其中买马的话如果赢得最后一把key奖励是最高的,实际上来看,马也确实很受欢迎,不过问题来了,虽然说如果最后获胜,马的奖励很高,但买马的人都是冲着成为最后赢家去的,其存在非常严重的内部竞争。每个玩家都是各自为战,无论现在的持有人是不是买的马,自己都要竞争下来,不然是赚不到的。
    与马相对应的是牛,买牛的玩家会在没有交互的情况下默契的形成一个团体。这个团体出现内部竞争的情况比较小,买牛的玩家只要确认最后的买入者是牛就不会轻易的去内部竞争,所以说牛的买入者的key大部分时间都是在对抗其他三个团队,而他们本身是一个整体,比其他任何团队的资源利用效率都高。不过,牛这个团队本身也会因为机制的原因存在一个重大问题,牛的团队虽然没有太多内部竞争,但也缺少内部激励。随着游戏的进行,key价会越来越贵,牛的早期投入者会在后期竞争中非常上心,因为投的早,赢的话回报率高,而投的晚且在key价的时候没投入,那买马要比买牛划算的多。所以说牛这个团队在会渐渐的失去吸引新人的能力,团队参与者会逐渐固化。如果奖金池越来越大,没有新人站队,这个团队的后劲将会越来越不足。

    总的来说,马和牛代表着两个不同的极端,而鱼和狗则在其中寻找着平衡。

    3.检测端口

    在这里插入图片描述
    在了解规则后我们就要从游戏的接口进行一下探索。在其中笔者发现了一个名为"querygameinfo"的接口,从这个接口我们可以获取到本轮游戏的结束时间、现在的总奖池金额、游戏轮数、key的单价、最终key的持有者昵称以及各个动物的奖池的总金额。

    那么我们现在遇到了第一个问题一共有多少把key投入到了游戏当中?由于key的价格是按照固定比率递增的,所以总奖金池是一个等比数列累加的结果。
    在这里插入图片描述
    在这里,a1就是数列最开始的值,也就是1,而规则中已经说明增幅为0.008%,那么q应该为1.00008,Sn已知,q已知,那么n(key的总数)可求。
    不过我们知道key的总数还是不够的,因为除非从一开始就进行监控否则我们无法知道每个奖池的具体情况。
    但是,我们可以大体估算一下。我估算的方式是:
    动物的key投入=(动物奖金池/总奖金池)(key的总数)
    当然还有一种估算方式是:
    动物的key投入=动物奖金池/((1+现在key的价格)/2)
    当然这两个方式都不是特别精确,所以我们求出的5%的安全位置最好保守一点:
    前百分五=int(动物的key投入
    0.05*0.9)
    在假设新的一局的战况和上一局近似的情况下,我们可以大体找出前5%大概是多少把key,这样我们大概可以知道在每个奖池达到多少前可以入手。
    在这种情况下,如果我们不争夺最后一把key的话,那么我们可以大体找到比较合适的投入时机。

    好了,如果说我们要和别人争夺最后一把key我们该怎么办呢?
    首先,如果你的资源特别特别特别多,其实买哪一个都一样,试想一下,一个池子里超过90%的key都是你投的,赢了就差不多是全赢了。
    但如果你钱不多的话,我建议先进行一个记录。
    在这里插入图片描述
    我们先看一下从"querygameinfo"的接口中我们应该关注并记录哪些数据。
    在这里我们应该优先关注的就是"LastNickName"这个字段和"LastTeamName"。把这两个字段的内容加上时间戳一同记录到数据库,这样我们可以大概了解有玩家比较活跃(其实就是看看和我们争夺最后一把key的对手有哪些)而我们的资源足够打败几个。通常情况下,我会倾向调取数据库中最后20个买入记录,当这20个买入记录中只有2~3个名字出现时,就意味着我们可以入手了,对手少了那我们就可以的竞争成本就小了。但我们的监控不能停,当除了自己外其他的参与者超过了3个我们要立刻退出。永远记住,我们玩的是“绝地求生”不是“魔兽世界”,我们要保存实力活到最后而不是打怪升级然后干翻全场。(虽然后者也能赢但代价太大了)

    4.如何用实现登录

    很抱歉最后才讲了登录,因为这个难度不是很大,但仔细想一想很多玩Python的人可能重逻辑和算法对于接口方面了解不是很多,所以还是举例说明一下比较好。
    这个游戏有两个登录接口,两个接口我都讲一下。

    在这里插入图片描述
    右键点击游戏,复制链接
    在这里插入图片描述
    这里的链接是get请求方式,sign签名是动态生成的,估计是根据时间戳动态生成的。

    import requests
    import json
    def sessionDefine(address):
    	session = requests.session()
    	content = session.get(address)
    	info = session.get('http://crownedup.gamefmvp.com/api/fomo3d/querygameinfo/') 
    	return session
    

    另一种是静态Post方法登录:

    在这里插入图片描述
    这里有个小技巧分享给大家,或许大家在其他地方上也能用得到。
    这个接口是笔者意外发现的,当笔者正常登录时成功跳转,这个api接口笔者捕捉不到,让笔者很苦恼。直到有一次笔者意外输错,这个接口才暴露出来了。所以说,笔者得到了一个宝贵的经验,有时候当你找不到接口的时候不妨故意输错试一试,说不定有意外发现。

    import requests
    import json
    def sessionDefine2(userName,password):
        session = requests.session()
        res_json = {"userName":userName,"password":password}
        payloadHeader = {
            'Host': 'crownedup.gamefmvp.com',
            'Content-Type': 'application/json;charset=UTF-8',
        }
        content = session.post('http://crownedup.gamefmvp.com/api/happymoney/logintohm/',data=json.dumps(res_json), headers=payloadHeader)
        return session
    

    以上是笔者写好的两个登录工具,登录的信息会存在session中,我们可以通过session完成各种操作。
    在这里插入图片描述
    买key的链接:

    http://crownedup.gamefmvp.com/api/fomo3d/buykey/?teamId=6872&keyCount=1
    

    笔者买的是牛,1个key,我们可以看出本轮游戏中牛的teamId应该是6872,keyCount对应的是购买的数量。这个其实这个在检测端口部分已经看出来了就可以看出来,而且还能发现一个规律:
    TeamID= (GameId-1)*4 +(1~4)

    import requests
    import json
    #获取当前奖金池状况
    def infoGet(address):
    	info = session.get(address)
    	#把json转换成字典项处理更方便
    	result = json.loads(info.text)
    	return result
    #购买key
    def buKeys(teamId,keyCount):
    	buy=session.get('http://crownedup.gamefmvp.com/api/fomo3d/buykey/?teamId='+str(teamId)'&keyCount='+str(keyCount))
    

    后记:

    在这里笔者只提供一下写的工具函数,完整脚本,笔者不方便在这提供。不过在这可以提供一个早期写的一个比较简单简单的demo供大家参考。

    import requests
    import json
    #动态登录
    def sessionDefine(address):
    	session = requests.session()
    	content = session.get(address)
    	info = session.get('http://crownedup.gamefmvp.com/api/fomo3d/querygameinfo/') 
    	return session
    #静态登录
    def sessionDefine2(userName,password):
        session = requests.session()
        res_json = {"userName":userName,"password":password}
        payloadHeader = {
            'Host': 'crownedup.gamefmvp.com',
            'Content-Type': 'application/json;charset=UTF-8',
        }
        content = session.post('http://crownedup.gamefmvp.com/api/happymoney/logintohm/',data=json.dumps(res_json), headers=payloadHeader)
        return session
    
    #获取当前奖金池状况
    def infoGet(session,address):
    	info = session.get(address)
    	#把json转换成字典项处理更方便
    	result = json.loads(info.text)
    	return result
    #购买key
    def buKeys(teamId,keyCount):
    	buy=session.get('http://crownedup.gamefmvp.com/api/fomo3d/buykey/?teamId='+str(teamId)'&keyCount='+str(keyCount))
    
    
    session = sessionDefine2(userName,password)#在这里使用用户名和密码分别代替userName和password,记住是字符串类型,要加''
    #session = sessionDefine(address) #如果使用动态登录用这个,记住address是字符类型需要''
    
    GameId =''
    while 1==1 :
    	try:
            info = session.get('http://crownedup.gamefmvp.com/api/fomo3d/querygameinfo/') 
            result = json.loads(info.text) #json转字典项
            now_time = datetime.now() #现在时间
            endtime  = datetime.strptime(result['Result']['Data']['EndTime'],"%Y-%m-%d %H:%M:%S")#结束时间
            lasttime = endtime - now_time #时间差
            price =  result['Result']['Data']['KeyPrice']
            NickName =result['Result']['LastNickName']
            if GameId != result['Result']['Data']['GameId'] :
                GameId=result['Result']['Data']['GameId']
                for i in range(4):
                    buy_num = 10 #
                    buy_get_str = 'http://crownedup.gamefmvp.com/api/fomo3d/buykey/?teamId=' + str((int(GameId)-1)*4+1+i) + '&keyCount='+str(buy_num)
                    buy = session.get(buy_get_str)
                    cnt_key_now =cnt_key_now+ buy_num
            if NickName != '你的昵称' and lasttime < 10 :#记得在这里改掉你的昵称
                buy_get_str = 'http://crownedup.gamefmvp.com/api/fomo3d/buykey/?teamId=' + str((int(GameId)-1)*4+1) + '&keyCount='+str(1)
                #这个策略很简单就是如果最后只剩10s如果最终key的持有者不是你就出手
    	except :
    		session = session_define('用户名','密码')#这个地方也设置一下这样掉线也能迅速连上 
                
    

    不过如果各位看官感兴趣的话可以加笔者的创建的群,群是人工审核,暗号是“GTM的PHP”,群二维码:
    在这里插入图片描述
    笔者会在群内共享使用的最新脚本,大家可以自己拿,但希望能给些反馈建议。另外如果想通过脚本工具去完成自己日常枯燥工作的朋友们也可以加群,我们可以互相讨论并一起设计程序脚本。

    展开全文
  • 在此panda3D游戏项目中,该项目由5个程序组成,一个程序用于处理菜单,另一个程序用于处理菜单。主要的游戏代码,另一个处理额外图形的程序,另一个是自述对话框的代码。 游戏旨在在旧的且速度较慢的硬件(即没有...
  • Python 绘制3D宇宙飞船

    千次阅读 多人点赞 2020-11-09 08:08:00
    见过用Python进行3D建模操作的么?下面演示给你看看:厉害吧?这就是Blender,一款能用Python进行建模的软件。Blender是一个免费的开源3D计算机图形软件工具集,用于创...



    见过用Python进行3D建模操作的么?下面演示给你看看:

    厉害吧?这就是Blender,一款能用Python进行建模的软件。

    Blender是一个免费的开源3D计算机图形软件工具集,用于创建动画电影,视觉效果,艺术品,3D打印模型,动态图形,交互式3D应用程序和计算机游戏。

    不仅如此,它还提供了一个Python与Blender交互的API,使Python进行3D建模成为一种可能:
    https://docs.blender.org/api/2.81/ 

    下面介绍一下这个宇宙飞船项目。这是一个比赛作品,作者用它参与了reddit的一个2016年6月的挑战赛。实现的原理并不复杂,就是从一个立方体开始建造船体,利用随机数增加船体的不确定性。然后慢慢地往船体增加细节,比如引擎、天线、炮塔、照明灯等等。

    项目地址:
    https://github.com/a1studmuffin/SpaceshipGenerator

    快来生成你的宇宙飞船

    下面介绍一下怎么运行这个项目,你需要做如下准备:

    1. 安装Blender 2.76以上:
    https://www.blender.org/download/

    2. 下载作者的生成代码(也就是已经和Blender做好API联调的代码)。
    如果你访问不了Github, 可在公众号后台回复 宇宙飞船 下载这些代码。

    3. 将下载好的代码( add_mesh_SpaceshipGenerator.zip, 以压缩包的形式)载入到blender中:

    3.1 点击菜单栏里的 Edit — 选择Preferences.

    3.2 选择左侧的Add-ons,然后点击install,选择刚刚下载下来的压缩包。

    3.3 载入后记得勾选插件。

    4. 返回主视图后,使用快捷键shift+F5进入3D视图

    5. 使用快捷键shift+A,这时候鼠标右键会弹出选项,在mesh中选择 Spaceship即可生成你的宇宙飞船!!

    怎么样,够不够帅?记得自己实践一下生成一个哦!

    自己用Python进行DIY

    如果你想自己再进行一下DIY,让飞船变得更丑帅气,那也是可以的!把下载下来的压缩包解压,里面会有一个文件叫spaceship_generator.py的,这个就是主要的模型生成代码。你能在里面看到作者的许多参数设置,稍微修改一下会有惊喜哦!

    你也可以阅读完作者的这份源代码(也不多,就800行),自己学着做一个有别于宇宙飞船的3D模型!

    如果你喜欢今天的Python 教程,请持续关注Python实用宝典,如果对你有帮助,麻烦在下面点一个赞/在看,有任何问题都可以在下方留言,我们会耐心解答的!

    点击下方阅读原文可以获取所有代码和链接哦!

    Python实用宝典 (pythondict.com)

    不只是一个宝典

    欢迎关注公众号:Python实用宝典

    展开全文
  • 适用于3D游戏Python矢量数学库。 用法 主要课程: 向量:3D向量。 矩阵:4x4列主矩阵,M1 * M2表示先应用M2,然后再应用M1。 四元数:旋转的四元数。 变换:表示为“平移-旋转比例”的变换。 >> > from ...
  • 郑州轻工业学院-Python网络爬虫、Unity 3D 游戏开发报告--2
  • 郑州轻工业学院-Python网络爬虫、Unity 3D 游戏开发报告
  • 甲壳动物十字军是一款3D射击游戏,它是使用python-ogre用python创建的,它是CS课程的最终项目。 描述 忍者vs机器人(玩家vs CPU) 忍者vs忍者(玩家vs玩家) 普通模式(试图达到目标) 挑战模式(死亡比赛) 屏幕...
  • ursinaᴥ•ᴥ•ʔゝ□一个易于使用的python游戏引擎/框架。 入门安装Python 3.6或更高版本确保已安装git。 打开cmd / terminal并输入:pip install git + https:// github。 ursinaᴥ•ᴥ•ʔゝ□一个易于使用的...
  • 0.Cocos2d: cocos2d是一系列开源软件框架,用于构建跨平台2D游戏和应用程序,由cocos2d-x、cocos2d-js、cocos...Panda3D是由迪士尼开发的 3D 游戏引擎,一个用于Python和C+程序的3D渲染和游戏开发框架,并由卡内基...
  • 这里介绍一个python开发游戏的库(平台)—pygame,pygame是python的一个跨平台模块,专门为设计电子游戏而开发,建立在SDL基础上,允许开发者快速的开发出自己的游戏而又不被低级语言束缚。下面我介绍一下这个库的...
  • 它基于Python 3.7和,并使用Blender和MakeHuman创建模型。 您可以在“项目”选项卡中查看游戏的当前状态和计划。 该计划的一部分尚未公开宣布,因为一些细节仍在进行中。 游戏的主要功能现在包括: 具有不同战术...
  • 一个易于使用的Python游戏引擎/框架。 入门 安装Python 3.6或更高版本。 打开cmd /终端并输入: pip install ursina 如果要从git安装最新版本,可以这样安装: pip install git+...
  • python实现小游戏

    2018-07-23 21:34:02
    利用python编写的贪吃蛇经典小游戏,以可视化的方式展示游戏运行效果。
  • Python塔防游戏

    2018-03-23 14:39:43
    python开发的塔防游戏(带界面),很好的一款资源,用pygame开发
  • python游戏开发

    2018-12-19 21:25:27
    当你有了3D游戏的逻辑时,可以学习PyOpenGL,它是最棒的3D库之一 作者:实验楼 链接:https://www.jianshu.com/p/8ddeb797d1be 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • Python实现迷宫游戏

    千次阅读 多人点赞 2020-07-07 15:27:35
    本次实验设计了一款迷宫小游戏,采用用Python开发技术实现。以往经典的的游戏中有魂斗罗,拳皇,超级玛丽,贪吃蛇,俄罗斯方块等;发展到现在,玩游戏已经成为生活的一部分了,尤其是现在的很多游戏都已经网络社交化...
  • 1、PyGame:简单的游戏开发功能库http://www.pygame.org提供了基于SDL的简单游戏开发功能及实现引擎理解游戏对外部输入的...一个3D游戏引擎,提供Python和C++两种接口支持很多先进特性:法线贴图、光泽贴图、卡通渲...
  • Panda3D - 一个游戏引擎,一个3D渲染框架和Python与C 程序游戏开发
  • 很多人认为Python只适合用来大数据,或者是爬虫之类...第二种游戏:这是一款非常有意思的3D游戏:Galcon,别质疑是不是Python语言开发,下面会告诉你实情。 第三种游戏:除了上面那些国外有名气的游戏是Python语...
  • python能开发游戏

    2020-12-17 11:44:35
    Python理论上,不仅不适合做游戏,而是只要大型的程序,都不适合。只适合写比较小型的东西,比如一个计算器,一个爬虫等。 主要有2个方面,一是速度慢,二是语法缺陷。 也许你一定觉得,Python的语法又干净,又优雅...
  • 程序源代码,用python-OpenCV一个魔方墙找茬游戏,可用来进行3D视眼训练,程序介绍可翻阅我的博客。
  • Unity3D-Python编辑器 在unity3d里使用python unity版本5.6.1 注意 我这是用@cesardeazevedo那里弄到的,然后我精简了一下,现在只需要放置一下就可以用了。操作如下:在游戏物体上绑定PyRun.cs在PyRun.cs上绑定Py...
  • pyecharts 功能很强大,强大到让人吃惊,它能的事囊括爬虫、数据分析、数据可视化、游戏等等各方面,这些功能在实际的使用中应用广泛,开发程序讲究页面的美观与炫酷效果, 今天的文章将给各位读者朋友们带来不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,758
精华内容 8,703
关键字:

python做3d游戏

python 订阅