游戏AI的一些概念
发表于 | 分类于 游戏
游戏AI是游戏开发中非常重要的一环,在很大程度上也决定了游戏性。
这里的AI
并不是深度学习、强化学习等理论AI,而是游戏中非玩家控制的角色,在游戏运行时自动做出某些看起来比较智能的行为。
比如笔者比较喜欢的《孤胆枪手》这款游戏,游戏中形形色色的外星怪物,会源源不断地朝玩家涌来,试图攻击并杀死玩家,在玩家控制角色移动位置后,怪物也会自动调整行动路线并继续攻击。这些怪物就是比较典型的游戏智能体。
因此,本文主要研究游戏AI中涉及到的概念,以及一些基础功能的研究和实现。
使用vite加载远程模块
发表于 | 分类于 技术原理
在上一篇文章中提到了在线预览Vue组件,后面思考了一下,如果能在现有项目中加载远程模块,可以更方便地解决低代码编辑自定义组件的问题。本文沿着这个思路,尝试实现在vite中加载远程模块
初识SwiftUI
最近几年声明式UI的风在客户端也非常流行,Android有jetpack compose
,iOS有Swift UI
,本文决定尝试使用一下SwiftUI,看看开发体验如何,稍作记录
一种在线预览Vue组件的思路
发表于 | 分类于 技术原理
最近在研究一些低代码平台,设想了一种面向开发者的低代码编辑器,本文是印证这个想法的第一步,即在线预览单个组件文件。本文以Vue技术栈为例,尝试实现一个可以在线预览Vue组件的功能。
前端开发环境热更新实现原理
发表于 | 分类于 技术原理
热更新是现代前端开发环境中必不可少的一项,本文整理了一些打包工具parcel
、webpack
和vite
热更新的使用机制,同时了解热更新的实现原理。
游戏开发中的长地图和摄像机
发表于 | 分类于 游戏
在一些横版游戏中,需要搭建超过一个屏幕的长地图,然后控制角色在整个地图中进行移动。本文主要讨论通过 tiled map 实现长地图场景,然后通过控制摄像机的方式访问整个地图。
使用cocos实现flappybird
发表于 | 分类于 游戏
打算梳理一下自己的游戏开发技能(虽然并没有什么技能),于是打算从易到难去实现一些比较完整的游戏案例。flappybird是一个比较精简的游戏,游戏玩法和规则都很简单,但是包含的内容比较丰富,能涉猎到不少知识点,因此用来入门是比较不错的。本文整理了使用 cocos creator 开发 flappy bird 的一些收获。
从dark-slash中学习游戏动画
发表于 | 分类于 游戏
最近在学习游戏开发中的动画效果(主要是技能效果),苦于找不到合适的资料,发现cocos官方提供了一个dark-slash暗黑斩的教学项目,这是一个比较完整的游戏项目,也包含了不少动画项目,很适合新手学习,本文主要整理了阅读该项目的一些收获。
开发独立游戏需要解决的一些问题
发表于 | 分类于 游戏
做游戏一直是我的夙愿,也是我转行进入软件开发的动机。如今,当我已经有5年的开发经验,准备开发自己的独立游戏的时候,发现这件事远比我想的复杂,本文记录了我关于独立游戏开发的一些思考,以及对未来的展望。
petite-vue源码分析
最近发现Vue增加了一个petite-vue的仓库。
大概看了一下,这是一个无虚拟DOM的mini版Vue,前身貌似是vue-lite(瞎猜的~),主要用于在服务端渲染的HTML页面中上"sprinkling"(点缀)一些Vue式的交互。颇有意思,于是看了下源码(v0.2.3
),整理了本文。
React中封装组件的一些方法
最近参与了一个基于Raact
技术栈的项目,距离我上一次在工作中React
已经过去了挺长一段时间,因此打算整理在React中封装组件的一些方法。
管理TypeScript项目中的类型声明
发表于 | 分类于 编程语言/TypeScript
说来惭愧,最近才正儿八经地在生产项目中使用TypeScript
,遇见一个比较棘手的问题就是:如何管理项目中定义的各种类型声明。
本文将从TS项目和声明方式开始,探究如何解决该问题。
在React中处理埋点公共参数
在前端埋点数据收集及上报方案这篇文章中研究了前端项目的数据埋点方案,描述了埋点字段设计、数据收集和数据上报的一些思路,并给出了在Vue中通过自定义指令和全局Mixin实现声明式数据收集的方法。同时在项目中使用一段时间后,总结了一些可以优化的问题。
最近在一个React项目中,打算实现类似的工作,同时解决之前遗留的问题。
infernoJS源码分析
inferno.js
是性能最快的前端UI框架之一,Vue3的diff算法貌似也从Vue2的snabbdom实现修改为类似于infernod的实现。
本文主要通过阅读inferno的核心源码,了解其关于通过最长上升子序列优化diff DOM性能的原理。
多项目逻辑复用与monorepo
去年接手了一个新的项目,主要分为了移动端和PC端,在项目初期,两端承担不同的业务职责,在后期迭代过程中,陆续出现了一些相同和相似的业务逻辑,随之而来的是很多相似的代码。
回想之前,也经历过类似的场景,比如从一个to B的项目中再拆分一个to C的项目,两个项目具有业务或平台的差异,但也有很多相同的地方。
本文主要研究通过monorepo
来处理这种多项目中逻辑复用问题。