Interesting! I'm going to try and get into the game development industry after I graduate in a few months. Is it fun/enjoyable to work on Android or does it have the same headaches as Minecraft ?
I don't do game development on Android, just OEM/ODM apps (the built-in stuff you see on an Android device). I do have an interest in game development, but I lack the creativity to come up with any ideas I can be really passionate about - the few that I do (like Imperium) are way too much work for me to bother to try from scratch!
Anyway, in regards to Android apps - for GUI's you don't need to manually draw everything, Android has it's own layout engine - or "window manager" already. You generally use XML to define static pages, and Java to populate or manipulate the content.
For games, or alternative rendering if you don't want to use Android's layout engine, you can do most things a standard Java VM on a computer would do - obviously with the exception of native support. LWJGL for example has no Android port (yet) but there's no need, OpenGL support is built-in to Android's runtime. To me it seems to far simpler that LWJGL too.
so... dont mean to interrupt this epic brainstorming session, but i could still potentially use some advice on my best course of actions here...
@Master801 thanks, but im not sure if i will or not, especially after the valid points raised by Tundmantu
@Tundmantu thats some pretty sharp looking code you have there, and some fine points raised about texture maps and usage... as for Android game dev, it really depends on how you do it... alot of Android games are made very fast by untalented people after a quick buck in microtransaction's... there are programs out there(semi-resembling MCReator) designed to whip together an Android game in 20 minutes by any buffoon with a built in microtransaction store...
@all so what is the general consensus as to my best move on this? should i just use a crap ton of separate png's or should i run Master's method? or can anyone think of a way to do this sensibly? essentially yes i want uv-mapping, but i want it on basic Block's not TE's... can it be done? if so, any idea how?
im pretty much at an impasse here until i get this figured out... my code is all set up, my textures are all ready to be compiled either together or seperately, everything but this is all good to go...
I don't see any problem with using master's implementation? You don't want to use it based on what Tundmantu said... which was what exactly, that it's using BufferedImage? Did you not also see that Minecraft's own Texture management also uses BufferedImage?
It's clear though that there is no built-in Minecraft/Forge way to do what you want - the question is if these helper methods are more or less sensible than using many PNG's/Icon registrations to do what *you* want. We've mentioned a few immediate pro's and con's of each method.
Regardless, I still have no idea how to use these helpers - I'd like to see an example of how to get an IIcon from these TextureAtlasSprite you make, to be used in Block and Item renderers. Or perhaps it's not that simple, master801?
RAM issues is my biggest problem with using the BufferedImage... my modded client runs about 3.2Gb right now, and i would like to not add another 500Mb to it for 37 BufferedImage's... i do realize that MC uses it, but i dont think it loads nowhere close to 37 512x512 sheets into RAM... correct me if im wrong?
another issue i have with using his methods is the needed inclusion of his library... although he did link it as a CCA license(was that a joke towards one of my other discussions with CosmicDan? just wondering lol) i still just feel uncomfortable using other people's work... is that abnormal?
my final issue is the same as your's... i have no clue how to use it... i thought to read through more of his GitHub to find the way he calls it, but i dont feel its my place, same issue as above..
EDIT: when i say my modded client, i do not mean from just my mod in-dev... i mean the modpack i run... hopefully there is no confusion
I don't see any problem with using master's implementation? You don't want to use it based on what Tundmantu said... which was what exactly, that it's using BufferedImage? Did you not also see that Minecraft's own Texture management also uses BufferedImage?
It's clear though that there is no built-in Minecraft/Forge way to do what you want - the question is if these helper methods are more or less sensible than using many PNG's/Icon registrations to do what *you* want. We've mentioned a few immediate pro's and con's of each method.
Regardless, I still have no idea how to use these helpers - I'd like to see an example of how to get an IIcon from these TextureAtlasSprite you make, to be used in Block and Item renderers. Or perhaps it's not that simple, master801?
TextureAtlasSprite is an IIcon. Actually, it implements IIcon.
You need to load 37 512x512 textures? Why the heck for? That's a lot of blocks/items.
And yeah I did notice master801 uses CC, furthermore a non-copyleft and non-commercial variant - one of the most restrictive. Because of this, and as we talked about how CC is ignorant/unspecified with the difference between source-code and software; it's impossible for anybody else to use his library - unmodified or not - unless they use the exact same license. This CC-BY-NC-SA license is similar in objective to the non-permissive GPL, but all CC licenses are incompatible with GPL - plus it's strictly non-commercial, which is incompatible with all FOSS licenses.
Even if they do use the exact same license, it's technically void as soon as the work is compiled. I suggest master801 re-license it to GPL, but he probably really wants that non-commercial tag on it (to stop Mojang themselves from using it maybe? haha).
Anyway, I can guess that you don't use the same license as master801 - so I'm not sure what you can do. We're back to square one. Maybe one day I'll do a similar class for it (but in LGPL v3) - I've already closed master801's repo's so I don't get any ideas stolen from him and his scary CC licenses xD
@master801, ha fair enough - that makes it easier! But I can't use your code anyway.
if you really want to know, i will tell you in a PM as i prefer the specific details of the project to stay on the down-low for now, if thats ok with you... and just so its clarified i mean 512x512px.. not 512x512 16x16px textures, in case that may be what you thought(it was what i thought when i re-read it)
holy license jargon batman! seriously though, i know very little about license's, all i know is who uses what and kinda why... and frankly i only know all that because of the ~200 licenses i had to read and accept for the modpack im building... would be nice if everyone in the MCF community just agreed on a single license type eh?
back on topic... two more questions for Master801... 1: can you perhaps estimate the RAM usage of my proposed 37 texture files @ 512x512px? and 2: exactly how much of your 801-Core would i need to use, can it be separated? and do you by chance have a version of it for 1.6.4? or would i need to back-date it? and of course, would i then have permission to do so if need be?
EDIT: @CosmicDan i do not have a license, nor would i know how to begin with one... thus the reason i generally use either Open-Source, or Obfuscated code with no-license...
holy license jargon batman! seriously though, i know very little about license's, all i know is who uses what and kinda why... and frankly i only know all that because of the ~200 licenses i had to read and accept for the modpack im building... would be nice if everyone in the MCF community just agreed on a single license type eh?
xD
This is a very good site/page with easy summaries of popular licenses. In fact, after refreshing my knowledge on it I have no idea why I ever chose LGPL. I will be switching to the MIT License instead, LGPL does not allow people to use my code in closed source works. All I care about is being acknowledged and not being blamed, and that's basically what MIT license is about.
[Forum stuffed up. @ Your edit about licenses to use...]
I don't really know anything about non-FOSS (Free and Open Source Software) licenses. When it comes to closed-source, it doesn't really matter. The point of a license is to mainly specify what is allowed, rather than to deny that which is forbidden - for denying things, that's generally covered under general Copyright laws, and your own terms of use. You could write your own EULA (invent your own license - part of the terms of use) like big commercial software, e.g. forbidding reverse engineering and such, but really - that won't stop anybody from doing it. You don't have the legal/monetary power to enforce it, so just don't worry about it.
Really, I don't think *any* of us would put the money into legally defending our mods... the worst we can do is boycott and/or humiliate people who break our licenses. Being outcast from the modding community is punishment enough for mod license violation, I'm sure
In summary, if it's open source - take a look at that page I linked. My advice = if you want it to stay 100% open-source and have everyone share their work together, use GPL. If you only care about being credited (and not being blamed), use MIT. If you don't give a gosh darn what anybody does at all with your code, declare it as Public Domain. There are other options though, as the page shows.
Note that countries/regions may over-ride any software license you use with copyright laws, however. For example, here in Australia - anything written by someone is automatically copyrighted, and recent moral laws say that the copyright holder has the right to be attributed for their work. This is common in many countries, but Australia is one of the few where this automatic copyright cannot be revoked, and thus Public Domain "Unlicensing" cannot be done legally. That's an interesting/weird thing that's little known, and these little things may not be a big deal for Minecraft modding - but if you ever plan on creating something one day to make you money for example, be sure to read up on your country/state copyright law
EDIT: Oh, I didn't actually say. To "license your code", just paste the full license text into a LICENSE.TXT in the root of your source tree (and alongside the ZIP that has your mod jar and readme; for GPL-like licenses, you'd also put a link to the sourcecode in the readme).
I only use that license so my work is not stolen, or sold for commercial purposes. However I see your point.
Anyone using my helpers has the permission to do use my classes without having to have the same license, just as long as you send me a link to your project (if it's open-source) and promise not to sell the class to make profit.
EDIT:
Enouchsend: I have no way to estimate the memory usage, other than actually doing it myself (or someone else).
EDIT EDIT:
I've switched to this license now. Hopefully this makes it easier for people to use my classes.
I've switched to this license now. Hopefully this makes it easier for people to use my classes.
Nice. You might already know that everything I do will remain open and free, but without the ShareAlike it's now compatible for conditional inclusion in a FOSS licensed mod (and a closed source one of course, as Enochsend is doing I believe).
So Enochsend, you can rip master801's texture class and use it now - as long as you give credit to master801 and don't try to sell your mod (lol). Also, still waiting on that PM for why you need 1.21 gigawatts of textures
Fun-fact, I've added resource pack support (still wip). So make sure to rip out the new class if you haven't already. Also, it may work, and it may not. I haven't really tested it since... well... since I have hardware "issues". Computer specs are . Once you see them though, you'll understand why I can't test it...
I don't do game development on Android, just OEM/ODM apps (the built-in stuff you see on an Android device). I do have an interest in game development, but I lack the creativity to come up with any ideas I can be really passionate about - the few that I do (like Imperium) are way too much work for me to bother to try from scratch!
Anyway, in regards to Android apps - for GUI's you don't need to manually draw everything, Android has it's own layout engine - or "window manager" already. You generally use XML to define static pages, and Java to populate or manipulate the content.
For games, or alternative rendering if you don't want to use Android's layout engine, you can do most things a standard Java VM on a computer would do - obviously with the exception of native support. LWJGL for example has no Android port (yet) but there's no need, OpenGL support is built-in to Android's runtime. To me it seems to far simpler that LWJGL too.
Most Android games however put as much as they can into native code, for obvious reasons. Compiling things from lower-level languages is recommended for anything exclusive. With the official NDK you can compile C/C++ (uses it's own BSD C based library called Bionic) and other third-party toolchains/kits can provide Objective-C native compilation for example
@Master801 thanks, but im not sure if i will or not, especially after the valid points raised by Tundmantu
@Tundmantu thats some pretty sharp looking code you have there, and some fine points raised about texture maps and usage... as for Android game dev, it really depends on how you do it... alot of Android games are made very fast by untalented people after a quick buck in microtransaction's... there are programs out there(semi-resembling MCReator) designed to whip together an Android game in 20 minutes by any buffoon with a built in microtransaction store...
@all so what is the general consensus as to my best move on this? should i just use a crap ton of separate png's or should i run Master's method? or can anyone think of a way to do this sensibly? essentially yes i want uv-mapping, but i want it on basic Block's not TE's... can it be done? if so, any idea how?
im pretty much at an impasse here until i get this figured out... my code is all set up, my textures are all ready to be compiled either together or seperately, everything but this is all good to go...
It's clear though that there is no built-in Minecraft/Forge way to do what you want - the question is if these helper methods are more or less sensible than using many PNG's/Icon registrations to do what *you* want. We've mentioned a few immediate pro's and con's of each method.
Regardless, I still have no idea how to use these helpers - I'd like to see an example of how to get an IIcon from these TextureAtlasSprite you make, to be used in Block and Item renderers. Or perhaps it's not that simple, master801?
another issue i have with using his methods is the needed inclusion of his library... although he did link it as a CCA license(was that a joke towards one of my other discussions with CosmicDan? just wondering lol) i still just feel uncomfortable using other people's work... is that abnormal?
my final issue is the same as your's... i have no clue how to use it... i thought to read through more of his GitHub to find the way he calls it, but i dont feel its my place, same issue as above..
EDIT: when i say my modded client, i do not mean from just my mod in-dev... i mean the modpack i run... hopefully there is no confusion
TextureAtlasSprite is an IIcon. Actually, it implements IIcon.
Here's a implementation that I made (WARNING, IT MAY BE BROKEN): https://bitbucket.org/master801/transformer-convertors-2/src/15eb3a7b6995c7f869f6810e1df9182cfd8e7376/src/main/java/transformerconvertors2/blocks/misc/BlockReinforcedTank.java?at=1.7.10#cl-44
And here's another one showing off the method that can load resources from custom locations, while not using the "assets" folder.
https://bitbucket.org/master801/transformer-convertors-2/src/15eb3a7b6995c7f869f6810e1df9182cfd8e7376/src/main/java/transformerconvertors2/utilities/ConvertorsIconProvider.java?at=1.7.10#cl-31
And yeah I did notice master801 uses CC, furthermore a non-copyleft and non-commercial variant - one of the most restrictive. Because of this, and as we talked about how CC is ignorant/unspecified with the difference between source-code and software; it's impossible for anybody else to use his library - unmodified or not - unless they use the exact same license. This CC-BY-NC-SA license is similar in objective to the non-permissive GPL, but all CC licenses are incompatible with GPL - plus it's strictly non-commercial, which is incompatible with all FOSS licenses.
Even if they do use the exact same license, it's technically void as soon as the work is compiled. I suggest master801 re-license it to GPL, but he probably really wants that non-commercial tag on it (to stop Mojang themselves from using it maybe? haha).
Anyway, I can guess that you don't use the same license as master801 - so I'm not sure what you can do. We're back to square one. Maybe one day I'll do a similar class for it (but in LGPL v3) - I've already closed master801's repo's so I don't get any ideas stolen from him and his scary CC licenses xD
@master801, ha fair enough - that makes it easier! But I can't use your code anyway.
holy license jargon batman! seriously though, i know very little about license's, all i know is who uses what and kinda why... and frankly i only know all that because of the ~200 licenses i had to read and accept for the modpack im building... would be nice if everyone in the MCF community just agreed on a single license type eh?
back on topic... two more questions for Master801... 1: can you perhaps estimate the RAM usage of my proposed 37 texture files @ 512x512px? and 2: exactly how much of your 801-Core would i need to use, can it be separated? and do you by chance have a version of it for 1.6.4? or would i need to back-date it? and of course, would i then have permission to do so if need be?
EDIT: @CosmicDan i do not have a license, nor would i know how to begin with one... thus the reason i generally use either Open-Source, or Obfuscated code with no-license...
xD
This is a very good site/page with easy summaries of popular licenses. In fact, after refreshing my knowledge on it I have no idea why I ever chose LGPL. I will be switching to the MIT License instead, LGPL does not allow people to use my code in closed source works. All I care about is being acknowledged and not being blamed, and that's basically what MIT license is about.
[Forum stuffed up. @ Your edit about licenses to use...]
I don't really know anything about non-FOSS (Free and Open Source Software) licenses. When it comes to closed-source, it doesn't really matter. The point of a license is to mainly specify what is allowed, rather than to deny that which is forbidden - for denying things, that's generally covered under general Copyright laws, and your own terms of use. You could write your own EULA (invent your own license - part of the terms of use) like big commercial software, e.g. forbidding reverse engineering and such, but really - that won't stop anybody from doing it. You don't have the legal/monetary power to enforce it, so just don't worry about it.
Really, I don't think *any* of us would put the money into legally defending our mods... the worst we can do is boycott and/or humiliate people who break our licenses. Being outcast from the modding community is punishment enough for mod license violation, I'm sure
In summary, if it's open source - take a look at that page I linked. My advice = if you want it to stay 100% open-source and have everyone share their work together, use GPL. If you only care about being credited (and not being blamed), use MIT. If you don't give a gosh darn what anybody does at all with your code, declare it as Public Domain. There are other options though, as the page shows.
Note that countries/regions may over-ride any software license you use with copyright laws, however. For example, here in Australia - anything written by someone is automatically copyrighted, and recent moral laws say that the copyright holder has the right to be attributed for their work. This is common in many countries, but Australia is one of the few where this automatic copyright cannot be revoked, and thus Public Domain "Unlicensing" cannot be done legally. That's an interesting/weird thing that's little known, and these little things may not be a big deal for Minecraft modding - but if you ever plan on creating something one day to make you money for example, be sure to read up on your country/state copyright law
EDIT: Oh, I didn't actually say. To "license your code", just paste the full license text into a LICENSE.TXT in the root of your source tree (and alongside the ZIP that has your mod jar and readme; for GPL-like licenses, you'd also put a link to the sourcecode in the readme).
Anyone using my helpers has the permission to do use my classes without having to have the same license, just as long as you send me a link to your project (if it's open-source) and promise not to sell the class to make profit.EDIT:
Enouchsend: I have no way to estimate the memory usage, other than actually doing it myself (or someone else).
EDIT EDIT:
I've switched to this license now. Hopefully this makes it easier for people to use my classes.
Nice. You might already know that everything I do will remain open and free, but without the ShareAlike it's now compatible for conditional inclusion in a FOSS licensed mod (and a closed source one of course, as Enochsend is doing I believe).
So Enochsend, you can rip master801's texture class and use it now - as long as you give credit to master801 and don't try to sell your mod (lol). Also, still waiting on that PM for why you need 1.21 gigawatts of textures
ill toss you the PM in just a second, was waiting on confirmation of acceptance or some such shenanigans