What you say certainly makes sense, and it is somewhat logical. However, I think Mojang needs to be more concerned about this issue than they currently are. Or rather, I was noting the fact that what they are trying to do to fix this issue is not working as fast as the issue is propagating.
But no offense (or any such thing) taken from your comment, and thanks for the clarity that your opinion gives
No problem.
IMO the thing that everyone needs to understand is that unlike other games, Minecraft does most of the rendering calculations on the CPU. Things such as ambient occlusion (AO) ("Smooth Lighting") and the new anistropic filtering are all calculated on the CPU, and the GPU is only in charge of rendering the geometry, no shading or lighting really; that's passed to the GPU already calculated.
This makes the game easy on the GPU, meaning older and weaker systems can play it. Great! The problem surfaces when Mojang wants to overhaul rendering by using post-processing and shaders to move AO, AF and other post-processed effects to the GPU. Now while Mojang is honestly doing some really simple stuff (nothing like what Sonic Ether's Unbelievable Shaders or KUDA does), it bumps the hardware requirement up as Mojang wants to update the OpenGL version the game is using (AFAIK, older OpenGL versions have issues with shaders, newer versions fix these issues, hence the increase in minimum OpenGL support), which means people playing on older and/or weaker systems can no longer play the game smoothly, at all in a few cases.
The thing is this isn't Mojang's fault, nor is it their problem to be perfectly honested, at least in my opinion. Nothing is stopping you from buying a new computer (and honestly, when I say old and weak, I mean tens of years... maybe a bit exaggerated but you get my point, low-end systems nowadays have great support for OpenGL, and shaders too, so buying a new computer isn't too big of an ask). I do think Mojang should phase the older OpenGL versions out, maybe for the time being include an option or something to switch between OpenGL pipelines, but it's more work for them when they've got a lot of work to go.
As I said before, we'll need to wait till 1.9 rolls out to see the verdict; personally I haven't looked at the 1.8 framerate with VSync off (I play with it on, I don't like tearing and making my hardware do more than what's required), but I haven't seen drastic drops in performance yet, on both my good and crappy laptop too. So 1.8 is up in the air with the performance complaints, I don't doubt there's a performance drop, but at the same time I don't think there's much Mojang can do aside from say it's on the users to keep their hardware updated. Just my opinion at least.
Rollback Post to RevisionRollBack
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
Look, I don't have time to argue with you about this back and forward. The updates are taking so long because the changes they're making are so drastic. If you think that they're being lazy, be my guest, learn GLSL, Netty and all the other APIs and you attempt to do the same things with Minecraft as they are doing. The point is it is recoding from the ground up, it isn't taking parts of code and replacing it with newer code, it's completely deleting the entire classes and rewriting the engine completely. They can't just wait till a snapshot rolls out to patch an ID they missed, this is where you shouldn't be arguing because you know nothing about Java or the game itself code-wise. If they miss an ID, the game crashes. That simple.
I respect you for having knowledge and for being generally respectful, but I have told you that I don't understand. I am not arguing. I am asking questions based on what I know, and you are clarifying. I thank you for teaching me things, it's been useful to understand. However, please do not utter "why don't you try it" ever again. I don't need to try it to understand it. I just need correct information.
Well one thing that's already been mentioned is that they plan on moving over to solely shaders for rendering in 1.9. They've made some progress towards that end in 1.8 but it's still a long way off. GL calls are still widely used internally and switching to shaders will still involve a massive amount of work. More than just the 'find and replace' you keep talking about.
There's also mention of changing entity renderering to use models from resourcepacks as well that, having seen the code myself, I would be very impressed if they manage to get that working this year. There is just so much abstracting they have to do for that, not just models but also all the animations, held items, wearables, different render passes (used by the enderman to get their eyes to glow). Not to mention the models or the textures (or both) have to change depending on the state of the entity, like how sheep have coloured wool or no wool, villagers change clothes, zombies can have villager heads, endermen open their mouths, and the enderdragon I don't even.
I'd also like to add that 'find and replace' is not an adequate method for editing code. Any self respecting programmer would never use that. It's not context sensitive and just one misplaced or ill thought replacement could mean hours of work trying to fix the resulting mess, or worse one of the changes it makes doesn't cause any immediate problems but then a bug arises weeks later and you have to hunt it down.
"Find and replace" works for if you're trying to find and replace. I understand it won't work if you're doing something else.
That seems like a justifiable use of their time. I still would've thought that they'd get bored and do something other than that. And while they've done a few things, it's been over a longer average time. I wonder if they somehow learned patience, or they've gotten distracted by other things.
A better explanation would be "find, replace, correct." I say "find and replace" because it's a quick and easy explanation. I understand that it requires more effort than I've made it sound like. Though I'm uncertain as to whether or not it's easier for Mojang to simply rewrite everything than correct everything.
It seems like a functional API should allow them to add to their own game easier, at least.
I respect you for having knowledge and for being generally respectful, but I have told you that I don't understand. I am not arguing. I am asking questions based on what I know, and you are clarifying. I thank you for teaching me things, it's been useful to understand. However, please do not utter "why don't you try it" ever again. I don't need to try it to understand it. I just need correct information.
"Find and replace" works for if you're trying to find and replace. I understand it won't work if you're doing something else.
That seems like a justifiable use of their time. I still would've thought that they'd get bored and do something other than that. And while they've done a few things, it's been over a longer average time. I wonder if they somehow learned patience, or they've gotten distracted by other things.
A better explanation would be "find, replace, correct." I say "find and replace" because it's a quick and easy explanation. I understand that it requires more effort than I've made it sound like. Though I'm uncertain as to whether or not it's easier for Mojang to simply rewrite everything than correct everything.
It seems like a functional API should allow them to add to their own game easier, at least.
The only thing is, you don't understand but are adamant about how Mojang can do better. How can you say they can do better for something you don't understand? That's what I'm trying to notify you of; you shouldn't be making statements such as Mojang shouldn't be taken this long to replace an entire game's OpenGL calls with new ones when you yourself have no clue about Minecraft or OpenGL (assuming you don't know about OpenGL). I apologise if I was being too harsh, but it just seems really off to be doing that.
The thing is they're not making the API for themselves, in fact it shouldn't even be called an API, more so a bunch of accessible functions throughout the project. Minecraft is a little weird with how it deals with things, lighting is calculated really weirdly (it's calculated from the sky as the primary source of light, and each side of the block has it's light value offset to create pseudo-directional-light), the newer changes Mojang are making are pretty much wrappers for existing things (IDs are still a thing, they're just handled by the deeper sections of code and automatically assigned now, same goes with metadata). Instead of building an engine and building off of that like other games do, the whole game itself is really it's own engine. Each block has it's own form of rendering compared to an engine handling the rendering of most blocks. Different things are nested in several places, lighting especially is all over the place, some of the code is in the rendering package, some is in each individual block's class, some is even in the world package, that's what I mean by there's no API; it's all over the play and unorganised.
When I say they're making changes, I don't mean to the API, there isn't actually an official API in place, all the classes just kinda "work" together to get things done, rather than an external or internal API. What I mean is they're rewriting portions of the game, so for example the lighting changes made in 1.7 would probably have been rewrites of the lighting code within the world and block packages, maybe some in the rendering package. See what I mean? With an API everything is formalised and in the one place, Mojang's code is all over the place, that's also why it takes a while to change certain functions of the game; because there's code nested all over the place to change, if they leave one thing out the game crashes or is broken massively.
Rollback Post to RevisionRollBack
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
Disclaimer: I am a current mod developer, and I code whenever I have the time (which has not been particularly often recently). As judging by your (the OP's) post's tone and and the lack of technical terms used in any of your posts, I can safely assume you have little or no experience with software development, particularly not game development or mod development.
The reason is simply because they aren't lazy.
For starters, 1.8 was a massive update, and managed to push it out surprisingly quickly. From a development perspective, and looking at the features provided in 1.8 (external and internal), they have put a lot of work into this code. While you may only play SSP or SMP and see 1.8 as a few new doors and fences, a new temple and mob, and a few minor gameplay tweaks, looking at all the features shows that 1.8 has a huge internal featureset, finishing some of the ideas that were started in 1.7. New commands and a revamp of adventure mode for mapmakers, internal rewrites of the id and block location systems, a complete and totaloverhaul of the rendering engine, which now loads block models from JSON files (which many mod devs are very unhappy about, but I digress), in addition to those frontward SSP additions mentioned earlier. Specifically, the rendering engine is one of the largest parts of Minecraft, far more lines of code than the item mechanics and (non-tile entity) block mechanics combined. A fifteen-year-old with homework and school most certainly cannot churn out a fully-fledged mod (not just a mini-mod like "obsidian tools") in three months, let alone one with as many features as 1.8.
About the API: IMHO, Minecraft's code is fairly well-organized now, much less spaghetti-code than it used to be. The API will come eventually, but the reflective code that mod API's (I'm using the term "API" in a loose sense here) like MinecraftForge use must be done from the ground up. The ability to load plugins isn't present until the rest of the API can actually handle the code from those plugins. The foundations of what may become the API have been built up for a while now: resource packs in 1.6, shader mechanics and UUID's in 1.7, and the JSON models in 1.8. There aren't any hooks for code now simply because that's the last part of an API. What I mean by "reflective code" here is how API's work. The official API will have to load source code or compiled ASM code from external files not present in the original game code, and modify the game itself while the game is running. This means more than just simple find-and-replace refactoring, this means restructuring the code to be able to function fully without even knowing what the code is ahead of the time. This concept of reflection in code is a very advanced topic in any object-oriented language, especially Java. Making sure the reflection works in a way so that the main game code is still very usable for modders is that much more difficult. Don't underestimate the difficulty in creating a working API.
And about snapshots: After a major release such as 1.8, they do continue working and releasing snapshots as before, only these snapshots are called prereleases, and they contain mostly bugfixes and optimizations. They don't start working on next-version snapshots until the current version is relatively bug-free and stable. Do you remember 1.7.10? They hadn't started releasing 1.8 snapshots until after 1.7.10 was complete. 1.8.2 is the current vanilla Minecraft version. Until Mojang has determined that enough bugs were fixed for the final, most stable 1.8 release, they will continue working on 1.8. That is simply their version life cycle. 3-6 months of looking at all the new features we're going to get, followed by 4-8 months of racing to utilize all those features to their fullest potential before the next version comes out and breaks a few things, rinse and repeat. Just look at the Redstone, Creative Mode, and Resource Pack sections of the forums flood in the first few months after the new versions come out. Look at the maps and mods being constructed now after the initial hype is over, while we try to put those new features into a cohesive, functioning whole to maximize the enjoyment people get out of this game. This life cycle works extremely well for Minecraft, because of how community-driven this game is.
Lastly, on the topic of a final release. Minecraft is a very community-driven game. Half of us (at least) wouldn't still be playing if it weren't for all the added content provided by players, for players. A final release would break that cycle and cause the game to fade away. Not only does this mean that Mojang (and now Microsoft) would lose a ton of money, but bugs will eventually come to show and compatibility issues will rise as the rest of technology leaves the game behind. Final-release "patches" would in essence be featureless updates. If you think about it, the idea of a final release to Minecraft is really quite saddening.
EDIT: NineEx, if you want a voxel RPG instead of Minecraft, take a look at Cube World. About a year or so ago it was all over the forum front page.
You're 100% correct on the topic of a highschool student having too many things to do to develop a large-scale mod in 3 months. I'm a HSC student and I do modding as a hobby in the background (and a method of building up my Java knowledge too, somewhat), I started development on Thaumic Machina only just before Christmas and have only just continued development on it after I've gotten all my preliminary exams finalised and done.
Rollback Post to RevisionRollBack
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
The only thing is, you don't understand but are adamant about how Mojang can do better. How can you say they can do better for something you don't understand? That's what I'm trying to notify you of; you shouldn't be making statements such as Mojang shouldn't be taken this long to replace an entire game's OpenGL calls with new ones when you yourself have no clue about Minecraft or OpenGL (assuming you don't know about OpenGL). I apologise if I was being too harsh, but it just seems really off to be doing that.
The thing is they're not making the API for themselves, in fact it shouldn't even be called an API, more so a bunch of accessible functions throughout the project. Minecraft is a little weird with how it deals with things, lighting is calculated really weirdly (it's calculated from the sky as the primary source of light, and each side of the block has it's light value offset to create pseudo-directional-light), the newer changes Mojang are making are pretty much wrappers for existing things (IDs are still a thing, they're just handled by the deeper sections of code and automatically assigned now, same goes with metadata). Instead of building an engine and building off of that like other games do, the whole game itself is really it's own engine. Each block has it's own form of rendering compared to an engine handling the rendering of most blocks. Different things are nested in several places, lighting especially is all over the place, some of the code is in the rendering package, some is in each individual block's class, some is even in the world package, that's what I mean by there's no API; it's all over the play and unorganised.
When I say they're making changes, I don't mean to the API, there isn't actually an official API in place, all the classes just kinda "work" together to get things done, rather than an external or internal API. What I mean is they're rewriting portions of the game, so for example the lighting changes made in 1.7 would probably have been rewrites of the lighting code within the world and block packages, maybe some in the rendering package. See what I mean? With an API everything is formalised and in the one place, Mojang's code is all over the place, that's also why it takes a while to change certain functions of the game; because there's code nested all over the place to change, if they leave one thing out the game crashes or is broken massively.
It is understandable. It is my nature to challenge to cause people to give me information. I am generally combative, though I tried not to be here. Though information given to me this way is underlined by negativity, I find it's more accurate when people have something to prove. You have been helpful to my understanding, so again, I thank you, and I apologize if I seemed like I was being outright stupid about things.
It seems really strange to me. I can see why they might do it sometimes, but if it's all like that, it makes it much more difficult to add to and maintain. My mind would automatically tend to organize things to be more centrally located. It seems like an API ranges from difficult to nigh-impossible here.
It is understandable. It is my nature to challenge to cause people to give me information. I am generally combative, though I tried not to be here. Though information given to me this way is underlined by negativity, I find it's more accurate when people have something to prove. You have been helpful to my understanding, so again, I thank you, and I apologize if I seemed like I was being outright stupid about things.
It seems really strange to me. I can see why they might do it sometimes, but if it's all like that, it makes it much more difficult to add to and maintain. My mind would automatically tend to organize things to be more centrally located. It seems like an API ranges from difficult to nigh-impossible here.
That's precisely the reason why they're rewriting the game; they're trying to make it more organised so additions and alterations are easier to manage.
Rollback Post to RevisionRollBack
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
I just read four pages of brain melting logic clashing against purely stubborn ignorance. My head hurts. I'm going to stand beside JCM, Echonite, and Einsteinsci with this debate...
It is NOT easy, I've been studying textbook programming of Java in hopes that some day I'll be able to produce my own mod and update some old mods for fun. If you haven't taken a look, sure some of the programming people display look easy but that's because you haven't looked into the classes, APIs, and packages that make it all possible. You'll get things like "throws" and "catches" or even "Boolean" and sit there asking "what the ---- does this do?!" I've learned all the keywords and let me just say, the science behind those...ho ho ho...good luck understanding that but I digress.
What I'm trying to get across is, as killrprincess stated, coding takes a lot of time because the whole program is like Jenga. You pull the wrong block or change the wrong block and you have a mess. I've never had the patience to look at Minecraft's code so far but if it's as messy as they say...grab a box of blocks (not legos) build a sloppy tower and try to pull a block without trashing the tower. That's how I perceive adding, editing, and removing code for minecraft.
First of all, let's not forget that Mojang also has games other than Minecraft. It would also be handy to mod makers since it takes some time for versions to update, they don't need to update whole mods many, many times. Also, many servers will not have a very good time keeping up if Minecraft updates super fast. In my opinion, it is kinda handy, but at the same time, it won't hurt to be excited for the next update!
um did none of you here about the whole "oh no notch sold minecraft to Microsoft oh no they don't understand who it community works"
since Microsoft is still putting together running minecraft there minecraft devteam is being built.
also about the graphics they mentioned making shaders (proper ones) part of the game and micros soft is going to fix that excuse of a website.
The shaders Mojang are using are not the same sort that GLSL shader packs like SEUS use; they're designed to speed the game up by offloading things such as lighting and AO to the GPU rather than letting the CPU calculate it all, not making the game look pretty.
The main difference between Mojang's pipline and the pipeline introduced by the GLSL Shaders Mod is that the Shaders Mod's pipeline gives shaders access to LOTS of data about the world, such as the time of day, the rain strength, the light values within the code, etc. Compared to Mojang's which gives next to nothing. Because of this, shader packs that use the mod can use the data provided to do some advanced effects such as realtime screen-space reflections, SSAO, realtime world-space shadows and shadow filtering, complex bloom, remodelled lighting algorithms (such as a screen-space lighting algorithm that renders light as a warmer colour, or a realtime dynamic world-space global illumination lighting algorithm which can simulate how real-life light works by bouncing rays of light from surface-to-surface, carrying colour properties along with it), etc. Meanwhile Mojang shaders struggle to even increase the gamma based on ambient lighting (ie make light intensity stronger).
I suspect the Mojang pipeline to be much more flexible in the future, but currently the only real things it can do are post-processing effects such as SSAO and AF; which is the exact reason why Mojang is moving to shaders to begin with.
And both Microsoft and Mojang have confirmed they're only business partners, Microsoft has nothing to do with the game itself apart from perhaps aiding Mojang in terms of advertising and finances; which honestly is probably good due to the fact that Mojang could hire more people and dedicate specific portions of the game's underlying code to groups, making development more efficient.
I just read four pages of brain melting logic clashing against purely stubborn ignorance. My head hurts. I'm going to stand beside JCM, Echonite, and Einsteinsci with this debate...
It is NOT easy, I've been studying textbook programming of Java in hopes that some day I'll be able to produce my own mod and update some old mods for fun. If you haven't taken a look, sure some of the programming people display look easy but that's because you haven't looked into the classes, APIs, and packages that make it all possible. You'll get things like "throws" and "catches" or even "Boolean" and sit there asking "what the ---- does this do?!" I've learned all the keywords and let me just say, the science behind those...ho ho ho...good luck understanding that but I digress.
What I'm trying to get across is, as killrprincess stated, coding takes a lot of time because the whole program is like Jenga. You pull the wrong block or change the wrong block and you have a mess. I've never had the patience to look at Minecraft's code so far but if it's as messy as they say...grab a box of blocks (not legos) build a sloppy tower and try to pull a block without trashing the tower. That's how I perceive adding, editing, and removing code for minecraft.
Just saying, I actually said that if you miss one thing the entire game crashes.
Rollback Post to RevisionRollBack
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
The shaders Mojang are using are not the same sort that GLSL shader packs like SEUS use; they're designed to speed the game up by offloading things such as lighting and AO to the GPU rather than letting the CPU calculate it all, not making the game look pretty.
The main difference between Mojang's pipline and the pipeline introduced by the GLSL Shaders Mod is that the Shaders Mod's pipeline gives shaders access to LOTS of data about the world, such as the time of day, the rain strength, the light values within the code, etc. Compared to Mojang's which gives next to nothing. Because of this, shader packs that use the mod can use the data provided to do some advanced effects such as realtime screen-space reflections, SSAO, realtime world-space shadows and shadow filtering, complex bloom, remodelled lighting algorithms (such as a screen-space lighting algorithm that renders light as a warmer colour, or a realtime dynamic world-space global illumination lighting algorithm which can simulate how real-life light works by bouncing rays of light from surface-to-surface, carrying colour properties along with it), etc. Meanwhile Mojang shaders struggle to even increase the gamma based on ambient lighting (ie make light intensity stronger).
I suspect the Mojang pipeline to be much more flexible in the future, but currently the only real things it can do are post-processing effects such as SSAO and AF; which is the exact reason why Mojang is moving to shaders to begin with.
And both Microsoft and Mojang have confirmed they're only business partners, Microsoft has nothing to do with the game itself apart from perhaps aiding Mojang in terms of advertising and finances; which honestly is probably good due to the fact that Mojang could hire more people and dedicate specific portions of the game's underlying code to groups, making development more efficient.
Just saying, I actually said that if you miss one thing the entire game crashes.
xD well I made a solid image of it It's always fun to imagine Jenga blocks falling.
xD well I made a solid image of it It's always fun to imagine Jenga blocks falling.
Ever seen that Blender video of the hundreds of thousands of Jenga blocks stacked on top of each other and shot with balls? Yeah, that's why I love computer animations.
Rollback Post to RevisionRollBack
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
I simply hate Minecraft's new direction. lazier and lazier every year since 2012.
people keep on ranting about how 1.8 was a huge update even though it took a year, but if you compare to what was added in the total 2010 you will see that it wasn't very big at all!
It wasn't very big content-wise, but code-wise it was monumental. Changing from custom and clunky voxel-based models to custom JSON model scripts and adding a shading pipeline, on top of new content, 1.8 is a huge update.
Everyone, please stop being content wh*res, 1.8 didn't have much content, but it was huge in terms of the code behind the game.
Rollback Post to RevisionRollBack
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
I would not say they are "lazy" for we don't know all the work that they could be putting into the game that we don't see, such as behind the scenes and such.
Rollback Post to RevisionRollBack
"The only way to do great work is to love what you do" - Steve Jobs
I would not say they are "lazy" for we don't know all the work that they could be putting into the game that we don't see, such as behind the scenes and such.
Please read my above post.
Rollback Post to RevisionRollBack
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
I just don't use the 1.8 version, don't feel like minecraft. Just play with the 1.7 version
They can already stop making updates. It won't feel anymore minecraft like.
No problem.
IMO the thing that everyone needs to understand is that unlike other games, Minecraft does most of the rendering calculations on the CPU. Things such as ambient occlusion (AO) ("Smooth Lighting") and the new anistropic filtering are all calculated on the CPU, and the GPU is only in charge of rendering the geometry, no shading or lighting really; that's passed to the GPU already calculated.
This makes the game easy on the GPU, meaning older and weaker systems can play it. Great! The problem surfaces when Mojang wants to overhaul rendering by using post-processing and shaders to move AO, AF and other post-processed effects to the GPU. Now while Mojang is honestly doing some really simple stuff (nothing like what Sonic Ether's Unbelievable Shaders or KUDA does), it bumps the hardware requirement up as Mojang wants to update the OpenGL version the game is using (AFAIK, older OpenGL versions have issues with shaders, newer versions fix these issues, hence the increase in minimum OpenGL support), which means people playing on older and/or weaker systems can no longer play the game smoothly, at all in a few cases.
The thing is this isn't Mojang's fault, nor is it their problem to be perfectly honested, at least in my opinion. Nothing is stopping you from buying a new computer (and honestly, when I say old and weak, I mean tens of years... maybe a bit exaggerated but you get my point, low-end systems nowadays have great support for OpenGL, and shaders too, so buying a new computer isn't too big of an ask). I do think Mojang should phase the older OpenGL versions out, maybe for the time being include an option or something to switch between OpenGL pipelines, but it's more work for them when they've got a lot of work to go.
As I said before, we'll need to wait till 1.9 rolls out to see the verdict; personally I haven't looked at the 1.8 framerate with VSync off (I play with it on, I don't like tearing and making my hardware do more than what's required), but I haven't seen drastic drops in performance yet, on both my good and crappy laptop too. So 1.8 is up in the air with the performance complaints, I don't doubt there's a performance drop, but at the same time I don't think there's much Mojang can do aside from say it's on the users to keep their hardware updated. Just my opinion at least.
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
My Github page.
The entire Minecraft shader development community now has its own Discord server! Feel free to join and chat with all the developers!
I respect you for having knowledge and for being generally respectful, but I have told you that I don't understand. I am not arguing. I am asking questions based on what I know, and you are clarifying. I thank you for teaching me things, it's been useful to understand. However, please do not utter "why don't you try it" ever again. I don't need to try it to understand it. I just need correct information.
"Find and replace" works for if you're trying to find and replace. I understand it won't work if you're doing something else.
That seems like a justifiable use of their time. I still would've thought that they'd get bored and do something other than that. And while they've done a few things, it's been over a longer average time. I wonder if they somehow learned patience, or they've gotten distracted by other things.
A better explanation would be "find, replace, correct." I say "find and replace" because it's a quick and easy explanation. I understand that it requires more effort than I've made it sound like. Though I'm uncertain as to whether or not it's easier for Mojang to simply rewrite everything than correct everything.
It seems like a functional API should allow them to add to their own game easier, at least.
If you are planning to make a suggestion, please read this.
If you want to know more, you can read this.
For those who complain about post-Beta generation, you might want to see this.
The only thing is, you don't understand but are adamant about how Mojang can do better. How can you say they can do better for something you don't understand? That's what I'm trying to notify you of; you shouldn't be making statements such as Mojang shouldn't be taken this long to replace an entire game's OpenGL calls with new ones when you yourself have no clue about Minecraft or OpenGL (assuming you don't know about OpenGL). I apologise if I was being too harsh, but it just seems really off to be doing that.
The thing is they're not making the API for themselves, in fact it shouldn't even be called an API, more so a bunch of accessible functions throughout the project. Minecraft is a little weird with how it deals with things, lighting is calculated really weirdly (it's calculated from the sky as the primary source of light, and each side of the block has it's light value offset to create pseudo-directional-light), the newer changes Mojang are making are pretty much wrappers for existing things (IDs are still a thing, they're just handled by the deeper sections of code and automatically assigned now, same goes with metadata). Instead of building an engine and building off of that like other games do, the whole game itself is really it's own engine. Each block has it's own form of rendering compared to an engine handling the rendering of most blocks. Different things are nested in several places, lighting especially is all over the place, some of the code is in the rendering package, some is in each individual block's class, some is even in the world package, that's what I mean by there's no API; it's all over the play and unorganised.
When I say they're making changes, I don't mean to the API, there isn't actually an official API in place, all the classes just kinda "work" together to get things done, rather than an external or internal API. What I mean is they're rewriting portions of the game, so for example the lighting changes made in 1.7 would probably have been rewrites of the lighting code within the world and block packages, maybe some in the rendering package. See what I mean? With an API everything is formalised and in the one place, Mojang's code is all over the place, that's also why it takes a while to change certain functions of the game; because there's code nested all over the place to change, if they leave one thing out the game crashes or is broken massively.
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
My Github page.
The entire Minecraft shader development community now has its own Discord server! Feel free to join and chat with all the developers!
Disclaimer: I am a current mod developer, and I code whenever I have the time (which has not been particularly often recently). As judging by your (the OP's) post's tone and and the lack of technical terms used in any of your posts, I can safely assume you have little or no experience with software development, particularly not game development or mod development.
The reason is simply because they aren't lazy.
For starters, 1.8 was a massive update, and managed to push it out surprisingly quickly. From a development perspective, and looking at the features provided in 1.8 (external and internal), they have put a lot of work into this code. While you may only play SSP or SMP and see 1.8 as a few new doors and fences, a new temple and mob, and a few minor gameplay tweaks, looking at all the features shows that 1.8 has a huge internal featureset, finishing some of the ideas that were started in 1.7. New commands and a revamp of adventure mode for mapmakers, internal rewrites of the id and block location systems, a complete and total overhaul of the rendering engine, which now loads block models from JSON files (which many mod devs are very unhappy about, but I digress), in addition to those frontward SSP additions mentioned earlier. Specifically, the rendering engine is one of the largest parts of Minecraft, far more lines of code than the item mechanics and (non-tile entity) block mechanics combined. A fifteen-year-old with homework and school most certainly cannot churn out a fully-fledged mod (not just a mini-mod like "obsidian tools") in three months, let alone one with as many features as 1.8.
About the API: IMHO, Minecraft's code is fairly well-organized now, much less spaghetti-code than it used to be. The API will come eventually, but the reflective code that mod API's (I'm using the term "API" in a loose sense here) like MinecraftForge use must be done from the ground up. The ability to load plugins isn't present until the rest of the API can actually handle the code from those plugins. The foundations of what may become the API have been built up for a while now: resource packs in 1.6, shader mechanics and UUID's in 1.7, and the JSON models in 1.8. There aren't any hooks for code now simply because that's the last part of an API. What I mean by "reflective code" here is how API's work. The official API will have to load source code or compiled ASM code from external files not present in the original game code, and modify the game itself while the game is running. This means more than just simple find-and-replace refactoring, this means restructuring the code to be able to function fully without even knowing what the code is ahead of the time. This concept of reflection in code is a very advanced topic in any object-oriented language, especially Java. Making sure the reflection works in a way so that the main game code is still very usable for modders is that much more difficult. Don't underestimate the difficulty in creating a working API.
And about snapshots: After a major release such as 1.8, they do continue working and releasing snapshots as before, only these snapshots are called prereleases, and they contain mostly bugfixes and optimizations. They don't start working on next-version snapshots until the current version is relatively bug-free and stable. Do you remember 1.7.10? They hadn't started releasing 1.8 snapshots until after 1.7.10 was complete. 1.8.2 is the current vanilla Minecraft version. Until Mojang has determined that enough bugs were fixed for the final, most stable 1.8 release, they will continue working on 1.8. That is simply their version life cycle. 3-6 months of looking at all the new features we're going to get, followed by 4-8 months of racing to utilize all those features to their fullest potential before the next version comes out and breaks a few things, rinse and repeat. Just look at the Redstone, Creative Mode, and Resource Pack sections of the forums flood in the first few months after the new versions come out. Look at the maps and mods being constructed now after the initial hype is over, while we try to put those new features into a cohesive, functioning whole to maximize the enjoyment people get out of this game. This life cycle works extremely well for Minecraft, because of how community-driven this game is.
Lastly, on the topic of a final release. Minecraft is a very community-driven game. Half of us (at least) wouldn't still be playing if it weren't for all the added content provided by players, for players. A final release would break that cycle and cause the game to fade away. Not only does this mean that Mojang (and now Microsoft) would lose a ton of money, but bugs will eventually come to show and compatibility issues will rise as the rest of technology leaves the game behind. Final-release "patches" would in essence be featureless updates. If you think about it, the idea of a final release to Minecraft is really quite saddening.
EDIT: NineEx, if you want a voxel RPG instead of Minecraft, take a look at Cube World. About a year or so ago it was all over the forum front page.
You're 100% correct on the topic of a highschool student having too many things to do to develop a large-scale mod in 3 months. I'm a HSC student and I do modding as a hobby in the background (and a method of building up my Java knowledge too, somewhat), I started development on Thaumic Machina only just before Christmas and have only just continued development on it after I've gotten all my preliminary exams finalised and done.
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
My Github page.
The entire Minecraft shader development community now has its own Discord server! Feel free to join and chat with all the developers!
It is understandable. It is my nature to challenge to cause people to give me information. I am generally combative, though I tried not to be here. Though information given to me this way is underlined by negativity, I find it's more accurate when people have something to prove. You have been helpful to my understanding, so again, I thank you, and I apologize if I seemed like I was being outright stupid about things.
It seems really strange to me. I can see why they might do it sometimes, but if it's all like that, it makes it much more difficult to add to and maintain. My mind would automatically tend to organize things to be more centrally located. It seems like an API ranges from difficult to nigh-impossible here.
If you are planning to make a suggestion, please read this.
If you want to know more, you can read this.
For those who complain about post-Beta generation, you might want to see this.
That's precisely the reason why they're rewriting the game; they're trying to make it more organised so additions and alterations are easier to manage.
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
My Github page.
The entire Minecraft shader development community now has its own Discord server! Feel free to join and chat with all the developers!
I think it's the community that makes minecraft bad like those bad people and factions all I see is factions or hub servers ugh
Is it because Mojang is preoccupied with bugs he encountered in his Minecraft?
um did none of you here about the whole "oh no notch sold minecraft to Microsoft oh no they don't understand who it community works"
since Microsoft is still putting together running minecraft there minecraft devteam is being built.
also about the graphics they mentioned making shaders (proper ones) part of the game and micros soft is going to fix that excuse of a website.
Please have a look at my channel: http://www.youtube.com/user/TheMinecraftSteves
I just read four pages of brain melting logic clashing against purely stubborn ignorance. My head hurts. I'm going to stand beside JCM, Echonite, and Einsteinsci with this debate...
It is NOT easy, I've been studying textbook programming of Java in hopes that some day I'll be able to produce my own mod and update some old mods for fun. If you haven't taken a look, sure some of the programming people display look easy but that's because you haven't looked into the classes, APIs, and packages that make it all possible. You'll get things like "throws" and "catches" or even "Boolean" and sit there asking "what the ---- does this do?!" I've learned all the keywords and let me just say, the science behind those...ho ho ho...good luck understanding that but I digress.
What I'm trying to get across is, as killrprincess stated, coding takes a lot of time because the whole program is like Jenga. You pull the wrong block or change the wrong block and you have a mess. I've never had the patience to look at Minecraft's code so far but if it's as messy as they say...grab a box of blocks (not legos) build a sloppy tower and try to pull a block without trashing the tower. That's how I perceive adding, editing, and removing code for minecraft.
[center][url=
First of all, let's not forget that Mojang also has games other than Minecraft. It would also be handy to mod makers since it takes some time for versions to update, they don't need to update whole mods many, many times. Also, many servers will not have a very good time keeping up if Minecraft updates super fast. In my opinion, it is kinda handy, but at the same time, it won't hurt to be excited for the next update!
The shaders Mojang are using are not the same sort that GLSL shader packs like SEUS use; they're designed to speed the game up by offloading things such as lighting and AO to the GPU rather than letting the CPU calculate it all, not making the game look pretty.
The main difference between Mojang's pipline and the pipeline introduced by the GLSL Shaders Mod is that the Shaders Mod's pipeline gives shaders access to LOTS of data about the world, such as the time of day, the rain strength, the light values within the code, etc. Compared to Mojang's which gives next to nothing. Because of this, shader packs that use the mod can use the data provided to do some advanced effects such as realtime screen-space reflections, SSAO, realtime world-space shadows and shadow filtering, complex bloom, remodelled lighting algorithms (such as a screen-space lighting algorithm that renders light as a warmer colour, or a realtime dynamic world-space global illumination lighting algorithm which can simulate how real-life light works by bouncing rays of light from surface-to-surface, carrying colour properties along with it), etc. Meanwhile Mojang shaders struggle to even increase the gamma based on ambient lighting (ie make light intensity stronger).
I suspect the Mojang pipeline to be much more flexible in the future, but currently the only real things it can do are post-processing effects such as SSAO and AF; which is the exact reason why Mojang is moving to shaders to begin with.
And both Microsoft and Mojang have confirmed they're only business partners, Microsoft has nothing to do with the game itself apart from perhaps aiding Mojang in terms of advertising and finances; which honestly is probably good due to the fact that Mojang could hire more people and dedicate specific portions of the game's underlying code to groups, making development more efficient.
Just saying, I actually said that if you miss one thing the entire game crashes.
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
My Github page.
The entire Minecraft shader development community now has its own Discord server! Feel free to join and chat with all the developers!
xD well I made a solid image of it It's always fun to imagine Jenga blocks falling.
[center][url=
Ever seen that Blender video of the hundreds of thousands of Jenga blocks stacked on top of each other and shot with balls? Yeah, that's why I love computer animations.
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
My Github page.
The entire Minecraft shader development community now has its own Discord server! Feel free to join and chat with all the developers!
It wasn't very big content-wise, but code-wise it was monumental. Changing from custom and clunky voxel-based models to custom JSON model scripts and adding a shading pipeline, on top of new content, 1.8 is a huge update.
Everyone, please stop being content wh*res, 1.8 didn't have much content, but it was huge in terms of the code behind the game.
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
My Github page.
The entire Minecraft shader development community now has its own Discord server! Feel free to join and chat with all the developers!
I would not say they are "lazy" for we don't know all the work that they could be putting into the game that we don't see, such as behind the scenes and such.
"The only way to do great work is to love what you do" - Steve Jobs
Please read my above post.
Author of the Clarity, Serenity, Sapphire & Halcyon shader packs for Minecraft: Java Edition.
My Github page.
The entire Minecraft shader development community now has its own Discord server! Feel free to join and chat with all the developers!
Exactly what I was saying, we don't work there or are in the process of coding so what do we know what goes on into making the smallest of changes.
"The only way to do great work is to love what you do" - Steve Jobs