独立游戏吧 关注:56,817贴子:328,824

又开始做游戏了,这次用UE

只看楼主收藏回复

之前尝试过几次,用过Godot,用过纯Java,也用过Unity,都因为各种原因(半途而废)没有弄完,这次试试UE
先谈谈这几款引擎的使用体验。楼主是程序员出身,用以上几款引擎总感觉在程序上拉不开优势,美术上又赶不上别人,做来做去就是一个小人跑来跑去,这碰撞一下,那触发一下,本质上和使用RM没啥区别(我水平菜)
自从用了UE,那感觉真是程序员扬眉吐气,C艹你不会就是不会,不像C艹艹英语好点,网上复制一段改改也能跑。C艹报错有时候那真是天王老子来了也看不懂,每次解决问题都让程序员的虚荣心得到了极大的满足。
最重要的是,UE太方便了,提供的工具(比如GAS、内置网络同步)太强了,学会之后原地飞升,直接结成金丹。
言归正传,这次还是准备做个简单的挂机游戏(对标奇迹MU),可联机但不是网游,目前在做背包,背包系统是魔兽世界那种格子的,本来想做奇迹MU那种在背包里显示Mesh的,但是UE搞起来比较麻烦,要把Mesh偷偷放到地图某处,然后渲染到一个材质上再显示出来,想了想怂了,还是先搞个简单的。
目前状态:
1. 代码共905行(有极大水分,搭架子很多模板代码)
2. 设计了物品表、背包存储相关的数据结构
3. 简单的背包UI(动态配置背包格子,可以装备多个背包)
4. 捡东西(网络同步)
服务端和客户端背包

物品表

Git提交记录

简单记录一下,万一成了呢


IP属地:浙江1楼2024-07-06 16:35回复
    服务端客户端。。单人做联网的?


    IP属地:广西来自Android客户端2楼2024-07-06 17:21
    收起回复
      2025-08-10 03:07:36
      广告
      不感兴趣
      开通SVIP免广告
      加油


      IP属地:云南来自iPhone客户端3楼2024-07-06 17:25
      回复
        用UE做挂机游戏真有你的


        IP属地:江苏来自Android客户端4楼2024-07-06 17:41
        收起回复
          赶紧学


          IP属地:河北来自Android客户端5楼2024-07-06 19:02
          回复
            更新
            1. 拾取方式改为按空格拾取附近所有物品(鼠标拾取还没做)
            2. 拖拽交换(网络同步)
            3. 拖拽丢弃(网络同步)
            遇到不少坑,比如拖拽的时候没法获取鼠标下的物体,试了各种方法都不行,后面想到使用延迟应该可以(先结束Drag事件),但是还得手动处理失败的情况(比如丢到地图外),就改为更方便的随机刷新在角色周围。
            还有同步的设置,我的掉落物是根据ID在配置表里找Mesh动态设置的(也就是只有一个BP_PickableItem,设置不同的ID就显示不同的样子),一开始忘记同步这个ID了,导致客户端显示不出Mesh,找到问题后很快就解决了
            网络同步确实考虑的要比单机多一些,比如怎么把同步的数据最小化(我的交换物品和丢弃物品只用RPC传了格子的ID和背包ID,所有的交换和掉落在服务端完成,然后PRC调用客户端,传格子和背包ID,以及物品ID,再由客户端操作显示相关,目前来看效果还行),目测多了30%工作量。
            虽然是个局域网游戏,但总是不自觉的考虑复制等安全问题,进一步加大工作量,其实应该不处理也行
            动图:


            IP属地:浙江11楼2024-07-07 17:55
            回复
              更新一下
              1. 物体描边
              2. 鼠标捡物

              接下来的计划是整整UI,然后把人物装备栏做出来,再进行联动(仅UI和GAS属性,人物先不换装)


              IP属地:浙江12楼2024-07-08 11:45
              收起回复
                需要写shader和该管线的人吗


                IP属地:新疆来自Android客户端13楼2024-07-09 20:45
                收起回复
                  2025-08-10 03:01:36
                  广告
                  不感兴趣
                  开通SVIP免广告
                  上次计划说开始弄UI了,但是发完发现忘记弄堆叠了,然后又觉得拖拽操作不太方便,更习惯鼠标点一下,到目的地再点一下。于是把拖拽逻辑全部重写了,改成了点击操作。
                  本来以为会很简单(不就是前端换个操作方式吗?),没想到,由于拖拽是系统自带的,各种回调很方便,自己写操作,要考虑很多意外,搞了好久。
                  本次更新(全部支持联机):
                  1. 改了背包交互逻辑
                  2. 物品堆叠、合并、交换
                  3. 物品分离(本来想做MC的逻辑,但是右键还有其他用处,改为了按住Shfit键,分出一半到最近的一个空格)
                  4. 丢弃物品(可以丢弃一堆,捡起来还是相同数量的一堆)
                  5. 捡东西如果满了,会重新掉出去
                  以上几点都测过极限情况,比如鼠标上拿着东西捡东西、一次捡很多东西、一个人丢一个人捡等,功能均正常,没有出现多或者少物品的情况。
                  下面真的可以搞UI了吧
                  图:左键操作逻辑,尝试提取公共操作,但是没这方面经验,脑子转不过弯,最后只能if else解决

                  动图(简单综合演示)


                  IP属地:浙江14楼2024-07-10 13:55
                  回复
                    说个题外话,输入系统是在GAS里学的,个人感觉挺牛逼的一个处理方式。
                    原理是继承了EnhancedInputComponent,然后在SetupInputComponet的时候,调用下面这个Template,给每个按键的按下、按住、抬起绑上这么一个方法,再把自己的Tag(自定义的,和按键绑定)传进去。
                    逻辑是在这些个绑定的方法里,根据Tag进行操作识别的。
                    所以,理论上按键是可以随便更换的。比如我定义了1、2、3、4、5等技能快捷键,只要给技能标上这些按键的Tag,就可以实现按键绑定了。而1、2、3、4、5的按键绑定,EnhancedInput本来就可以实现。
                    (没写过C++的Template,看到教程这么写,震了个大惊!感觉就是给程序赋予了“假设”的能力,还是编译时的,C++真的强)


                    IP属地:浙江15楼2024-07-10 14:11
                    回复
                      同搬砖出身的,业务爱好是写OS,所以西/西瓜瓜写得比较熟。今年才开始学做游戏,到现在个人做了2个复刻游戏,一个幸存者,另外一个FC的飞机大战。个人感受最深的就是素材好难,要不是复刻游戏本身就可以找到素材,我感觉这游戏根本没法做。


                      IP属地:广东来自iPhone客户端16楼2024-07-10 16:30
                      回复
                        更新:
                        1. 物品属性配置(还要改)
                        2. 显示信息(根据属性组装,处理了本地化)
                        3. 掉到地上显示信息
                        4. 提取公共类做了仓库(原来有设计基类,但是不够好,重构了下),数据源对了,交互还没做
                        下一步计划:
                        1. 仓库交互
                        2. 给仓库穿戴背包(加格子)
                        3. 角色装备栏
                        图:简单演示


                        IP属地:浙江17楼2024-07-13 15:49
                        收起回复
                          GPT是真的牛逼


                          IP属地:浙江18楼2024-07-14 09:26
                          收起回复
                            更新:
                            1. 重新设计了属性配置,简化后期填表工作量
                            2. 重新设计了物品的实例数据结构,原来是按品质固定属性,比如传奇的XXX属性都一样,现在是按品质掉落固定属性+对应品质的随机属性(词条),如:传奇的XXX,固定属性会比普通的高,还会带有随机属性(随机的属性也分品质,每品质数值固定,比如杀怪回血,普通的词条回10,传奇的词条回20,词条品质和物品品质无关,物品品质只关乎于词条随机池)
                            2. 仓库交互(存取、穿脱背包),部分校验偷懒走了本地,因为设计的本来就是个可联机的单机游戏,存档都在本地,很多地方如果走服务器校验会很麻烦
                            提一嘴,严重低估了联机带来的工作量,之前预估的30%,目前看来,单从代码和测试方面,联网工作量增加80%不止。


                            IP属地:浙江19楼2024-07-16 10:38
                            回复
                              2025-08-10 02:55:36
                              广告
                              不感兴趣
                              开通SVIP免广告
                              c++门槛有点高。不太好找人合作


                              IP属地:上海来自iPhone客户端20楼2024-07-16 10:50
                              收起回复