Django 新的摩登后台 Jet Admin

众所周知才怪,Django 自带的后台并不是那么好用。而且界面于功能实在太过简陋,不是很能迎合后台管理需求。 在不跳槽其它框架的情况下,怎么办呢?pokon548 最近就找到一个特别好用的在线后台管理程序 —— Jet Admin。它能为 Django 提供后台管理服务。 它不止能为在线项目提供服务,就连我们在本地上运行的测试项目( http://127.0.0.1 的这种)也 OK!是不是很神奇(对于 pokon548 这种一点都不精通 Web App 的人来说,当然是拍手称好啦)。 特点 pokon548 光说好用当然不够,那就边上图边介绍好了。 高度可自定义的 Dashboard 哪些数据很关键要时刻关注?哪些数据要转换成图表?Jet Admin 都能帮你做。 比如 pokon548 自己正在做一个问卷调查的练手项目(Django 官方的新手教程)。通过选用 List,可以快速了解我有哪些 Questions,和哪些 Questions 有哪些 Votes… 当然,Django 后台的常规操作(添加、修改、删除数据)也是一个都不落下。 漂亮 至于怎么个漂亮法,看看官方的介绍图就知道了。 测试项目也能用 是的,你没有看错。用 runserver 跑起来的 http://127.0.0.1 测试服务器也能用!对于开发者实在是太友好了,不是么。 隐私 Jet Admin 声称自己的服务器是不能主动碰不到部署端的数据的,必须借助在项目里面加入的 Jet Bridge 才能对数据进行操作。而且 Jet Bridge 在 GitHub 上是开源的。 他们自己的隐私声明如下: Jet Admin is built in a way that it hosts only your admin panel interface.
继续阅读 →

用 Arcade 学习写一款 RPG 游戏 —— 与场景发生交互

在 上一篇文章 中,我们绘制了主人公周围的场景。不过为了推进游戏进度,我们还需要主人公能够与环境中的某些元素发生交互关系。那么,今天我们就来试试做出这个功能吧! 找到上一章 Arcade 的代码 之后的每一次博文,除非另有说明,都会使用到上一次遗留下的项目。请妥善保管好。那么,现在就在 Arcade 主页里找到并点开它吧! 更多样化的地图 在上一次博文中,我们只在模板里用粉色构成了地图的模板。事实上,模板里最多可以容纳十六种颜色所对应的色块。不同的色块可以对应不同的材质和不同的功能。 在这一片博文中,为了示范,我们将用到绿色的新色块来增添一个“会和主角互动的小草(???)”。 添加绿色色块 那么,我们先找到之前的地图模板,并点开它。 为了添加绿色色块,我们需要更换画笔的颜色,并在地图的某一个位置点上绿色色块。如之前那样,色块的位置是随意的。只要你不点在主角出现的位置(地图中央)就好。 OK。点好了。别忘记点击“完成”保存模板。 将绿色色块赋予小草的材质 通过上一章的学习,这一步操作应该很简单了吧。就不再多说了。最后的结果应该和下图是一样的。 然后,将其附加到粉色色块赋予材质的方块的后面。 现在点击播放按钮看看,小草是不是出现了呢? 让小草能够与主人公互动 现在的小草,只是一个没有生气的材质而已。而我们想要实现的目标是:与主人公发生互动。 为了让小草能够与主人公互动,我们要先让 Arcade 能够检测到”主角靠近了小草“这一动作。 检测靠近 —— 当碰撞时 检测碰撞这事在游戏里很常见。举个例子:在游戏中,如果来自敌方的子弹“碰”到了主人公的身上,游戏就会检测到这一行为,从而让主人公扣血或者 GG 等。这种事在设计类游戏中更是屡见不鲜。 当然,在这篇博文中,我们不会涉及到那么复杂的碰撞检测。pokon548 在初学期间,秉承“抓大放小”的原则:即在初学阶段先学好知识主干,细枝末节的东西等到学完了之后再快速补充就好。 说了那么多,我们先开始实践吧。 为了让 Arcade 能够检测到主人公靠近小草的动作,我们要在“场景”分区内找到这么一个方块,并将其拖出来。 这个方块看起来似乎更加复杂了。但是没关系,pokon548 下面的比较详细的介绍相信能让你明白它各个组成部分的重要作用。 红色的“按钮” 这代表着当碰撞事件发生之后,我们在这个方块内部可以引用到的精灵对象。不知道对象是什么?那好,这里稍微详细的介绍一下。 对象,在面向对象编程方法里,代表模板的实例。什么意思呢?就拿基因和生物之间的关系做比好了(虽然不是特别恰当,但是有助于你理解这一概念)。要产生生物,就必须要有基因作为生物的模板,通过一系列步骤,合成各种各样的蛋白质,最终组成了生物。在这里,生物就是基因的实例。基因本身虽然不是生物,但它定义好了生物的一切行为,是一个模板。而由这个模板翻译而来的生物,就叫做对象。 哈?还是不懂?没关系那就忽略吧。这不重要 :)。在这个简单的实例中,我们不会用到这个东西,无须过于担心。保持默认值就好。 蓝色的“按钮” 这代表着触发事件的精灵的类别。在这里,我们想要类别“玩家”去发生这一动作,故保持默认的“Player”类别即可。 灰色的区域 又见面了!在这个地方,它代表着能够和主人公发生互动的色块颜色。我们想要的是绿色色块代表的“小草”与主人公发生互动,故这里我们要将其改为绿色色块。 怎么操作?相信已经精通前一章的你知道怎么操作了吧!啥不知道?…好吧,再演示一遍。记在小本本上了啊要考的 好了,这样 Arcade 就能检测到主人公靠近小草的这一行为了。 将方块留在原地!不要拖 你也许会说:哎接下来是不是要把这个方块拖动到绿色的“当开机时”方块里去啊?这就不对了。事实上,这个方块我们不需要拖动。留在原地就可以了。 为啥呢?其实只要原理讲明白你就懂了。还记得这个方块的动作是啥么?是“当主角碰到小草时,要…”。这个动作不是在开机时要完成的“初始化动作”,而是在游戏进行时会随时发生的事件。很显然,这不是一个初始化操作,而是一个“动作接收”的操作。哈?云里雾里?没关系的啦,看看编程相关的书籍你就知道了(好吧,其实只是因为 pokon548 修行不高,没法解释的特别清楚)。 故我们将其留在原地,不是没有道理。相反,很符合逻辑。 让主角说话 为了检测我们这一方块是否生效,我们要让这个事件发生的时候做点事情。做些什么好呢?…有了,让主角说一句“啊小草”(??)吧。 为了完成这一动作,我们要从“精灵”板块里找到这个方块,并将其拖到灰色方块内。 这个方块看起来很友好。为了让主人公成功表白说话,我们需要更改”:)”为”啊小草”。 好了,这样应该就好了。让我们点一下“播放键”,并用方向键移动主角到小草上,看看效果吧!…哎怎么不行呢? 最后一个选项的作用 这是怎么回事呢?你一定会想。是不是 pokon548 菜的一笔啊才不是呢。事实上,我们一直忽略了一个选项。而这个选项,是这个问题的根源。 什么选项呢?还记得上一章里面定义色块对应材质的时候的那个方块吗?想不起来了?没关系,这里再把图贴上来。 就是这个方块的最后一个选项。pokon548 先不说作用,你先按照下面的步骤把有绿色色块的那个后面的选项点成“开”试试。 之后,再运行项目看看。是不是就可以了? 一片空白?主人公说的话呢 截止到目前,Arcade 正式版里还没有完善对于中文的支持。但是在 Beta 版里面已经可以了。 要访问 Beta 版并查看实际效果,只需要访问这个链接即可: 点我 以下部分是在 Beta 版里运行项目的结果。 这么神奇?实际上很简单。这个选项的作用就类似于“把虚拟变现实”:把这个色块对应的景物独立出来,使之能够与主人公发生交互。这个选项就起怎么个作用。 怎么样,感觉是不是挺好的?
继续阅读 →

用 Arcade 学习写一款 RPG 游戏 —— 绘制场景

在 前一篇文章 中,我们学习了如何创建主人公,并让主人公动起来。 但是目前,主人公的周围还什么都没有。一款 RPG 游戏,众所周知,应该是有地图作为场景的吧!那好,我们今天就试着绘制场景。 找到你之前的 Arcade 代码 如果你之前曾经试着在编辑器界面里点击“主页”回到主界面的话,你可能会遇到这样一个弹窗: 不知道当时的你,为你的第一个项目留下了怎样的名字呢?哈哈(跑远了)。不过这不是我们今天的重点,重点在于,我们今天的博文会用到上次的项目。你需要在主界面找到并点开它。 所有你之前创建过的项目(不论有没有显式要求 Arcade 保存),都能在 Arcade 主页中“我的项目”分栏下找到。为了方便后面找到你的项目,pokon548 强烈建议你当 Arcade 弹出上面那个(示意图上)对话框时,给项目命一个名。对 pokon548 来说,为了方便写博文,给项目命了这么一个名。 为了打开你之前创建的项目,只需轻轻地点击对应的卡片即可。 不好!我一不小心创建了很多没用的项目 因为一不小心创建了太多赘余的项目而导致真正的项目难以找到?不如把它们删除掉吧! 删除项目的方法也很简单。只需要点击“我的项目”,进入“我的项目”后选中你不需要的项目。最后,点击右上角出现的的“删除”按钮即可。 注意:项目的删除是永久性的。请务必确保你正打算删除的项目真的是你不需要的项目! 游戏的场景 为了给主人公互动的环境,Arcade 专门有一个分区来帮我们。其就叫做“场景”。 通过创建场景,我们可以给主人公一个周围的环境。在这个环境下,主人公可以和场景互动、获得道具、讲述故事背景…许多剧情向游戏更是离不开场景的衬托。 当然,这篇教程的目的不在于写剧情向游戏,而只是一个 RPG 游戏教学。所以涉及到场景的内容 pokon548 点到为止,不过度展开。如果你对场景感兴趣,pokon548 欢迎你自主探索哦! 创建地图模板 为了创建地图,我们首先需要一个蓝图。这个蓝图将指引 Arcade 在合适的地方放上合适的景物。 在 Arcade 中,蓝图由十六进制代码组成。自 0 ~ F 各表示一种景物。也就是说,在 Arcade 里,一个地图内最多只能包含十六种景物。 一定有人会说:哎只有十六种啊?其实不用担心。至于为什么,后面的文章里再说。 顺带提一句:在 Arcade 中,景物有一个对应的名词叫做“砖块”。地图有一个专有的名词叫做“tile map”。不过这并不重要,了解就好。 要创建蓝图,我们首先要点击左侧的“场景”分区,把这个方块拖出来。 我们又见到了一个有灰色区域的方块了。和上次一样,点开它。 是不是很熟悉?我们上一篇文章中,在给主角弄皮肤的时候就用过它。我们这次绘制地图,还是要借助它的帮忙。不过我们这次不使用 Gallery 中的内容,而是自己手动绘制。 细心的你一定发现了一件事:编辑器的左下方有一个“尺寸”。就是 10x8 那个,你发现了吗?在当前的情况下,它的值决定了地图的大小。在博文中,我们就用 10x8 即可。当然爱探索的你,可以通过点它随意改变地图的大小。 那么,我们要画个怎样的地图呢?唔…这可真是个充满创意的开放性问题。pokon548 的建议是:随便画!只要不把画面中间的格子占用了就好(为啥?因为主角默认情况下出现在中间啊)。 为了方便演示,pokon548 决定就画个正方形出来。要在编辑器上画地图,只需要讲光标移动到编辑框上,点击你想要让其变为“砖块”的部分即可。 当然,好奇的你可能会问:我要是画错了怎么办?简单。在工具栏左侧有一个“橡皮擦”按钮,点一下它,即可激活“擦除模式”。之后,在你想要删除的像素上一点,就可以把画错的部分删去了。具体动图操作如下。 要变回正常的“绘制模式”,只需要点一下”橡皮擦“按钮左边的”铅笔“按钮即可。
继续阅读 →

Kindle 这热更新有毒吧

不得不说热更新真的是世界上最垃圾的更新方式没有之一…哎,说来也无奈。谁叫有些用户就是要“求稳”而打死不更新应用呢? 下划线块笔记??? 之前,Kindle 貌似就一直在灰度热更新一个功能:下划线笔记。什么意思呢?就是你在 Kindle 上做的笔记不再是一个很长的灰色块来表示了(就相当于我们用马克笔做标记的效果),而是一整条下划线。 这个功能,我倒是挺愿意有的。但是你能不能直接通过固件更新推送啊啊啊啊,每次固件一推就V某某下到 Kindle 上手动更新,结果还是没有下划线… 终于!灰度热更新灰度到我了。 但是!但是!!但是!!! **你这个笔记标注怎么和我想的不大一样啊?**这下划线居然只有标注的时候才显示… 只要回到普通模式,又是祖传大灰条… 更无语的是,编辑的时候你下划线就下划线吧。非要和祖传大灰条叠在一块是什么意思?!完全就是个几不像好不好… 好吧,坐等 Kindle 再次更新。下划线笔记仍然遥遥无期…
继续阅读 →

用 Arcade 学习写一款 RPG 游戏 —— 让主角动起来

前一篇文章 已经提到了如何使用 Arcade 这一十分方便的在线游戏编程学习平台。那么这次我们就来正式开始写游戏吧! 进入 Arcade 并创建游戏项目 首先,请戳 这里 进入 Arcade 平台。在页面加载完毕后,找到“我的项目”,并点击大大的紫色按钮“新建项目”。 新建项目可能需要一点时间,请耐心等待进度条停止显示。 当界面变成下图模样时,即代表项目已经创建完成。可以开始了! 游戏主人公 —— 精灵 在 Arcade 中,游戏主人公以及其它各种各样的 RPG 都有一个统称,叫做“精灵”(不要问我为什么叫这个)。 通过创建精灵,你可以为游戏添加主人公、NPC、怪兽、云(对,就是每天在我们天上飘的那个)、子弹(对,你没有看错,它真的可以干这个)等等… 可以说,这个是游戏里面相当重要的一环了。 创建精灵 那么,该怎么创建一个精灵呢?很简单。点击左侧的“精灵”分区,把这个方块拖出来即可。 给精灵皮肤 你一定不会想要你的主角在屏幕上是透明的存在吧(当然如果你要五毛钱特效当我没说)?为了让主人公富有活力,同时让玩家有玩这款游戏的欲望,我们需要给精灵一层皮肤。 当然了,手动绘制一个精灵的皮肤不是我们这篇博文的重点。故我们就使用 Arcade 自带的主角皮肤就好(相信我,其实自带的皮肤还挺帅的)。 要给精灵加上皮肤,请找到你刚刚拖出来的方块,点击这个灰色的地方。 接下来,你应该会看到这样的一个弹出框。这个就是皮肤的编辑框了。 然后,我们切换到“Gallery”分栏里,选择 Arcade 自带的主角皮肤。选择完后,点击“完成”。 这样,我们的主角就有皮肤了。 Arcade 目前只支持 16 位色的显示! 如果你是一个特别喜欢各种颜色搭配的 Geek,那么 Arcade 也许会让你小小的失望一番 —— 其(不包括透明色)只支持 16 种颜色的显示。 这也是为什么皮肤编辑器里没有“RGB调色板“一类东西的原因。不过相信我,16 位色在学习游戏开发的过程中完全够用,因此不需要太过于担心。 让主人公动起来 你也许注意到了一点:我们现在拖出来的那个方块“失去了颜色”。这是不是在提醒着我们什么?如果你敏锐的感受到了这一点,那么 pokon548 向你表示小小的祝贺!的确!这提醒我们:这个方块目前不会产生实际的效果。 什么意思呢?让我们先点击左侧的“播放按钮”看看目前这个项目运行的结果。 你会发现:左侧模拟器的“屏幕”上最终什么都没有。没有显示出我们刚刚创建出来的主角。怎么回事呢? 一般游戏的运行逻辑 这就要谈到目前常见游戏的运转逻辑了。在现代的常见游戏中,无论是选关、得到道具、NPC 的交流、主人公的行走等,都是在一个循环里面进行的。 而要让这一切发生,我们首先要进行“初始化”操作。如果你不明白这个词的含义,举个例子:要让主角在后面的循环中动起来,我们必须要先有一个主角才行(不然主角是幽灵吗滑稽)。不然后面的循环里我们要操作什么呢? 进行“初始化”操作 回到项目上。我们刚刚创建“主人公”这一动作其实就是“初始化”操作的一部分。而为了让这个方块发挥其初始化主角的作用,我们要把这个方块拖动到绿色的“当开机时”的方块内。 下面是操作方法的动态示意图: 你看,方块是不是恢复到正常颜色了?我们现在再试试点击”播放“按钮,看看项目的运行情况。 我们的主角出现了哦!真棒! 让主人公能够运动起来 也许你之前曾试过点击左侧模拟器的方向键。如果没有的话,pokon548 推荐你现在就点点看。 没有任何效果?那就对了。因为我们还没做好这个功能呢!唔…接下来我们要做的,就是让主角能够在我们按下方向键的时候动起来! 听起来似乎很复杂的样子。但是在 Arcade 里面,我们只需要另外一个方块就可以搞定啦!
继续阅读 →