免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: __BlueGuy__
打印 上一主题 下一主题

[C] Lua 造成的代码冗余太严重了, 这个现状怎么改善? [复制链接]

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
11 [报告]
发表于 2012-11-17 13:58 |只看该作者
starwing83 发表于 2012-11-17 13:24
回复 8# liuspring6


是在服务器端运行的,这些逻辑代码都是写在服务器端的

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
12 [报告]
发表于 2012-11-17 14:01 |只看该作者
回复 11# __BlueGuy__


    服务端执行,那么中文文件名也就不是什么问题了。*nix天生的utf-8友好。

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
13 [报告]
发表于 2012-11-17 14:04 |只看该作者
starwing83 发表于 2012-11-17 14:01
回复 11# __BlueGuy__


你有没发现游戏圈子很小, 游戏很难做...

论坛徽章:
0
14 [报告]
发表于 2012-11-17 14:06 |只看该作者
有包文件系统当然另外一说。如果资源是散的,个人排斥中文做文件名无非是资源更新下载的问题,比如CDN节点无法正常支持中文文件名,或者客户机OS非中文,以及使用他人提供的服务器(已安装好OS)搭建服务端时,出些莫名其妙的问题...

我也不喜那种文件组织方式,只是表示一下同期,主要是我有过那种需求提出到上线仅一周的时间的经历,其最终很容易就出现同样的状况:wink:

一般目前我们都以副本ID、任务ID等作为文件名,而逻辑代码中也尽可能只使用ID、避免文本的出现。

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
15 [报告]
发表于 2012-11-17 14:06 |只看该作者
你没发现优秀的游戏太少了吗?

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
16 [报告]
发表于 2012-11-17 14:08 |只看该作者
回复 13# __BlueGuy__


    是这样的。这个圈子的确很小。

游戏是难做,也许要很多年以后,才会有人真的明白做游戏真的意味着什么。在这个社会我们失去了很多,信念就是一个。

做游戏的技术是精益求精的,做游戏的思路是天马行空的。这两点本来就是矛盾,所以策划和程序的矛盾油然而生。

游戏又是最复杂的软件之一,所有软件上的新技术都会在游戏上面试水才会得到肯定。游戏本身就是软件艺术复杂到一定程度的体现。

所以,游戏本质上是充满矛盾的,是高技术含量的。现在有些所谓的“游戏公司”是对“游戏”这个词的侮辱。

做游戏,毋庸置疑,需要的是强大的内心。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
17 [报告]
发表于 2012-11-17 14:11 |只看该作者
回复 14# liuspring6


    这样其实是比较好的,问题的关键不是时间紧,而是在时间不紧的时候有没有改进的意识在里面。一个从来时间都紧的团队,要么技术有问题,要么管理有问题,肯定有一个。

散文件通常客户端比较少,服务器端也许比较多。其实上传的时候可以先上传一个map文件,然后用id命名,相当于上传即“编译”(说是“部署”也许更好一点)。用ID命名的确是最好的。可以这样做:开发的时候用中文命名,开发完了部署的时候统一用脚本“安装”成ID命名的。这样就两全其美了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2012-11-17 19:48 |只看该作者
用require不晓得怎么处理相对路径,我一般用dofile,相当与 include


  1. local CUR_DIR = debug.getinfo(1).source:gsub("^@", ""):gsub("[^\\\/]*$", ""):gsub("[^\\\/]$", "%1\\")
  2. dofile(CUR_DIR.."include_other.lua")

复制代码

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
19 [报告]
发表于 2012-11-17 21:33 |只看该作者
回复 18# 群雄逐鹿中原


    最好还是require,这个能去重,就是说载入多次算一次。而且写起来比较方便。

路径的话,教你一个办法,就是添加新的loader。你在很基础的地方找个地方写这么一个函数:

  1. local function load_local_file(name)
  2.   local CUR_DIR = debug.getinfo(3).source:gsub("^@", ""):gsub("[^\\\/]*$", ""):gsub("[^\\\/]$", "%1\\")
  3.   local f, errmsg = loadfile(CUR_DIR..name..".lua")
  4.   return f or errmsg
  5. end
  6. package.loaders[#package.loaders+1] = load_local_file
复制代码
要熟悉你们用的语言………………要熟悉你们用的语言………………你说我该怎么说好……上面的函数一写,你立刻就可以用 require "foo"去载入同目录下的foo文件了。

问题是,你为什么要这么做呢?明明Lua的require可以要求你将代码很好的组织到各个子目录,然后在require指定子目录,是天生让你组织源代码的,你为什么非要简便,去require本地的文件呢?你是在写Lua还是在写C呢?

任何把Lua当作其他语言写的方式都会导致糟糕的设计。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
20 [报告]
发表于 2012-11-17 21:36 |只看该作者
我真心希望,每个写Lua的人,麻烦能安安静静地看完Lua的在线手册行吗????我真的受不了一些人用Lua写出的代码了,这感觉就好像一个学C的人,不知道C有while和for,所有循环都用goto写一样,真的让人觉得非常难受。

麻烦仔仔细细地看完这份文档好不好,真的不长:http://www.lua.org/manual/5.2/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP