iTXTech / Genisys

Feature-rich server software for Minecraft: Pocket Edition & Windows 10 Edition Beta
https://itxtech.org/genisys/
GNU General Public License v3.0
435 stars 243 forks source link

Server .14 Chunk loading issues #400

Closed meetloaf13 closed 8 years ago

meetloaf13 commented 8 years ago

Just installed the latest Genisys. I've seen similar problems with Bukkit & Clearsky with the .14 update.

Chunks cease loading after about 10 seconds of exploration.

Also, since updating to .14, I cannot get chunks to stay loaded. My view distance used to be awesome, now no matter the changes I make to the .yml related to chunk generation, memory limits and the like, they disappear a few chunks behind me.

All behavior from multiple clients.

Running on Windows 10, 16 GB RAM, i7 2700K (beast).

"This server is running Genisys 1.1dev 「Amazing PHP7 !」 implementing API version 2.0.0 for Minecraft: PE v0.14.0 alpha (protocol version 45)"

ghost commented 8 years ago

I"m having the same exact issue

ghost commented 8 years ago

I was about to open a issue. I took out all the plugins and tested it to make sure I don't open an invalid issue. But, it seems this guy here is having the same issue too so I seems that it needs to be fixed.

meetloaf13 commented 8 years ago

Pretty sure it's a .14 issue across all variants: https://github.com/ClearSkyTeam/ClearSky/issues/195 https://github.com/ClearSkyTeam/ClearSky/issues/180 https://github.com/BukkitPE/BukkitPE/issues/25

meetloaf13 commented 8 years ago

Just doing some discovery for the devs =] https://github.com/PocketMine/PocketMine-MP/issues/3931

ghost commented 8 years ago

Where's the exact file where the code is executed to load chunks. I wanna try to modify my source code. I know some stuff.

meetloaf13 commented 8 years ago

@PeratX I don't think it is an MCPE issue, for the following reason:

When I take both my mobile devices and host a world from one of them and connect using the other, the chunks load just fine (in fact my view distance is MAX), I can guarantee you my server is more powerful than my tablet, so it's not a hardware issue either.

ghost commented 8 years ago

Its a client programming issue. That's what they said

ghost commented 8 years ago

So its if a client programming issue it has to deal with conpaditbity.

ghost commented 8 years ago

0 compatibility.

meetloaf13 commented 8 years ago

Then it would have to be a coding issue of MCPE and the handshake between PM, no?

ghost commented 8 years ago

Idk

meetloaf13 commented 8 years ago

Thanks guys, running much better.

beetree commented 8 years ago

I'm still having chunk loading issues, though not as frequently.

Version:

                   PocketMine-iTX Genisys is a fork of PocketMine-MP, made by iTX Technologies LLC.
                   Version: 1.1dev
                   Target client Version: v0.14.x alpha
                   Latest source codes are available on https://github.com/iTXTech/Genisys
                   Donate link: http://pl.zxda.net/plugins/203.html
                   如果你在免费使用本核心,希望你可以进入上面的链接捐赠给我们,这会成为我们前进的动力。

We're using Genisys on LEET.cc since the last 2-3 weeks, and we have very regular reports about chunk loading issues. Unfortunately though, I can't recreate them. It happens more often if you fly in creative mode at very high speed.

beetree commented 8 years ago

Here are some examples of issues reported by our users: https://docs.google.com/document/d/1rCQ3oDJDzAMlNqNksdHwTRzzGyUHftzvWjwln3pfVwY/edit#heading=h.t73o81fnamox

Muqsit commented 8 years ago

NO. Just disable async-chunk in genisys.yml

beetree commented 8 years ago

Ok, changed to:

#Choose if enable async chunks request
 async-chunk-request: false

I'll report back if this did not solve the issue.

Thanks!

beetree commented 8 years ago

Still getting this issue:

$ cat genisys.yml | grep async
 #Choose if enable async chunks request
 async-chunk-request: false

Here's a video of the issue: https://www.youtube.com/watch?v=mKtBua3JJjw&app=desktop

Muqsit commented 8 years ago

Hmm

beetree commented 8 years ago

And, it's running on powerful machines:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           125G         79G         32G        121M         12G         45G
Swap:          4.0G          0B        4.0G

$ nproc
24

10gb internet.

/b3

PeratX commented 8 years ago

increase max-chunks in pocketmine.yml

beetree commented 8 years ago

Ok thanks. Changed from 96 to:

 max-chunks:
  #Limit of chunks to load per player, overrides chunk-sending.max-chunks
  trigger-limit: 256

I'll report back on whether this solved it...!

beetree commented 8 years ago

Also change this from 192:

chunk-sending:
 #Amount of chunks sent to players per tick
 per-tick: 4
 #Amount of chunks sent around each player
 max-chunks: 512

Which of these did you mean?

beetree commented 8 years ago

Here is the whole pocketmine.yml:

# Main configuration file for PocketMine-MP
# These settings are the ones that cannot be included in server.properties
# Some of these settings are safe, others can break your server if modified incorrectly
# New settings/defaults won't appear automatically on this file when upgrading.

settings:
 #Three-letter language code for server-side localization
 #Check your language code on https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
 language: "eng"
 #Whether to send all strings translated to server locale or let the device handle them
 force-language: false
 shutdown-message: "Server closed"
 #Allow listing plugins via Query
 query-plugins: true
 #Show a console message when a plugin uses deprecated API methods
 deprecated-verbose: true
 #Enable plugin and core profiling by default
 enable-profiling: false
 #Will only add results when tick measurement is below or equal to given value (default 20)
 profile-report-trigger: 20
 #Number of AsyncTask workers.
 #Used for plugin asynchronous tasks, world generation, compression and web communication.
 #Set this approximately to your number of cores.
 #If set to auto, it'll try to detect the number of cores (or use 2)
 async-workers: auto

memory:
 #Global soft memory limit in megabytes. Set to 0 to disable
 #This will trigger low-memory-triggers and fire an event to free memory when the usage goes over this
 global-limit: 800

 #Main thread soft memory limit in megabytes. Set to 0 to disable
 #This will trigger low-memory-triggers and fire an event to free memory when the usage goes over this
 main-limit: 800

 #Main thread hard memory limit in megabytes. Set to 0 to disable
 #This will stop the server when the limit is surpassed
 main-hard-limit: 1024

 #Period in ticks to check memory (default 1 second)
 check-rate: 20

 #Continue firing low-memory-triggers and event while on low memory
 continuous-trigger: true

 #Only if memory.continuous-trigger is enabled. Specifies the rate in memory.check-rate steps (default 30 seconds)
 continuous-trigger-rate: 30

 garbage-collection:
  #Period in ticks to fire the garbage collector manually (default 30 minutes), set to 0 to disable
  #This only affect the main thread. Other threads should fire their own collections
  period: 36000

  #Fire asynchronous tasks to collect garbage from workers
  collect-async-worker: true

  #Trigger on low memory
  low-memory-trigger: true

 max-chunks:
  #Limit of chunks to load per player, overrides chunk-sending.max-chunks
  trigger-limit: 256
  #96 old value

  #Do chunk garbage collection on trigger
  trigger-chunk-collect: true

  #Trigger on low memory
  low-memory-trigger: true

 world-caches:
  disable-chunk-cache: true
  low-memory-trigger: true

network:
 #Threshold for batching packets, in bytes. Only these packets will be compressed
 #Set to 0 to compress everything, -1 to disable.
 batch-threshold: 256
 #Compression level used when sending batched packets. Higher = more CPU, less bandwidth usage
 compression-level: 7
 #Use AsyncTasks for compression. Adds half/one tick delay, less CPU load on main thread
 async-compression: false
 #Experimental, only for Windows. Tries to use UPnP to automatically port forward
 upnp-forwarding: false

debug:
 #If > 1, it will show debug messages in the console
 level: 1
 #Enables /status, /gc
 commands: false

level-settings:
 #The default format that levels will use when created
 default-format: mcregion
 #If true, converts from a format that is not the default to the default format on load
 #NOTE: This is currently not implemented
 convert-format: false
 #Automatically change levels tick rate to maintain 20 ticks per second
 auto-tick-rate: true
 auto-tick-rate-limit: 20
 #Sets the base tick rate (1 = 20 ticks per second, 2 = 10 ticks per second, etc.)
 base-tick-rate: 1
 #Tick all players each tick even when other settings disallow this.
 always-tick-players: false

chunk-sending:
 #Amount of chunks sent to players per tick
 per-tick: 4
 #Amount of chunks sent around each player
 max-chunks: 512
 # Old value 192
 #Amount of chunks that need to be sent before spawning the player
 spawn-threshold: 56
 #Save a serialized copy of the chunk in memory for faster sending
 #Useful in mostly-static worlds where lots of players join at the same time
 cache-chunks: false

chunk-ticking:
 #Max amount of chunks processed each tick
 per-tick: 40
 #Radius of chunks around a player to tick
 tick-radius: 3
 light-updates: false
 clear-tick-list: true

chunk-generation:
 #Max. amount of chunks in the waiting queue to be generated
 queue-size: 8
 #Max. amount of chunks in the waiting queue to be populated
 population-queue-size: 8

ticks-per:
 animal-spawns: 400
 monster-spawns: 1
 autosave: 6000
 cache-cleanup: 900

spawn-limits:
  monsters: 70
  animals: 15
  water-animals: 5
  ambient: 15

auto-report:
 #Send crash reports for processing
 enabled: true
 send-code: true
 send-settings: true
 send-phpinfo: false
 host: crash.leet.cc

anonymous-statistics:
 #Sends anonymous statistics for data aggregation, plugin usage tracking
 enabled: true
 host: stats.pocketmine.net

auto-updater:
 enabled: true
 on-update:
  warn-console: true
  warn-ops: true
 #Can be development, beta or stable.
 preferred-channel: beta
 #If using a development version, it will suggest changing the channel
 suggest-channels: true
 host: www.pocketmine.net

aliases:
 #Examples:
 #showtheversion: version
 #savestop: [save-all, stop]

worlds:
 #These settings will override the generator set in server.properties and allows loading multiple levels
 #Example:
 #world:
 # seed: 404
 # generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45)

And the whole genisys.yml:

#Genisys Advanced Configuration File

#Version of this file
config:
 version: 14

level:
 #Set if turn on the weather system
 weather: true
 #Weather random duration
 weather-random-duration-min: 6000
 weather-random-duration-max: 12000
 #Random lightning interval,default as 10s, 0 = disable
 lightning-time: 200
 #Set if enable lightning with fire
 lightning-fire: false
 #Set if enable fire spread
 fire-spread: false

player:
 #the switch of hunger system
 hunger: true
 #Minimum health when someone is attacking by being hungry
 hunger-health: 10
 #Hunger Time-Counter, Default: 80=4sec
 hunger-timer: 3000
 #Choose if turn on the experience system
 experience: true
 #Choose if keep inventory when a player died
 keep-inventory: false
 #The space of inventory
 inventory-num: 36
 #Clear the inventory automatically when change the gamemode into creative
 auto-clear-inventory : true
 #Choose if keep experience when a player died
 keep-experience: false
 #If players get crash when join, set this below 10. disable=-1
 chunk-radius: 3

nether:
 #Choose if the nether's allowed,the level of nether will generate automatically
 allow-nether: false
 #The name of nether's level
 level-name: "nether"

server:
 #Pregenerate the experience data,0=disabled
 experience-cache: 65535
 #Choose if spawning iron golem is allowed
 allow-iron-golem: false
 #Choose if spawning snow golem is allowed
 allow-snow-golem: false
 #Choose if anvil and enchanttable are allowed
 allow-anvilandenchanttable: true
 #Choose if disable server.log
 disable-log: false
 #Choose if enable auto anti fly
 anti-fly: true
 #Choose if enable async chunks request
 async-chunk-request: false
 #Choose how to remind player when a player join
 #0 = Message, 1 = Tip, 2 = Popup
 player-msg-type: 0
 login-msg: "§3@player joined the game"
 logout-msg: "§3@player left the game"
 #Choose if read recipes from json
 recipes-from-json: false
 #Choose if read creative item from json
 creative-items-from-json: false
 #Choose if minecart is free moving, follow rails or disable
 #-1=disable, 0=free moving, 1=follow rails
 minecart-moving-type: 1
 #Choose if enable movement check (no more pull back)
 check-movement: true
 #Set if enable limited creative (cannot drop item, cannot interact Chests and so on)
 limited-creative: true
 #Set if add DestroyBlockParticle
 destroy-block-particle: true
 #Set if enable splash potion
 allow-splash-potion: true
 #Set if enable advanced Command Selector
 advanced-command-selector: false

redstone:
 ##########################################
 ###Choose if redstone system is allowed###
 ##########################################
 #If not true then the redstone won't work#
 ##########################################
 enable: true
 #Choose if allow frequancy pulse
 frequency-pulse: true
 #Set the frequency of pulse, Default: 1s
 pulse-frequency: 1

dserver:
 #The count of all multi-server unified
 enable: false
 #Query update automatically
 query-auto-update: false
 #Query update periodical
 query-tick-update: true
 #The max players' number of Motd
 motd-max-players: 0
 #The max players' number of query,0=Default
 query-max-players: 0
 #Show the number of all players on motd
 motd-all-players: false
 #Show the number of all players on Query
 query-all-players: false
 #Show the number of online players on motd
 motd-players: false
 #Show the number of online players on Query
 query-players: false
 #Update Frequency ,20=1s
 time: 40
 #Auto-retry times when failed
 retry-times: 3
 #the server list,Separate by ';',e.g. 1.example.com:19132;2.example.com:19133
 server-list: ""

ai:
 #AI switch
 enable: true
 #Zombie'AI,0=disabled,1=AI 1.0ver,2=new AI(Faultiness)
 zombie: 1
 #PigZombie's AI
 pigzombie: true
 #the AI of cow and mushroom cow
 cow: true
 #Chicken's AI
 chicken: true
 #Sheep's AI
 sheep: true
 #Pigs' AI
 pig: true
 #Skeleton's AI
 skeleton: true
 #Creeper's AI
 creeper: true
 #Iron golem's AI
 iron-golem: true
 #Snow golem's AI
 snow-golem: true
 #Destory blocks if creeper exploded
 creeper-explode-destroy-block: false
 #Choose if allow mob auto generate
 mobgenerate: false

And server.properties for completeness:

#Properties Config file
#Tue Apr 12 03:49:40 UTC 2016
motd=Minecraft: PE Server
server-port=19101
white-list=off
announce-player-achievements=on
spawn-protection=16
max-players=20
allow-flight=off
spawn-animals=on
spawn-mobs=on
gamemode=1
force-gamemode=off
hardcore=off
pvp=on
difficulty=1
generator-settings=
level-name=world
level-seed=
level-type=DEFAULT
enable-query=on
auto-save=on
view-distance=3
enable-rcon=on
rcon.password=XXXX
rcon.port=19000
beetree commented 8 years ago

And, the issue is still happening with the configs linked in the previous post.

Would be super awesome to get some help on this...!

beetree commented 8 years ago

Any help here please?

beetree commented 8 years ago

Okay, I restored genisys.yml and pocketmine.yml back to default and made some changes from there. It seems that it's working now.

Muqsit commented 8 years ago

Nice

barnseydesigns commented 8 years ago

Yes you had to many chunks loading:

'#Amount of chunks sent around each player max-chunks: 512'

I literally have this value on 10.