Mojoc

国产开源跨平台手游游戏引擎
授权协议 MIT
开发语言 C/C++
所属分类 游戏/娱乐、 游戏模拟器/工具/引擎
软件类型 开源软件
地区 国产
投 递 者 邢财
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Mojoc是一个开源(MIT License),跨平台,使用C语言编写的游戏引擎。基于OpenGLES3的渲染和C99的语法写成。目前,可以跨平台工作在Android和IOS上,也很容易扩展到其它平台。源代码托管在GitHub。核心理念是:保持简单,追求简单,简单充满了力量。而简单的背后,是更多的思考,实践与重构。

主要特性:

  • 所有的代码实现,只是用了C语言和C99的语法特性。

  • 在平台独立的代码中,只使用了C语言的标准库,其它的功能手动实现。

  • 使用了具有独特风格的C语言代码书写格式。

  • 使用了非常简单,轻量级的,OOC面向对象抽象模型。

  • 基于一种组件,状态机,消息驱动,三合一的游戏逻辑架构。

内容来源:Solidot

  • C 语言实现协程,最困难的部分就是上下文信息的保存和还原。这样才能够做到,让协程在任意位置让出执行权限,稍后再恢复到中断位置继续执行。C 实现协程一般有几个方案。 使用第三方库来保存恢复上下文数据,比如ucontext。 使用汇编来保存上下文信息。 使用setjmp / longjmp 保存恢复上下文信息。 使用switch case的特性来做上下文断点继续,上下文信息需要用static变量保存。

  • Android NDK开发native app官方提供了一个胶水层,android_native_app_glue,NDK的demo里给出了示例,如何使用胶水层开发native activity。 但我发现这个胶水层不好,过于复杂,过度封装,代码质量不高。于是经过研究,直接使用ANativeActivity的接口,重写一个自己的胶水层。 Mojoc里重写的层是NativeGlue.c,经过测试完全

  • 用C语言进行面向对象编程,有一本非常古老的书,Object-Oriented Programming With ANSI-C。1994出版的,很多OOC的思想可能都是源于这本书。但我觉得,没人会把书里的模型用到实际项目里,因为过于复杂了。没有必要搞出一套OOP的语法,把C模拟的和C++一样,那还不如直接使用C++。 Mojoc使用了一套极度轻量级的OOC编程模型,在实践中很好的完成了OOP的抽象。

  • Mojoc提供了一个通用的工具类,来调用Android Java代码,以实现特定平台的功能。这个工具类封装了JNI使用的繁琐细和上下文对象的获取,提供了简单直接的API专注于Java类和方法的访问,并且实现了任意类型Java方法的调用。 本文将会介绍以下几点: NDK NativeActivity的JNI上下文对象获取。 JNI中JNIEnv指针的使用和理解。 根据路径获取Java类对象。 调用任

  • 代码风格的问题,很微妙,也很有趣。因为它并不影响代码的运行和功能,但它连接着人的心灵和信仰。代码风格目的简单明确,就是增加代码的可阅读性,降低维护成本,减少心智负担。纠结的地方在于,每个人对“可阅读性”的理解和喜好不同。专注容易产生喜爱,喜爱容易滋生癖好,代码写的越多,越会形成个人风格习惯。而逻辑性,还容易在大脑中创造强迫症的倾向,所以代码风格会演变成信仰,难以动摇。 因为代码风格不喜欢,很可能就

  • 泛型ArrayList是基础的数据结构,然而在C的标准库里并没有提供,所以需要自己手动实现一个。Mojoc的ArrayList实现经过了实践的测试,达到了稳定和高效的状态,源码ArrayList.h。 本文主要介绍实现思路和一些特性,Mojoc的泛型ArrayList主要完成了以下几个功能: 存取放任意数据类型。 动态内存扩展。 针对栈数据与堆数据不同的存储策略。 一组简洁的数据操作接口。 利用宏

  • 实践中,发现面向组件-状态机-消息驱动,如果整合起来,能够更加自然和简单的进行抽象。这些都是以面向对象为基础,更进一步的抽象扩展。最初的灵感是在看这本书的时候产生的,Practical UML Statecharts in C/C++, Second Edition。本文会分别简单介绍一下,面向组件,状态机,消息驱动的各自特点。然后,结合Mojoc的代码,看看是如何把三者整合起来的使用的。 面向组

  • 按照以下步骤,可以快速直观的了解Mojoc引擎结构和功能。 第一步 获取源代码,有三个选项。 Git 地址 https://github.com/scottcgi/Mojoc.git 下载源代码压缩包https://github.com/scottcgi/Mojoc/archive/master.zip 下载已发布的版本 https://github.com/scottcgi/Mojoc/rele

  • 字典映射是最基础,最重要的数据结构,通常会利用哈希表来实现。Mojoc提供了另外一种形式的实现,通过数组和二分查找策略,来完成字典数据的映射。源代码在这里:ArrayStrMap.h。 原理 字典映射的核心在于,如何把一个字符串,通过某个策略映射到一个唯一的标识上。利用hash算法生成hash code,然后映射到数组index上就是一种方法。Mojoc ArrayStrMap的思路很简单直接,就

 相关资料
  • 发布到 Web 平台 安装配置原生开发环境 打包发布原生平台 原生平台 JavaScript 调试 发布到支付宝小游戏 发布到微信小游戏 微信小游戏开放数据域 启用微信小游戏引擎插件 接入微信 PC 小游戏 发布到趣头条小游戏 发布到百度小游戏 百度小游戏开放数据域 发布到 Facebook Instant Games 发布到 Google Play Instant 发布到 OPPO 小游戏 发布

  • 所有现实都是游戏。 Iain Banks,《The Player of Games》 我最初对电脑的痴迷,就像许多小孩一样,与电脑游戏有关。我沉迷在那个计算机所模拟出的小小世界中,我可以操纵这个世界,我同时也沉迷在那些尚未展开的故事之中。但我沉迷其中并不是因为游戏实际描述的故事,而是因为我可以充分发挥我的想象力,去构思故事的发展。 我并不希望任何人把编写游戏作为自己的事业。就像音乐产业中,那些希望

  • 为什么我投c++给我发游戏开发的笔试 第一题打家劫舍变形,要么内存超,要么超时,做了40来分钟,a了。 第二题,简单的滑动窗口,a了 第三题没时间了,看了一眼没思路,交了算了 给个见面试官的机会吧

  • 问题内容: 我最近一直在研究游戏开发,而我的第一种编程语言是Java。在玩了许多用c ++开发的令人惊叹的游戏之后,我想知道为什么Java在游戏行业中没有被大量使用。我查看了jMonkeyEngine 3和其他一些游戏引擎环境,但是看到的屏幕截图远没有那么令人惊叹。诸如EA的《极品飞车》(Need for Speed Hot)和ubisoft的Assassins Creed等标题传达了这种现实感。

  • 时间线: 一面:面完通知进行二面 二面:通知进行三面 三面:沟通offer 回顾面试的问题: 1.选择游戏行业的原因? 我对游戏不是只是喜欢,而是热爱。我熟悉市面上各款主流游戏,我觉得玩游戏需要有策略的玩。我经常关注所玩游戏的论坛、贴吧、官网、公众号等,会仔细看游戏的测评文,攻略文、以及公告文等文章。 2.从哪些方面进行游戏测评? 从游戏题材、核心玩法、美术表现、用户体验、音乐效果、市场预期、商业

  • 此功能旨在降低H5游戏接入手Q轻游戏成本,同时提供手Q相关的能力:用户信息、排行榜、分享等 支持版本:安卓手 Q 7.6.0 及以上,iOS 7.9.0 及以上 H5游戏包上架与正常游戏包上架流程一致 H5游戏包说明 H5游戏包与普通游戏包有所不同,游戏专用包地址 gameConfig.json:游戏配置文件,H5需重点关注 main.js:使用Bricks引擎开发的游戏的代码文件,H5游戏不用关

  • 你的常用的数据结构都有什么? HashMap和HashSet的区别? 怎么构造一个HashMap HashMap优势是什么? 还有什么需要注意的? 扩容机制,hash冲突? 如果你去设计一个Hash函数怎么设计呢? 一般 HashMap多线程情况下会出现什么问题? 怎么解决扩容死链的? 尾插会有什么问题? 数据错乱问题以外还有什么其他问题? 怎么解决这个问题? councurrentHashMap

  • long time no see. 熟悉的滋味🤩😍,先来个凉经。 一面 5.17 40 min 编程题:memcpy, 反转字符串数组,两个栈实现队列。 C++ 如何调整内存对齐值 主机大小端序 智能指针 C++ Coroutine TCP 包头字段... 标志位 -> 建立连接过程,终止连接过程 -> TIME_WAIT, CLOSE_WAIT 分析,属于哪一方? 进程间通信方式... pi