Client rewrite β-testing

Announcements about major changes in Haven & Hearth.
User avatar
DPblH
Posts: 432
Joined: Wed Jun 09, 2010 4:57 pm

Re: Client rewrite β-testing

Post by DPblH »

loftar wrote:200 cows, 100 pigs:
Have you also tried the same with mesh animations? It seems they eat more resources rather than skeletal animations are. Try to place bee hives, full trash stockpile, hearthfires, etc.
Give a man a game engine and he delivers a game. Teach a man how to make a game engine and he never delivers anything.
User avatar
loftar
Posts: 9093
Joined: Fri Apr 03, 2009 7:05 am
Location: Your character database

Re: Client rewrite β-testing

Post by loftar »

ubersheva wrote:Any news on the mac client? It still doesnt launch with invalid state error. Like something ogl-related is being done on the wrong thread. I can install eclipse and help debugging it on mac if needed, but i’m completely unfamiliar with 3d programming.
If you run it in a terminal, I believe it should dump the list of OpenGL commands that it was trying to execute while encountering that error. If you could do that and post that list, that would be a great first step, please.
DPblH wrote:Have you also tried the same with mesh animations? It seems they eat more resources rather than skeletal animations are. Try to place bee hives, full trash stockpile, hearthfires, etc.
Not sure what you're used to seeing, but this is with 500 beehives:
ss.png
You do not have the required permissions to view the files attached to this post.
"Object-oriented design is the roman numerals of computing." -- Rob Pike
ubersheva
Posts: 68
Joined: Thu Apr 15, 2010 8:13 am

Re: Client rewrite β-testing

Post by ubersheva »

ubersheva wrote:Any news on the mac client? It still doesnt launch with invalid state error. Like something ogl-related is being done on the wrong thread. I can install eclipse and help debugging it on mac if needed, but i’m completely unfamiliar with 3d programming.
so the invalid operation GL error was produced by glDrawBuffer command called for GL_BLACK buffer. After adding a call to gl.glGetError() after every run() call in BufferBGL.run() (to consume errors) the client started and I managed to log in. After the login the screen didnt update, but I managed to select a char blindly. The char entered world, screen remained black and the client hang with a new error.

Code: Select all

#<cmd glTexParameterfv(val$target=3553, val$pname=4100, val$param=[0.0, 0.0, 0.0, 1.0], val$n=0, this$0=#<dummy haven.render.gl.BufferBGL #1>)>
#<cmd glBindTexture(val$target=3553, val$texture=null, this$0=#<dummy haven.render.gl.BufferBGL #1>)>
#<cmd bglCheckErr(val$place=null, this$0=#<dummy haven.render.gl.BufferBGL #1>)>
Exception in thread "Render thread" java.lang.RuntimeException: haven.render.gl.BGL$BGLException: java.lang.RuntimeException: FBO failed completeness test: GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
	at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
	at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
	at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206)
	at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
	at javax.media.opengl.Threading.invoke(Threading.java:191)
	at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:528)
	at haven.JOGLPanel.uglyjoglhack(JOGLPanel.java:188)
	at haven.JOGLPanel.renderloop(JOGLPanel.java:209)
	at java.lang.Thread.run(Thread.java:748)
Caused by: haven.render.gl.BGL$BGLException: java.lang.RuntimeException: FBO failed completeness test: GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
	at haven.render.gl.BufferBGL.run(BufferBGL.java:56)
	at haven.render.gl.GLEnvironment.process(GLEnvironment.java:115)
	at haven.JOGLPanel.redraw(JOGLPanel.java:139)
	at haven.JOGLPanel.access$000(JOGLPanel.java:39)
	at haven.JOGLPanel$1.display(JOGLPanel.java:76)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:649)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:633)
	at javax.media.opengl.awt.GLCanvas$9.run(GLCanvas.java:1271)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1103)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:978)
	at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1282)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.RuntimeException: FBO failed completeness test: GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
	at haven.render.gl.GLFrameBuffer.lambda$null$0(GLFrameBuffer.java:63)
	at haven.render.gl.BGL$4.run(BGL.java:112)
	at haven.render.gl.BufferBGL.run(BufferBGL.java:49)
	... 24 more
[/spoiler]
ubersheva
Posts: 68
Joined: Thu Apr 15, 2010 8:13 am

Re: Client rewrite β-testing

Post by ubersheva »

loftar wrote:
ubersheva wrote:Any news on the mac client? It still doesnt launch with invalid state error. Like something ogl-related is being done on the wrong thread. I can install eclipse and help debugging it on mac if needed, but i’m completely unfamiliar with 3d programming.
If you run it in a terminal, I believe it should dump the list of OpenGL commands that it was trying to execute while encountering that error. If you could do that and post that list, that would be a great first step, please.
it doesnt dump commands, probably because it happens at the very start. it did dump commands in the list after my edits, few last of them included in my previous quote.

Code: Select all

sheva@MacBook-Pro build % java -cp '*.jar' -Dhaven.defserv=game.havenandhearth.com -Dhaven.resurl=http://game.havenandhearth.com/render/res/ -Dhaven.cachebase=http://game.havenandhearth.com/render/ -jar hafen.jar
2020-02-01 02:16:17.314 java[55511:4697137] WARNING: NSWindow drag regions should only be invalidated on the Main Thread! This will throw an exception in the future. Called from (
	0   AppKit                              0x00007fff2fef2575 -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 371
	1   AppKit                              0x00007fff2fed9ed5 -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1416
	2   AppKit                              0x00007fff2fed9947 -[NSWindow initWithContentRect:styleMask:backing:defer:] + 42
	3   libnativewindow_macosx.jnilib       0x000000014239b77e Java_jogamp_nativewindow_macosx_OSXUtil_CreateNSWindow0 + 382
	4   ???                                 0x000000010be1f9f4 0x0 + 4494326260
)
Exception in thread "Render thread" java.lang.RuntimeException: haven.render.gl.GLException$GLInvalidOperationException: GL Error: 1282 (invalid operation)
	at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
	at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
	at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206)
	at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
	at javax.media.opengl.Threading.invoke(Threading.java:191)
	at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:528)
	at haven.JOGLPanel.uglyjoglhack(JOGLPanel.java:188)
	at haven.JOGLPanel.renderloop(JOGLPanel.java:209)
	at java.lang.Thread.run(Thread.java:748)
Caused by: haven.render.gl.GLException$GLInvalidOperationException: GL Error: 1282 (invalid operation)
	at haven.render.gl.GLException.glexcfor(GLException.java:88)
	at haven.render.gl.GLException.checkfor(GLException.java:97)
	at haven.render.gl.GLException.checkfor(GLException.java:104)
	at haven.render.gl.GLEnvironment.process(GLEnvironment.java:126)
	at haven.JOGLPanel.redraw(JOGLPanel.java:139)
	at haven.JOGLPanel.access$000(JOGLPanel.java:39)
	at haven.JOGLPanel$1.display(JOGLPanel.java:76)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:649)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:633)
	at javax.media.opengl.awt.GLCanvas$9.run(GLCanvas.java:1271)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1103)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:978)
	at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1282)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" haven.render.gl.GLException$GLInvalidOperationException: GL Error: 1282 (invalid operation)
	at haven.render.gl.GLException.glexcfor(GLException.java:88)
	at haven.render.gl.GLException.checkfor(GLException.java:97)
	at haven.render.gl.GLException.checkfor(GLException.java:104)
	at haven.render.gl.GLEnvironment.process(GLEnvironment.java:126)
	at haven.JOGLPanel.redraw(JOGLPanel.java:139)
	at haven.JOGLPanel.access$000(JOGLPanel.java:39)
	at haven.JOGLPanel$1.display(JOGLPanel.java:76)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:649)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:633)
	at javax.media.opengl.awt.GLCanvas$9.run(GLCanvas.java:1271)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1103)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:978)
	at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1282)
	at javax.media.opengl.Threading.invoke(Threading.java:193)
	at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:528)
	at javax.media.opengl.awt.GLCanvas.paint(GLCanvas.java:582)
	at javax.media.opengl.awt.GLCanvas.update(GLCanvas.java:782)
	at sun.awt.RepaintArea.updateComponent(RepaintArea.java:255)
	at sun.lwawt.LWRepaintArea.updateComponent(LWRepaintArea.java:47)
	at sun.awt.RepaintArea.paint(RepaintArea.java:232)
	at sun.lwawt.LWComponentPeer.handleJavaPaintEvent(LWComponentPeer.java:1314)
	at sun.lwawt.LWComponentPeer.handleEvent(LWComponentPeer.java:1198)
	at java.awt.Component.dispatchEventImpl(Component.java:4965)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
^C%                        
[/spoiler]
User avatar
loftar
Posts: 9093
Joined: Fri Apr 03, 2009 7:05 am
Location: Your character database

Re: Client rewrite β-testing

Post by loftar »

ubersheva wrote: it doesnt dump commands
Right, I seem to have messed that up a bit. Please pull the latest code (including at least 33b18a81) and try again. Also, while you're at it, please enable the DebugGL thing by changing the false on line 139 in JOGLPanek.java to true, so as to check for GL errors on every command.
"Object-oriented design is the roman numerals of computing." -- Rob Pike
ubersheva
Posts: 68
Joined: Thu Apr 15, 2010 8:13 am

Re: Client rewrite β-testing

Post by ubersheva »

With new code and DebugGL2() impl.
Like I wrote earlier, failed commands are glDrawBuffer with 1029 as parameter, which is GL_BACK buffer.

edit: back, not black
You do not have the required permissions to view the files attached to this post.
ubersheva
Posts: 68
Joined: Thu Apr 15, 2010 8:13 am

Re: Client rewrite β-testing

Post by ubersheva »

Ran the app under OpenGL profiler from XCode. Stopped at the moment of INVALID_OPERATION error in glDrawBuffer and dumped some of info from the profiler.
You do not have the required permissions to view the files attached to this post.
ubersheva
Posts: 68
Joined: Thu Apr 15, 2010 8:13 am

Re: Client rewrite β-testing

Post by ubersheva »

ubersheva wrote:Ran the app under OpenGL profiler from XCode.
You do not have the required permissions to view the files attached to this post.
User avatar
shubla
Posts: 13041
Joined: Sun Nov 03, 2013 11:26 am
Location: Finland

Re: Client rewrite β-testing

Post by shubla »

Code: Select all

java.lang.AssertionError
	at haven.render.gl.GLDrawList.add(GLDrawList.java:940)
	at haven.render.RenderList.syncadd(RenderList.java:65)
	at haven.render.RenderList.asyncadd(RenderList.java:83)
	at haven.ShadowMap$ShadowList.draw(ShadowMap.java:200)
	at haven.ShadowMap.update(ShadowMap.java:234)
	at haven.MapView.drawsmap(MapView.java:838)
	at haven.MapView.draw(MapView.java:1401)
	at haven.Widget.draw(Widget.java:728)
	at haven.Widget.draw(Widget.java:733)
	at haven.GameUI.draw(GameUI.java:829)
	at haven.Widget.draw(Widget.java:728)
	at haven.Widget.draw(Widget.java:733)
	at haven.RootWidget.draw(RootWidget.java:68)
	at haven.UI.draw(UI.java:150)
	at haven.JOGLPanel.display(JOGLPanel.java:322)
	at haven.JOGLPanel.run(JOGLPanel.java:381)
	at java.lang.Thread.run(Thread.java:748)
Logging in with laptop, has some integrated GPU I think. Mesa DRI Intel(R) UHD Graphics (Whiskey Lake 3x8 GT2)
Image
I'm not sure that I have a strong argument against sketch colors - Jorb, November 2019
http://i.imgur.com/CRrirds.png?1
Join the moderated unofficial discord for the game! https://discord.gg/2TAbGj2
Purus Pasta, The Best Client
User avatar
maze
Posts: 2819
Joined: Sat Mar 27, 2010 3:15 am
Location: Canada

Re: Client rewrite β-testing

Post by maze »

Can we add UI changes into the client rewrite?
would request separating the map and marker's box.
Give a button that would open the markers list.

Image

Image

and fixing how quest compass works.

the way it is now is hella confusing.
Image

maybe just make the market compass by in the map not on screen.
Administrator of CoS
game ideas

Return to “Announcements”