回到原点——从web到游戏到js

开通博客一个月,本想着以自己的学习速度多少能保证不超过一周的发文空档,结果整个三月份到今天之前没来碰过博客,看起来这半个多月本菜鸟没任何进展,其实就是没有任何进展。实在要安慰一下自己的话,这么长一段时间笔者做的事情就是:为了完成自己一直以来的梦想苦学非web的跨领域新技术,结果学到有点门路时发现自己在另一个领域继续学习着web技术

简单说说笔者的梦想,那就是游戏开发。笔者中学时期是最典型的的网瘾少年,所在的地方非常抓学习成绩,在父母老师洗脑下也在稳步学习数理化,但每周一天的放学时光全都会用来玩游戏,初中玩CF、地下城,高中玩LOL,大学头两年则是剑灵。笔者可以说是玩遍了21世纪头15年国内流行的所有游戏,这对学习数理化或者说考试成绩绝对是有影响的。不过笔者觉得自己对游戏的热爱没有半分不对或是后悔。这部分内容要是再展开会扯到上一代人与笔者这一代人的观念的冲突以及教育体制和社会道德上去。

大学时光笔者花了一年来体验大学校园的社交活动,剩下三年都拿来学写代码了,入了这一行看清楚的一件事是:沉迷网络与沉迷游戏在上一代人眼里是一个概念,但游戏开发在整个it圈里的比重似乎比想象中要小很多。真要回想回去,也分不清自己当初究竟是喜欢在计算机上使用各种软件工具畅游互联网,还是为了在游戏世界里当上全服第一了。入了写代码的坑之后,也一直没有去接触游戏开发,大学里没有安排游戏方面的课程,倒是把Android跟WPF都试了一遍水,虽然现在精通的方向是web,对原生的开发好歹也都略知一二。

但笔者对游戏开发一直都有一点小执念,毕竟自己被游戏策划玩了这么多年,也想看看这游戏策划是如何来做游戏决策的。这也是标题回到原点的大原点,有两年没时间去怠惰沉迷打游戏,在这个月居然就下定决心要去看看游戏开发了。

接下来简单概括一下笔者这半个多月学到的游戏开发的皮毛。

1. 不只是写代码

游戏开发绝不只是靠写写代码就能完成的,其从0到1入行的门槛之高的一大原因就是这短短四个字背后涉及到的东西贼多。或者说程序员写的代码在一个游戏的开发流程里,只不过是其中小小的一环而已。

笔者去年就有粗略学习过Unity引擎,但是学习过程却颠覆了双手都摆在键盘上准备大展拳脚的我,看了很多东西都还不知道究竟使用这玩意儿到底有程序员什么事儿。做的事情都是把一个个元素拖到场景里面,最后才建一个C#文件,简单的对场景里拖好位置的角色进行控制。

2. 不写代码

上周笔者看了一周Unreal引擎的手册,全都是关于场景的搭建,愣是没有需要写代码的地方,原本还担心大一必修课学的那点C++基础不够用,结果这货居然可以直接用其蓝图概念来开发游戏脚本,纯鼠标操作也没问题,如它文档所说,只为快速设计出原型的话,瓦全不写代码也能创造出一个基于UE4引擎的大型游戏来。

3. 游戏元素制作

游戏开发流程里,每个元素的模型啊贴图啊都是由各自岗位的设计师美工来制作的,专门负责搭建场景的人只要把这些素材拖到场景里面就可以了,而我们写代码的跟这些做模型的级别一样,写好角色啊场景的驱动脚本后拖进场景里具体的组件上来使用。

4. 服务器开发

还好游戏服务器给笔者带来了熟悉的感觉,虽然其语言换成了C或是golang,好歹还是比较接近其他软件的服务器的,在接近的同时更要追求性能,保证安全性与实时性,要求再多,好歹是只能使用代码来实现了,总不会以后连服务器都可以让美工来画吧!

最近的一周笔者开始专注于Cocos2d这个国产游戏引擎,笔者已经接受了一个事实:如果非要自己一个人写个游戏出来的话,就乖乖去学学绘图,切图,建模,电音好了,对还得写小说给游戏带来一个有丰富爱恨情仇内容的世界背景。比较清新的信息是Cocos2d的一个新的开发方案居然可以用JS来写游戏脚本,通过这种方式来跨全平台。

起初的担忧是:使用JS来写游戏,浏览器端还挺有趣的,难道原生端也都是弄个壳套上webview?还好现在看完其文档后多少看到了点门路,其在浏览器端使用JS来驱动html5画布,在原生端有一个编译过程来生成原生的工程,仅是使用JS来开发而已。这倒是挺新鲜,难不成真可以写写JS就在全平台都发布出个游戏来了。

不过这个暂时的结局看着还挺不错的,笔者现在可以一边继续web领域的深入,一边使用Cocos2d来学习游戏开发。等时机成熟,再从Cocos2d转到Unreal这些大家伙上去,毕竟虽然引擎不同导致其开发方式不同,但游戏开发的流程本身还是大同小异的。

这半个多月去游戏领域转了一圈,竟然又回过来写起了Javascript,一个漂亮的回到原点。

时间: 2024-11-05 22:48:54

回到原点——从web到游戏到js的相关文章

回到原点

从计算机入门开始我就一直告诫自己:不要浮躁.相比同龄人来编程入门算是比较早的,以至后来有了许多师弟师妹.当他们问我如何学好一门语言的时候,我说的最多的也就是“勿浮躁”或者“冰冻三尺非一日之寒”,俗是俗点.不过至始至终我都这么要求和告诫自己. 每个人的情况都不一样,我也不能说我的方法就一定正确.虽然一路走来比较坎坷,曾经也迷茫过.失落过.能够指引我的唯一的就是心中那对技术的热爱还有对理想的追求.一直以来我都在问我自己到底为了什么,这样是否值得.走着走着现在也懒得问自己了,想想自己现在除了写几行代码

通过Web Api 和 Angular.js 构建单页面的web 程序

在传统的web 应用程序中,浏览器端通过向服务器端发送请求,然后服务器端根据这个请求发送HTML到浏览器,这个响应将会影响整个的页面,比如说:用户通过一个连接导航到一个页面,会发送一个请求到服务器端,接下来服务器将会发送一个新的页面给浏览器. 但是在单页面应用程序中,整个页面只是在浏览器一开始请求的时候才会加载,接下来的请求,下来的交互请求都是通过ajax 来完成的,这就意味着只有部分的页面会更新,并不需要去加载整个的页面,这就减少了对用户操作的响应时间,从而使用户有一个更流畅的体验.但是在传统

FizzBuzzWhizz游戏的js解法

5.6休假回来在园子里看到一道比较火的面试题:(链接地址),js解法代码: function test(a, b, c) { var s = [false, "Fizz", "Buzz", "FizzBuzz", "Whizz", "FizzWhizz", "BuzzWhizz", "FizzBuzzWhizz"], mod = function(n, a, rv)

WEB前段(HTML+JS),后端(MYSQL+PHP)开发基础

一.HTML HTML:超文本标记语言,可以加载JS/CSS/图片/链接等非文字的内容 一切的网页开发技术都需要建立在HTML的基础之上 HTML的结构和语法 HTML元素 注释:  <!--  这里是注释内容  --> 图像:<img src="URL"> 连接:<a href="URL"> </a> 表单:<form><input></form> 内联框架:<iframe

好程序员web前端教程分享js中的模块化一

好程序员web前端教程分享js中的模块化一:我们知道最常见的模块化方案有CommonJS.AMD.CMD.ES6,AMD规范一般用于浏览器,异步的,因为模块加载是异步的,js解释是同步的,所以有时候导致依赖还没加载完毕,同步的代码运行结束:CommonJS规范一般用于服务端,同步的,因为在服务器端所有文件都存储在本地的硬盘上,传输速率快而且稳定. 1.script标签引入 最开始的时候,多个script标签引入js文件.但是,这种弊端也很明显,很多个js文件合并起来,也是相当于一个script,

Web视频合成器Seriously.js入门教程

Web视频合成器Seriously.js入门教程 作者:云荒杯倾 Seriously.js是一个实时的,基于节点(node)的(注意:不是基于nodejs)web视频合成器.受after affects和nuke等专业软件的启发,Seriously.js能渲染高质量的可交互的视频动态效果. 下载Seriously.js库 git clone https://github.com/brianchirl... 加载Seriously.js脚本 和其他js库一样,使用Seriously.js的第一步是

web前端利用vue.js实现品牌列表的添加,删除与筛选功能

实现效果图: 实现功能:web前端利用vue.js实现品牌列表的添加,删除与筛选功能 实现代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> &l

老web换新枝----Sails.js移动设备的全新生产力(二)

选择 Sails.js 一个明显的 Node.js 风格.具体来讲,Sails 使用分层开发和约定优于配置(convention over configuration),这两种开发技术已被 Rails 和类似的框架普及.Sails 还集成了其他一些 Node.js 包作为关键组件,这意味着不需要从头学习该框架.另一个优势是,事实上 Sails.js 的文档在不断改进,这是任何开源项目中都要寻找的一个关键指标. 在第一部分中,重点介绍 Sails 如何实现分层开发.未来的几部分将介绍约定优于配置和

浮动【电梯】或【回到顶部】小插件:iElevator.js

iElevator.js 是一个jquery小插件,使用简单,兼容IE6,支持UMD和3种配置方式,比锚点更灵活. Default Options _defaults = { floors: null, btns: null, backtop: null, selected: '', sticky: -1, visible: { isHide: 'no', numShow: 0 }, speed: 400, show: function(me) { me.element.show(); }, h