How powerful is the Librem 5, and how could I make games for it?


#1

How powerful are the i.MX 8 CPU and Vivante GPU compared to something a layman would understand?

Also I was curious if you could create and build Unity projects to Linux and have it work on PureOS/Librem5? I tried looking at the documentation and couldn’t figure out how I’d go about making a game rather than an app. Is emulating the OS a good testbed or do I need to wait for the actual phone to test stuff? Would I need to upload all the source code for games I’d want to create along the lines of everything being open? Is anyone already thinking about making games or busy making one for the phone that I could ask questions?

I’d love a push in the right direction as I’m eager to learn and I have some time on my hands. I’m a noob though!


#2

I’m not exactly interested in games, but I’m definitely curious how the “app” development is going to work. I saw some docs from an earlier blog post. But nothing really solid yet. I’m a java programmer so I’d mostly be curious on that stack.


#3

I have no idea what the GPU is capable of but, the CPU is basically identical to that found in a Raspberry Pi 3B+. One of those running Raspbian will be a very good match and in fact will most likely be binary-compatible.


#4

As per the latest specs the processor would likely be an i.MX8M Quad. It contains four A53-Cortex cores clocked at 1.5GHz.

A similar one equivalent in terms for Qualcomm it would approximately be Snapdragon 425. It contains four A53-Cortex cores clocked at 1.4 GHz.

Additionally, it should be taken into account that on an Android device; code that runs is Java. However, Librem5 will taken advantage of running native C.

On my device (Snapdragon 820), I ran a Java vs native C benchmark. As per the results, native C was 1.5 times faster than Java.

I am not an expert, so my answer should be taken with a grain of salt.


#5

You would develop programs for the librem 5 by writing (using C++ normally) them specifically to handle the touch interface and mobile constraints. This will be done through an exposed API framework. Lastly you would compile for the arm 64 platform.

Pretty standard stuff. Not sure what you are specifically looking for here.


#6

Looking to find out where to begin to start learning haha So Unity engine games built to Linux and adapting them for the phone isn’t something that is possible? What kind of code writing software would you recommend to start learning for producing games then?


#7

Well, I would ask what experience you have with programming to date. Programming a game is no trivial task. Even a simple one like Pong. Given the nature of your questions I’m going to assume you are completely new to the idea.

Programming a game is the end product. It is akin to winning a marathon, or being a star NBA player. Before you can do any of that you need to first learn how to sit up, crawl, walk, run, train, learn, etc.

Triple AAA game titles like Call of Duty, for example, are built on extremely complex and powerful code. The amount of complexity and depth there is akin to rocket science. It is not simple and certainly not something you just pick up.

That said, programming is one of the few things where if you are determined, you can bring yourself there using the internet and A LOT of time.

If you are serious I would pick up a book or two on C++ or the language you prefer. I think if games are what you really want to do, C++ is what you should focus on. Like any language, you need to learn the syntax, data structures, and grammatical application.

A simple duckduckgo search should get you in the right direction.


#8

I’m aware and not too concerned with some of the performance comparisons :slight_smile: especially between C and Java. I just do Java because I really enjoy it.


#9

It looks like Unity can build to its WebGL runtime. I think that’s the closest you will have to making a game with Unity available for the Librem 5.

You don’t need to upload all the source code for a game you make if you don’t want to unless it’s derived from something copylefted.

I’m thinking of making games for the 2-in-one Librem 12 using touch, though I am starting to think I should get the Librem 5 phone instead. My plan is to update libre games to use a touch interface so I can get a feel for how touch controls work.

If you want to make an open source game, maybe this will be helpful:

  1. Animate vector graphics with simple shapes like squares and circles. Almost* any programming language with a drawing library can do that.
  2. Add interactivity to your squares and circles.
  3. Make a simple yet fun interactive vector graphics program. This will eventually be your game. Slowly make this program more complex if you want, but keep it fun.
  4. Replace the circles and squares with sprites. You can use programs like Synfig Studio to make these sprites if you want, or look online for some under a Creative Commons license.
  5. Add sound and music. You can probably find samples online under a Creative Commons license, or you can use a program like Musescore to compose your music and Audacity to make your own sound effects.
  6. I recommend hosting your code and resources on Github.

*One notable exception is PostScript, which is not useful for animation even though it is a language specifically for drawing.


#10

Ah I mess around with C# in the Unity engine so been trying to get better at that. I don’t have any experience with API’s, building with phones, ARMs, and the like so been trying to find more about that.


#11

Would that it be a game you could download onto your phone if you build its WebGL runtime? I thought that was for websites and such?

I don’t mind making it opensource so people can see how bad my code is :joy:

I’ve made a two player pong game in the past in Haxe for a university assignment so I understand the gist of creating shapes and messing around with that. I just don’t have experience with API’s or building something from the ground up, Haxe and Unity both had libraries, and for the Librem I’m guessing you have to code a lot of the groundwork for something to run?

Thank you guys for all the replies and answers though! :slight_smile:


#12

@Raggelen if this is correct, I would suggest buying a Raspberry Pi 3B+ and playing around with Raspbian. Any game you make for Raspbian can run on the Librem 5. To make it even more similar, try one of these kits.

Some applications use HTML for interface and run it on a web browser’s display engine. You’d be surprised at the number of phone apps that take this approach - even iOS can treat some websites as their own application. One example of what you might be able to use is Python Webkit.

.

Here’s place to start if you’re interested.


#13

Sweet! I’m going to see how deep the rabbit hole goes and see if I can work through that treasure trove of information! Thank you for sharing :smile:

I’ll see if local electronic stores have the raspberry Pi 3B+ and see if that’s something I want to mess around with. I liked the idea of the librem5 also being the devkit to test on so I might wait till I have that and learn as much as possible until then.

Is C++ then the best language to program in? As it would be faster? I know they all have their own pro’s and cons but I thought I’d ask :slight_smile:


#14

Will you upload your code to github if you do? Thought I’d ask seeing I’d love to look at examples of code! :slight_smile:


#15

It depends on what you want to do. Fast operations what the engine needs should be written in C or C++, but things you don’t want to have to re-compile such as the plugins used to extend games like Oolite, The Powder Toy, Deliantra, and Minetest should be implemented in a script language like Lua or JavaScript or Perl. Those games can show you how that’s done because they are free/open source. Just know that if you copy their code, you will probably have to use their license.

Yes, unless I can find a better way to host my code.


#16

Okay! I’ll take a look at those games and their code. I’ll see if I can get a better understanding of everything in the mean time haha

What programs do you use or would you recommend for C++?


#17

Depends on the OS you are using.

  • Windows, use Visual Studio
  • Mac OS X, use XCode
  • For everything else, you can use Geany, Code::Blocks, Eclipse, and emacs IDEs, as well as the nano and vim editors.
    You can also look up IDEs if you don’t like any of these suggestions.

#18

I’ve done a little more reading for the Raspberry Pi vs. Librem 5 comparison that I’ve been constantly making over the past several months. Quick summary: identical CPU architecture and speed, Librem 5 has 3x RAM size and ~3x 3D acceleration capabilities; roughly equivalent to a Qualcomm Snapdragon 801 (though with a slightly faster CPU).

CPU: both have 4x Cortex-A53 (https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications, https://puri.sm/shop/librem-5/ and https://en.wikipedia.org/wiki/Freescale_i.MX#i.MX_8_series). RPi runs at 1.4 GHz, Librem 5 runs at 1.5 GHz - not really a difference there.

RAM: RPi has 1 GB of DDR2 running at 900 MHz, Librem 5 has 3 GB of DDR3 running at (unknown) MHz.

GPU: RPi has a single Broadcom Videocore IV with 1 gigapixel/second fill rate (https://github.com/hermanhermitage/videocoreiv/wiki/VideoCore-IV---BCM2835-Overview), Librem 5 has 2x 1x Vivante GC7000Lite (https://en.wikipedia.org/wiki/Freescale_i.MX#i.MX_8_series) which fills at 3.2 gigapixels/second (https://en.wikipedia.org/wiki/Vivante).

To compare with Qualcomm chipsets (which seemingly every other smartphone seems to have), we’d sit roughly in between the Snapdragon 801 and the 810 (https://en.wikipedia.org/wiki/Snapdragon_810#Snapdragon_808_and_810_(2015) and https://en.wikipedia.org/wiki/Adreno), with the CPU comparable to the 810 and the GPU comparable to the older 801. Hopefully we won’t get the overheating issues as well…


Question about specs - how would they compare to my current phone?
#19

Are you sure with the double GPU? Mind that the librem uses the i.MX8M not the normal i.MX8. Wilipedia isn‘t that clear about it but i tend to asume only one GPU.


#20

You’re right, I misread the table. It’s 1x, so you’re looking at 3x the graphical power of the 3B+. Edited to fix.