In App Game Kit and App Game Kit Studio we could use Game Guru models and also First Person Creator (Classic) models.
But how? With App Game Kit Studio it is much easier to preview *.x-files and texture files and import them into your own project.
But it is also not perfect and we would have to do a lot of searching and copying by "hand".
Also there is a lot of free content for our own projects on GitHub.
https://github.com/TheGameCreators
https://github.com/TheGameCreators/FPS-Creator-Classic
First Person Shooter Creator (Classic) and also Dark Basic Professional and a lot of model-packs are there for download.
But they are from a time, where UHD 4K monitors or high resolution where not such a big deal. So previews for the models are often stored in 64 x 64 pixel bitmaps *.BMP
.... there is also Game Guru Loader if you have GameGuru Levels and so on to convert them into AGK. For me often was the problem that GameGuru didn't run well on my system, and I didn't figured out why.
I tried FPSC Classic and the FPS Creator X10 version
https://www.amazon.de/Modern-Games-FPS-Creator/dp/B000BCE9SQ/ref=sr_1_1?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=fps+creator&qid=1559490365&s=software&sr=1-1-catcorr
https://www.amazon.de/The-Game-Creators-FPS-Creator/dp/B001F2S0P4/ref=sr_1_1?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=fps+creator&qid=1559490365&s=software&sr=1-1-catcorr
And they work better on my system, but also not perfect. They provide on the CD about 1 GByte of 3D models, characters, textures, sound, music and so on and with all model-packs, where a lot of are now free, there are assets about more than 8 GBytes in total.
In 2016 they where made free.
So my idea was, what if ... we could have something like an easy level builder and or props-placement tool for the FPS Creator (Classic) assets for AGK. And since AppGameKit is also available for Raspberry Pi and Android, my idea was even "bigger". What if, we could use the assets on the go?
Since 2014 I tried to run a 3D game on the OUYA. It was build in AppGameKit 1.x and uses the FPSC2AGK ... it somehow worked. But I could not edit the code for my need and the loading times where big on the OUYA. I also noticed that the objects are pre-baked now and a lot of the textures are loaded multiple times and also objects and textures are stored multiple times.
So an easy scene which was about 10 pre-fabs from FPSC was now about 380 objects and textures. So the media folder was big and also the loading times.
So. On the one hand, we had a program, that converted FPSC to AppGameKit, and we had GameGuru Loader much later. But they don't fitted my needs.
What I am was looking for was such thing like a FPSC on the go with a little foodprint running on low-spec hardware with a lot of models and other assets.
Whaaaaat? That is not possible!!!
I never got AppGameKit executables to run on a Raspberry Pi, guess some problems with rights management, but I had my OUYA as reference. And my goal was, to run things on the OUYA and so I now, it could run on all other platforms.
____________________________________________
____________________________________________
So how? First I analysed the FPSC (Classic) Data, and found out, that *.DDS are most of the space in use. AppGameKit itself can't use *.DDS, so there are two options: PNG or JPEG. BMP also, but that makes not much sense in most cases.
JPEG is fine, but can't do transparency and PNG is very slow when it decodes in memory while loading.
On ARM devices JPEG is also much faster than most PNGs I tried.
I started the work on this project before AppGameKit had "RAW:" in file-operations. So some of my tools are written in PureBasic.
What is the goal or what could be the goal?
Android apps had to be about 100 MB at all and I found, 100 MB is a good size, even if we have no ZIP 100 floppys anymore
So we have ~ 8 GB on model packs or 1 GB assets with FPSC (Classic), and I wanted to try, if it is possible to get it under 100 MB ...
That is insane!!
I figured out, that a lot of the *.X files from FPSC(C) are mostly doppelganger. And the FPE files have only some differences.
I also figured out, that also the textures are in some cases are doppelganger and they also not so different from each other.
I also saw, that we have mostly four textures, also we could reduce them to one only. Why? _D, _N, _S / _I and _D2 for mobile devices and also mobility, that would be enough.
That would make only 1/4 of the size. The next thing would be, that we could reduce the texture quality in X and Y size (UV), we don't need 4K x 4K most of the time. Not all textures are so high, but some are. We don't need 2K x 2K for a gun or a hammer, if we only this prop from the far.
So in the worst case, we could say we could reduce also the texture in quality to 1/4 and the next test was, from *.DDS to JPEG, we could have about halfe the size on the JPEG with nearly the same quality.
So, from ~ 1,000 MB ==> 1/4 * 1/4 * 1/2 ~ 1/32 ~ 31.25 MB
In theory. Also we have doppelganger. Some walls use the same texture, but they are in other folders, some props have the same texture, but with other names. And so on.
What about the 3D models? *.X files?
I figured out, that we could reduce the size from *.X files, if we use
SetObjectMeshFromMemblock()
Or if we use e.g. FragMotion and save the X-file as:
Format: compressed
Rotation Type: Quaternion
unfortunality not every X-file model works after that. Also the memblock-functions are only for meshes, not for animations or combined meshes.
I also tested some animated models. Most models have about 2498 keyframes. And have about 100 animations inside, but they are mostly doppelgangers, because the are combined from food and hands like:
walking without gun, walking with gun, walking with bazooka, walking with granade, walking with MG, walking with rifle ...
running without gun ....
swimming without gun ...
And also there are a lot of keyframes, from a time, where transitions from keyframe to keyframe maybe are cost to much GPU power. Since AppGameKit is able to tween animations, this could be reduced drastlicy.
e.g. Specialist.X is about ~ 3 MB original from "Modern Day"
With FragMotion without changing something, but compressing the X-file it is about 1.8 MB (no ZIP, direct loading in AppGameKit possible)
And if we would have only about 30 Keyframes the file would be 107 kByte. That would be not practical, but for testing, I tried that. A "frame" "costs" about 500 bytes. I guess, we could have abput 100 seperate animations with less keyframes and our new model would be about under 300 kByte big. (including the mesh, weights, bones)
The Audio? We could save most of the files as *.OGG
So there is a lot of potential to compress and reduce the file size of the assets.
---------------------------------
---------------------------------
How, what, why?
Taget: 100 MB.
FPSC + free Model packs has over 8000 assets (with doppelgangers)
5221 (modelpacks) *.FPE (pre-fabs, models and there behavior and offsets)
2978 (modelpacks) *.FPS (segments like walls, bigger building-structures, working doors)
581 (FPSC(C)) *.FPE
316 (FPSC(C)) *.FPS
374 (FPSC(C)) *.WAV
Not every asset is a great asset. Some of them are currupt, they don't load in AppGameKit or in other programs correctly. Some of them may not fit for educational purpose (Nazis e.g.) some don't fit to the others because of there polycount. They may have to much or to less, to blend seamless.
So let's they, without doppelgangers and a good variaty and maybe the better looking ones, we could count to 1,000 assets.
The idea is, to have about 1,000 assets that fit into less then 100 MB.
For texture work we could be about ~ 30 MB, for sounds we could have about 3 MB (without music, music would be another thing. More like Amiga MOD, MIDI, or MO3)
Maybe Speech synthesis for one character ~ 20 MB good quality.
the 1,000 models in size about 30 MB for the non animated ones
and about 15 MB for the app itself.
Let's say we have no Speech synthesis yet or could use build in from Android. We could have about 30 unique animated characters for about 300 kByte each under 10 MB.
But that is all theory.
___________________________________________________________________________________
Steps to achieve that.
- download the FPSC(C) and FPSC(C) model packs
- convert the textures to PNG without loss (better would be, we would have the TIFF or TARGA files from the source, not the compressed *.DDS DXT with artifacts already)
--- (here we also have no *.basis in AppGameKit, what is pitty ----
- creating bigger previews than 64 px by 64 px so we could use the file-explorer from e.g. Windows or the finder on MacOS X
- loading the previews, sort the better objects and models : I have a tool for that
- copying the models and textures into new folders
- easy loading
build a new model placement tool with "URL"s kind of reference. These ~ 1,000 models would have a unique ID all over and we could use them in AppGameKit, AppGameKit Studio, AppGameKit APP and so on, but only have to copy the source, because on mobile and everywhere, we could have these 100 MB assets already installed.
And if not, we could download it fast, because only 100 MB in a package.
All new demos and tutorials could work with that.
AND !!! --> because we know, from which source every object is and which texture was used, we could recreate the _D, _N, _S and so on textures and high-resolution textures from the 8 GByte assets, if we would need to have more quality or "better" lighting effects and so on.