Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Less ambitious, less rubbish 1.12 release #1248

Open
10 of 19 tasks
LunNova opened this issue Jan 7, 2016 · 62 comments
Open
10 of 19 tasks

Less ambitious, less rubbish 1.12 release #1248

LunNova opened this issue Jan 7, 2016 · 62 comments
Assignees
Labels
Milestone

Comments

@LunNova
Copy link
Member

LunNova commented Jan 7, 2016

Tasks:

@LunNova LunNova self-assigned this Jan 7, 2016
@LunNova LunNova added this to the 1.8.9-preview milestone Jan 7, 2016
@MrVoltz
Copy link

MrVoltz commented Jan 8, 2016

Glad to hear you're coming back! I'm still sticking with your 1.5.2 release and fix everything myself :D.

@Vycraftujto
Copy link

Wooow welcome back!!! We are so glad your coming whit 1.8 !!!!

@LunNova
Copy link
Member Author

LunNova commented Jan 9, 2016

Sorry about the spam when I closed all the issues there.

I've closed all the old issues, as I won't be doing any further work on older MC versions.

@LunNova
Copy link
Member Author

LunNova commented Jan 9, 2016

I've added a task list with basic plans for the first preview release. Have I missed any features people depend on?

I want to try to avoid adding too many features. TT ended up with a LOT of feature creep.

For example, in the new version TT will not have its own profiling, as the same features will be in TickProfiler. I'll need to work on improving TickProfiler's profiling features to match what used to be in TT.

@LunNova LunNova added the update label Jan 9, 2016
@Slind14
Copy link

Slind14 commented Jan 10, 2016

I'm not sure if you see a solution, anyways, the chunk unloading tends to be more intense than the load once the active/ticking tile entities hit +15k in the world. They are all stored in an array list and on chunk unload they are being removed. But to keep in mind, on tick update minecraft is iterating over the list, so other collections don't make sense either.
On servers with +25k active tile ents we have run good with a list set combination.
You gave us the idea about this some time back, not sure if you remember :)
https://gist.github.com/Slind14/da64506db693f060afdd
https://gist.github.com/Slind14/1531aa0d5db944cc61b0

What I could think of would be to run the chunkunloading only every n ticks for all chunks together, so that it only needs to go over the list once instead of for every chunk.

Anyways its all not about multi threading.

Regarding the collision fix, wouldn't make sense to be kept in separated mod, or would you use multithreading for it?

@LunNova
Copy link
Member Author

LunNova commented Jan 10, 2016

I'm not sure if you see a solution, anyways, the chunk unloading tends to be more intense than the load once the active/ticking tile entities hit +15k in the world.

Old TT did as few operations as possible against those lists, and batched any additions/removals to them to once per tick using addAll/removeAll, which is much more efficient than separate remove calls. See TickManager.batchRemove(Tile)Entities. Added to task list.

Regarding the collision fix, wouldn't make sense to be kept in separated mod, or would you use multithreading for it?

Fair point. I had this fix in old versions of TT as it's reasonably easy and helps performance a lot. Spigot sort of did the same thing, but not as well/aggressively. It's not really threading related though.

Reopened #107. The name currently isn't representative of what TT aims to do. Performance improvements, some but not all due to threading.

My "NTweaks" mod is mainly a rushed stop-gap measure because I was running a server for a few friends and there were approximately infinite squid spawning, and I couldn't change dimensions more than a few times due to memory leaks. I'm surprised it's been useful for other people. New TT will be using the same style of configurable patching as used there, so any unwanted patches can be turned off.

@Slind14
Copy link

Slind14 commented Jan 10, 2016

Sounds good. My main concern regarding the collosion fix (and entity list batch remove) was that there might be users that don't want or can't use the multi threading part but would like to use this part. Kinda like nTweaks not being part of TT or ModPatcher.

@Slind14
Copy link

Slind14 commented Jan 10, 2016

I thought further about it and believe it would really be better if those non threading related and non critical patches would be in a separated mod. The performance impact of the collision patch and the entity list batch removes are a big improvement on their own. Especially the batch removes as those avoid the annoying lag spikes on base unload.
From my understanding those wouldn't be too difficult to port. Hence they could probably be used way before the major multi threading is production ready and even on 1.7, if a back porting is manageable.

@LunNova
Copy link
Member Author

LunNova commented Jan 10, 2016

What about Optifine style core/extra/ultimate (probably got the names wrong) releases?

@Slind14
Copy link

Slind14 commented Jan 10, 2016

Like?

  • basic (solid proof patches, very unlikely to interfere with mods)
  • extra (production ready patches, could be incompatible with some mods)
  • ultimate (experimental patches, likely to interfere with mods)

@LunNova
Copy link
Member Author

LunNova commented Jan 10, 2016

Yes, something like that.

  • <PlaceHolderName>-core
  • <PlaceHolderName>-threaded
  • <PlaceHolderName>-experimental

(TickThreading-threaded really doesn't work as a name)

@Slind14
Copy link

Slind14 commented Jan 11, 2016

Do you want something functional (giving an idea of what it does) or creative (no relation, e.g. forge, bukkit, sponge, glowstone).
Functional I could think of PerfOverhaul (performance overhaul). I'm not sure if that is a common word, in my native language it is used in terms of car and machine tuning.

@LunNova
Copy link
Member Author

LunNova commented Jan 20, 2016

Quick status update:

  1. Still working on Mixin - trying hard to avoid the mess the prepatcher was in previous versions
  2. Expect to start working on network profiling in TickProfiler by Sunday
  3. Vague estimate of starting work on TT proper within two weeks

Still looking for input on the name. I'll make a poll once there are enough good suggestions.

PerfOverhaul - very descriptive, but also quite generic. Not sure if I like it

@LunNova
Copy link
Member Author

LunNova commented Jan 28, 2016

Ended up working in a slightly different order. Started the work on 1.8.9 TT first, mainly by deleting lots of classes and adding a single Mixin, just to confirm that ModPatcherGradle + ModPatcher + Mixin are working correctly.

Next thing to do is to add network profiling to TP.

My website/jenkins/maven repo may be down for some time due to a hosting migration during the weekend.

@ProsperCraft
Copy link

Nallar please make a patreon so server owners can give tribute to your greatness :)

@LunNova
Copy link
Member Author

LunNova commented Feb 2, 2016

Hosting migration is now complete.

Nallar please make a patreon

Maybe later, once it works.

@LunNova
Copy link
Member Author

LunNova commented Feb 8, 2016

Status update:

TickProfiler for 1.7.10 and 1.8.9 both have support for all profliing options which TT used to have, except for the /ticks command which will continue to be TT only.

After far too much faffing around with classloading (maybe 4 hours?), including ModPatcher's API only in multiple mods of mine now works without conflicts and with automatic updating.

Now to start work on TT!

@LunNova
Copy link
Member Author

LunNova commented Feb 13, 2016

Temporary downtime for nallar.me/jenkins starting in 5 minutes, lasting approximately 15 minutes while I swap the UPS the server is on.

Maintenance completed with no issues.

@LunNova
Copy link
Member Author

LunNova commented Feb 19, 2016

Status update:

Done some work on TT. After starting to actually use the new mixin patching, I ran into some deficiencies mainly involving generics, so more work on JavaTransformer/Mixin was needed to get that working.

I won't be doing much if any work on this over the weekend, as I will be attending StrathHACK.

@LunNova
Copy link
Member Author

LunNova commented Feb 23, 2016

Should have a testing release out by Friday evening GMT. It will not do any threading at all - only a few minor performance improvements.

Goal with this is to find any compatibility issues with the new patching system.

@Slind14
Copy link

Slind14 commented Feb 23, 2016

1.8.9 only I suppose?

@LunNova
Copy link
Member Author

LunNova commented Feb 23, 2016

Yes

@Slind14
Copy link

Slind14 commented Feb 24, 2016

Unfortunately I'm not able to offer testing for 1.8.9

@XPownage
Copy link

@nallar Is the test release going to be out tonight?

@LunNova
Copy link
Member Author

LunNova commented Feb 27, 2016

Ended up spending more time than expected working on a project for uni, so the testing release will probably be delayed until tomorrow. :(

I want to get the variants system (optifine style multiple release types) implemented as part of the testing release.

Sorry for the delay.

@XPownage
Copy link

@nallar Its alright, I'd rather want something that you are more conformable with releasing at the end of the day.

@LunNova
Copy link
Member Author

LunNova commented Mar 6, 2016

@XPownage It shouldn't need any other mods. :s

I think earlier failures may have left some broken files behind in your mods directory. Let's try a clean start.

Delete any files with ModPatcher in their name (eg: ModPatcher.jlib or ModPatcher-core.jar). Ensure the only TT related mod in your mods directory is the latest build, (currently TickThreading-1.8.9.50-core.jar).

I've spun up a fresh install of forge-1.8.9-11.15.1.1764-universal.jar, dropped in the latest TT build to the mods folder and it's starting up without any problems.

@LunNova LunNova changed the title Less ambitious, less rubbish 1.8.9 release Less ambitious, less rubbish 1.10 release Jun 27, 2016
@LunNova
Copy link
Member Author

LunNova commented Jun 27, 2016

I will now be targeting 1.10. Don't want to get stuck updating past versions again.

@Slind14
Copy link

Slind14 commented Jun 27, 2016

makes sense. How is your motivation about this, do you think there will be a production ready version, like 1.4.7 had?

@ProsperCraft
Copy link

We loved the 1.5.2 version, it worked like a miracle.

@LunNova
Copy link
Member Author

LunNova commented Jun 30, 2016

@Slind14 I have a reasonable amount of motivation, but too little time. Less motivation than I used to though. :(

I'm trying to do it again, but realistically it's not happening. I expect to continue to have time to keep TickProfiler up to date, but TT is probably never going to be as good as it was when I had near-infinite free time due to being 16 years old!

@Slind14
Copy link

Slind14 commented Jun 30, 2016

Thanks for the honesty :)

@tenten8401
Copy link

Is this still under development? By the way, you should really add a patreon.

@cpypcy
Copy link

cpypcy commented Aug 22, 2016

Dude why not TT for 1.7.10? This is where all the mods are! It would be epic if you could make it for that. At least some basic simple version. Just like old times.

@LunNova LunNova mentioned this issue Aug 26, 2016
@ghost
Copy link

ghost commented Sep 3, 2016

He's explained this time and time again. I suggest you do some research instead of asking a question that was asked dozens to hundreds of times before.

All in all, TickThreading for MC 1.7.10 is not happening, period.

@Shybella
Copy link

Yes, please aim for 1.10 it's a very promising version and sustainable. Don't get caught on updating late versions of MC.

@dotModded
Copy link

How's the progress going Nallar, I'm super interested in this.

@cpypcy
Copy link

cpypcy commented Jan 31, 2017

I think going for 1.10.2 was a damn good idea, seems like mods are switching to 1.10.2.

@tenten8401
Copy link

tenten8401 commented Jan 31, 2017 via email

@LunNova
Copy link
Member Author

LunNova commented May 17, 2017

Repo has been moved to a new organisation. Makes sense to not have this under my name, in case anyone else does start helping at some point. :P

Discord chat: https://discordapp.com/invite/YrV3bDm

@LunNova LunNova changed the title Less ambitious, less rubbish 1.10 release Less ambitious, less rubbish 1.12 release Aug 9, 2017
@LunNova
Copy link
Member Author

LunNova commented Aug 9, 2017

Quick update:

  • Now aiming for 1.12. I'll try to backport a working version to 1.10.2 later if by the time it works 1.10.2 is still popular.
  • Working on changing JavaTransformer and Mixin to allow patching small parts of methods instead of just replacing the entire things. Will allow the old XML based JavaPatcher patches to be dropped completely.

@dotModded
Copy link

I would wait nallar, 1.13 is a refactor and everything is changing so your mod would be completely broken by then.

@Slind14
Copy link

Slind14 commented Aug 10, 2017

1.7.10 is still more popular than 1.10 :D Gonna be interesting to see if 1.10 is able to establish enough to be around for the long run like 1.7.10

@cpypcy
Copy link

cpypcy commented Aug 10, 2017

Well 1.7.10 is mod Mecca, making TT for any other version is waste of time sort of, since mods don't seem to like 1.10 or 1.12 much. Once we hit final and last java version, i bet there will be mod insanity and every damn mod that is nod dead will move to that version but i don't see which version will be final java one. Still, better to have some TT than no TT.

@magneticflux-
Copy link

magneticflux- commented Aug 17, 2017

@cpypcy @Slind14 I'd actually disagree with that assessment at this point in time. I assembled and formatted some mod data from CurseForge to better understand the version situation.

Version Pages of mods Page Δ (17d) Days since last release Link to search
Total 417 +4 N/A Link
.
1.7.X 211 +1 1148 Link
1.8.X 104 +0 617 Link
1.9.X 77 +0 464 Link
1.10.X 141 +1 420 Link
1.11.X 103 +2 239 Link
1.12.X 61 +7 14 Link

I believe that there is a large proportion of 1.7.10 mods that have stopped being developed since their release. To back up my statement, I found that out of all mods with 1.7.X versions on CurseForge, only 65 pages of them have been modified at all since the last 1.11.X release in December of 2016 (Link to approximate location in CurseForge list). This tells me that many of those mods are likely to never be updated past 1.7.X and probably have been superseded by a 1.12.X mod or abandoned.

I wrote this mainly because I was curious about the statistics and I'd heard other modders debate it before with only anecdotal information. Obviously, this is only current as of 8/17/2017, but I'd expect the balance to shift even further in 1.12.X's favor in the future with more Forge updates. Hopefully these statistics will prove to be useful to someone in the future.


9/3/2017 Edit:
I have added deltas to each page count that are current as of 9/3/2017. The deltas do not add up because they are rounded to the nearest page and because mods older than 1.7.X may have changed.

@Shybella
Copy link

Shybella commented Aug 17, 2017 via email

@Shybella
Copy link

Shybella commented Aug 17, 2017 via email

@Slind14
Copy link

Slind14 commented Aug 17, 2017

Well the latest versions really need it. We just reset an infinity normal server 2 weeks ago. It can still handle +50 players at 40ms, while Age of Engineering/Beyond.. could not even handle 20 players at <80ms during the first weekend. 1.7.10 still performs at least twice as good as 1.10 with less mods.

@LunNova
Copy link
Member Author

LunNova commented Sep 1, 2017

I've been working on improving Mixin to support injection of code inside existing methods in a flexible way, including the insertion of return or continue statements, or the modification of local variables.

This support is partially implemented, and the following example works: https://github.com/MinimallyCorrect/Mixin/blob/c55b5e464d0cdf6ffdc25de6f077aae0feccda14/src/test/java/org/minimallycorrect/mixin/internal/mixinsource/MixinSource.java

The aim is to significantly reduce the work required implement new patches and to update old patches.

@Bucky420
Copy link

Bucky420 commented Jul 24, 2018

hummm and where are we on this 1.12...?

@LunNova
Copy link
Member Author

LunNova commented Jul 24, 2018

We are less ambitious but still rubbish

@Shybella
Copy link

Sponge just marked 1.12.2 as a LTS version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests