MachineMuse / MachineMusePowersuits

Minecraft mod, take 2
236 stars 105 forks source link

1.12 Planning #804

Open lehjr opened 7 years ago

lehjr commented 7 years ago

Some thoughts and ideas for 1.11.2

Currently I have a mostly working build for 1.11.2, except for translations. However, I am considering reworking some of the code. I'd like to start looking at "capabilities" as a way to clean up the code. More thoughts later on...

lehjr commented 7 years ago

I did finally get it to come up. It's nowhere in the start menu. And the UI makes me want to end it all but it is in there. Not exactly what it was like since Windows 3.11, but it's there, somewhere. I try not to use Windows anymore than I have to. The more I use it, the more I hate it, especially Windows 10.

eyeonus commented 7 years ago

Agreed. Thank you Valve for helping gaming companies to realize games on Linux is a good idea.

Games are literally the only reason I even have Windows.

EzerArch commented 7 years ago

Of course, I may have misunderstood Ezer, and I expect to be corrected quickly if so. ;)

Sorry I've been really busy these days.

What I mean by "make it harder" approach was punishing just for a module being powerful or useful: it makes you slower, consume more energy or force you to grind more resources or craft more modules. Yet, there are modules to get around those punishments (e.g. High Efficiency Solar Panel, Mechanical Assistance), which means more resource grinding, more tinkering with modules etc. It's like we know the player will craft a very overpowered armor soon or later but we put some obstacles in the way. Story time?

I want this powerful module -> But this requires more energy (added for balancing reasons) -> Oops, more energy requires bigger battery -> But it will make me run slower (added for balancing reasons) -> Solution: found out a module that generates 3x more energy and another module that removes the slower-ness (both added for balancing reasons), now I have an overcomplicated overpowered armor. YAY!

My opinion is, MPS relies too much only on energy consumption and feature bloat as balancing factors. Once you install all modules and keep the armor charged, you are nearly invincible. You got glorified swiss-knife armor that not only tills the soil but also burns the heck of mobs.

Instead of just making things more expensive or complicated, let's introduce a bit of tactical/strategy approach.

I do recommend trying the MatterOverdrive mod. The mod has a handful of quite nifty modules without too much clutter or redundancy. The modules need energy to work but also requires from the player more decision-making. For instance, the MO's Forcefield Shield has a timer and a cooldown between uses and also disables the jump booster module -- this forces the player to choose better when each module must be used.

2017-06-13_22 16 27

On the other hand, the MPS's Mob Repulsor just requires energy -- leave it activated, you are untouchable, no decision-making is necessary (note here, this is excellent if you're using armor for building as it keeps mobs away while you focus on the building).

The MO's tinker table induces the player to choose between two profiles: fighting or exploration. In MPS, you can even install a bunch of overleaping and too different modules and use them all at the same time.

The following is quite a brainstorming (I may change my mind afterwards and regret deeply. Please don't take it too seriously). I would:

  1. simplify/remove/merge too similar modules.
  2. add more decision-making: 2.1. make modules more effective/distinguishable from each other. 2.2. certain modules won't work together.

Per module (includes a few ideas/fixes. I'll detail if asked):

Sorry for not being brief. My plan was to open an issue only for this.

lehjr commented 7 years ago

Ironically, almost all the games I have are for steam, but yeah, the only reason I have windows is for games ones like Fallout 4 that still has major issues despite several patches.

Anyway, getting back to the mod. While everything is more or less still in planning, this is what the mod will look like based on that planning so far:

Anyway that's what's been planned so far, but nothing is set in stone as of yet. Much will depend on what is technically feasible within the confines of Minecraft, as well as time and skills available vs what is needed. It's hard enough to port the mod. A complete overhaul is a new level of challenges.

lehjr commented 7 years ago

Guess it's time to stop stalling and take a serious look at capabilities and just see where it leads.

grturner commented 7 years ago

I've been tinkering with the code base a little bit on 1.12 though I seen to have hit a wall in that an interface IModelCustomData is not present in Forge any longer and one of the MPS classes implements it. I can't give much more info at the moment. I'm not at my desk.

lehjr commented 7 years ago

Although porting the mod as is to 1.12.x is possible, that's really not my goal. The mod is in desperate need of a revamp for many reasons, like code updating and cleanup, lag fix, fixing game play related issues, all just to find its place again among the many alternatives. Plus installing the same mod in every version of Minecraft is somewhat disappointing for the end user just as it is for the developer to update the mod for every version of Minecraft just to have the same features.

lehjr commented 7 years ago

Thinking about switching to Forge Energy. Not sure yet. Forge Energy uses integers, which only use 32 bits, while the MPS internal MJ power implementation uses doubles which are 64 bits. Doesn't sound like much, but these things add up.

Bluexin commented 7 years ago

Using FE directly also provides better mod compat out of the box, without you (or other mods) having to write the conversion methods (also less error-prone, I've seen a lot of energy exploits caused by people writing their converters wrong). Also, I feel like 32bits is enough to store a lot already ^-^

lehjr commented 7 years ago

I'm trying to use smaller data types where possible, especially in areas that deal with network traffic. I'm also trying to stay away from bundling any other mod's API, which means IndustrialCraft integration/support will be removed, since it depends on bundling their API, specifically this here: https://github.com/MachineMuse/MachineMusePowersuits/tree/1.10.2-Java/src/main/java/ic2/api/item

lehjr commented 6 years ago

My first attempt at an armor stand, not sure about it yet: screenshot_20170919_232618

eyeonus commented 6 years ago

The base seems a little big, that face is kind of creepy. It looks more like a robot mannequin than a armor stand, IMO.

Maybe start with the base Minecraft and texture it up?

lehjr commented 6 years ago

LOL, I was thinking the same thing when I was looking at. The large base was to cover a complete block to cover power cables entering from the bottom to allow charging of armor on the stand. The model itself was originally based on the Minecraft armor stand, but I wanted a way to differentiate which direction it was facing. The theme of the stand was trying to mimic that of the Tinker Table which is why it looks so weird.

I can try a retextured version of the vanilla model, but I'm not really certain if an armor stand is the right way to go. I'll try again, but if I don't like the next version, I'll probably just go with a generic workbench to replace the Tinker Table for now.I really don't want to put too much more time into this.

eyeonus commented 6 years ago

Perfectly understandable all around. As for indicating which way it's facing, may I suggest placing an arrow on the base?

lehjr commented 6 years ago

yeah, that's probably better than having some weird face staring at you. Any suggestion for a texture or theme for it? I wanted something to differentiate it from vanilla, but beyond that I have no idea.

lehjr commented 6 years ago

Hmm, off topic, but can't help noticing how Minecraft's model textures are mostly empty space. Surely they would have benefitted from a more optimized layout.

EzerArch commented 6 years ago

My first attempt at an armor stand, not sure about it yet:

I'd remove the poker face. :|

But if you're still open to suggestions:

2017-09-20_17 13 01 Armourer's Workshop mannequin (left), Bibliocraft armor stand (right), modified with resource pack.

eyeonus commented 6 years ago

As far as theme is concerned, what you have is good, but too busy. The black and green works well, IMO, but maybe just a few touches here and there, not 50 different lights on the torso.

Something along the lines of the Bibliocraft stand, in terms of how much 'stuff' to put on it.

lehjr commented 6 years ago

So far, still working on the armor stand. I did finish one based on the vanilla stand. However, due to how skinny the arms are, the slightest offset in the item's held location is highly exaggerated, not to mention how the power fist would look on a stick. So I think I'll try a player model instead. 2017-09-26_09 12 45

eyeonus commented 6 years ago

Here's some player skins to give you a decent starting point, then:

https://mcskinsearch.com/user/iYunuswie https://mcskinsearch.com/user/xGotzeZk https://mcskinsearch.com/user/Pirad https://mcskinsearch.com/user/creepycritter05 https://mcskinsearch.com/user/Ceoria

Obviously you don't want to use any of these skins themselves, but I thought it might help to give you some design ideas.

lehjr commented 6 years ago

Thanks. I ended up going with a very simple skin. It might be too simplified but should be good enough for now: 2017-09-26_14 11 49

eyeonus commented 6 years ago

Yeah, it's pretty simple. The eyes are creepy, but it's still worlds better than the first one. ;-)

EzerArch commented 6 years ago

The eyes are creepy.

I'd use conjoined eyes like.... umm....

... like this!

30878114-dc2982c2-a2c9-11e7-84a8-19bffe3849bd

Wait a sec. That reminds me of The Day The Earth Stood Still. :>

lehjr commented 6 years ago

I think I'm going to shelve the armor stand idea for now. One of the issues is the complexity of the code needed to make it work vs the actual function it provides. The other issue is that the whole thing is pointless for what I wanted it for, which was to show cosmetic changes in real time. The reason is that as soon as you open the GUI, the armor stand is covered anyway. A more practical approach would be to replace the tinker table model with a new simple workbench model and revamp the cosmetic menu to render the player and equipped items like what is done in the player inventory. Since I'll be changing the GUI menus a bit this is probably a better approach anyway.

lehjr commented 6 years ago

Finally got around to fixing some of the Lux Capacitor stuff, like fixing the model scale and rotation to make the code simpler and implementing Guava cache for the baked quads. Code is much simpler to read and should help with performance. All colors will be using an Enum now rather than a full 4 byte int. This will still allow for up to 256 unique colors (because I'm limiting it to a single byte), which is still far beyond what Minecraft uses.

eyeonus commented 6 years ago

Sounds good. Keep it up!

lehjr commented 6 years ago

Currently working on the code for the tinker table GUI's. Only equipped items can be worked on. The cosmetic GUI will show the player wearing the armor instead of just a single piece of armor. This will make it easier to immediately see changes applied to both skinned armor as well as high poly armor. If time allows, the power fist will be able to have individual parts colored instead of just one color for the entire thing.

lehjr commented 6 years ago

2017-10-20_19 59 30

eyeonus commented 6 years ago

Me likey.

simonmeusel commented 6 years ago

It looks cool, but why don't you style the GUI in a minecrafty look, more pixelated. It dosen't have the standard grey, you could add some modern looks too. Personally, I like consistency in a game, but it's your mod, so you can make it however you want! 😄

Inspiration (just a quick edit of the inventory, the text would need the minecraft font) screen shot 2017-10-21 at 18 14 14

Maybe im a bit late to the discussion, because it would be an awful lot of work changing everything up, but I still wanted to drop this idea

PS: I already liked this mod back in Tekkit Lite (long long time age) and I'm very happy that you update it to newer versions of mc

lehjr commented 6 years ago

There aren't any easy ways of doing that. The GUI for the mod is coded entirely different than the GUI's that use background images and slots and containers.

simonmeusel commented 6 years ago

Yes, you're probably generating the GUI dynamically. But maybe you could just give the edges the minecraft look and make it a bit lower res (just increasing the stroke if that works).

But if it's too much work or you don't like it just keep on going with your design, as it works well!

lehjr commented 6 years ago

Unfortunately, I'm already looking at December for the first 1.12 release. I'd like to put out something before the end of the year.

lehjr commented 6 years ago

Tinker table will be a bit more basic this time around. This is a temporary texture until I have time to come up with something a little less boring. This one uses a 128x128 texture. 2017-10-22_18 30 48

eyeonus commented 6 years ago

I suggest the surface of the old table. The one with the blue rectangles.

lehjr commented 6 years ago

Like this? 2017-10-22_21 44 48

eyeonus commented 6 years ago

Yeah, that doesn't look half bad.

lehjr commented 6 years ago

Hoping to work on a new "ModelSpec" system this week/weekend, probably using an implementation of IBakedModel. This will handle both power fist and armor model customization as well as armor skins for skinned armor. This way everything can be customized in a single cosmetic window. I also need rework the ModelSpec XML reader a bit for that, and get rid of any hard coded references to the existing models. This way, custom skins and models (wavefront) can be fully supported.

Instead of completely abandoning the original method of customizing armor, I'll probably have to do something where either the old system will still work, or a system of presets can be used instead. This means adding a way of saving those presets. Again, the whole point of the preset system is minimizing the amount of bandwidth needed to track the visibility, color, glow states of every single piece of every single armor model for every render pass. A preset system can store all of those values locally, and only the reference needs to be passed through packets. For a couple of players, it might not even be needed. But on a loaded server, it might mean the difference between the mod itself getting pulled or not.

After that is done, then comes the fun part of "capabilities" for most of the armor and items.

lehjr commented 6 years ago

I set up a config option in Numina for the GameOverPlus menu and enabled it based on that. I don't know when it was used last, but since it get ported with every version of the mod, it might as well be an option.

eyeonus commented 6 years ago

What's the GameOverPlus menu?

lehjr commented 6 years ago

It's just a menu option that allows you to continue from where you died with a reduced amount of health. 2017-10-29_17 12 36

eyeonus commented 6 years ago

That would be awesome as a module.

lehjr commented 6 years ago

I'm not really sure how doing it as a module would work. Currently all of the code is in Numina and uses the player death event. Something to think about though I guess. The modules themselves will be getting reworked on some level anyway.

lehjr commented 6 years ago

Unfortunately, it turns out that the whole GameOverPlus thing needs a bit more work than I have time for and I've disabled it for now. The main issue is that the player is still somehow marked as dead after being revived, and cannot pick up anything. Inventory items are lost, on death as well; not lost as in dropped, but lost as in just gone. So I'm going to avoid this for now.

simonmeusel commented 6 years ago

Maybe just teleport him to his death point and reduce his health

Hw will still loose xp, but that would make sense, since he gets's revived

lehjr commented 6 years ago

If I get time later on, I'll go back to it, but there's just too much work to be done to mess with it at the moment.

lehjr commented 6 years ago

Been looking into "capabilities", and so far I actually like it. With it, I can clean this code up a lot.

eyeonus commented 6 years ago

Awesomeness. Are capabilities a 1.12 thing, or is that going to be able to be back-ported to 1.10 or lower as well?

lehjr commented 6 years ago

Once I get to a point where I have something to backport, then I'll start looking at that. But so far, it doesn't look bad at all, at least not for items. For other things a bit more involved, but still probably not too bad.

eyeonus commented 6 years ago

I was just asking because I was curious if capabilities was available before 1.12