Giter VIP home page Giter VIP logo

game's People

Contributors

dependabot[bot] avatar philipwhiuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

game's Issues

Lazy Initialisation error on invalid password

Exception in thread "Thread-1" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.whiuk.philip.mmorpg.serverShared.Account.loginAttempts, could not initialize proxy - no Session
    at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:566)
    at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:186)
    at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545)
    at org.hibernate.collection.internal.PersistentSet.add(PersistentSet.java:206)
    at com.whiuk.philip.mmorpg.serverShared.Account.addLoginAttempt(Account.java:47)
    at com.whiuk.philip.mmorpg.server.auth.AuthServiceImpl.processFailedLogin(AuthServiceImpl.java:413)
    at com.whiuk.philip.mmorpg.server.auth.AuthServiceImpl.processLoginAttempt(AuthServiceImpl.java:249)
    at com.whiuk.philip.mmorpg.server.auth.AuthServiceImpl.processLoginMessage(AuthServiceImpl.java:218)
    at com.whiuk.philip.mmorpg.server.auth.AuthServiceImpl.processMessage(AuthServiceImpl.java:149)
    at com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.processInboundMessage(MessageHandlerServiceImpl.java:128)
    at com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.run(MessageHandlerServiceImpl.java:104)
    at java.lang.Thread.run(Thread.java:722)

Internationalisation needs some thought

Currently error messages are text strings. A more practical approach would be to use integers or Enum's which are translated by the client.

I think the language translation should be something like

  HashMap<MessageCode,String>

This would require:

  • Reworking the protocol to remove as many strings as possible
  • Reworking the server to use the relevant message codes
  • Reworking the client to decode the message codes at the correct point.

One option is to put the translations in an XML file and parse the code and message into the table on start-up. This would make building different language games a matter of providing the correct XML file.

Behaviour of server if port is already bound is poor.

Not convinced the server should completely fail to start. An server not connected on the game port could be a valid configuration for testing, maintenance etc.

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.system.SystemService com.whiuk.philip.mmorpg.server.auth.AuthServiceImpl.systemService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.MessageHandlerService com.whiuk.philip.mmorpg.server.system.SystemServiceImpl.messageHandler; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.network.NetworkService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.networkService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nettyNetworkService': Invocation of init method failed; nested exception is org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:8443
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.whiuk.philip.mmorpg.server.Main.main(Main.java:85)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.system.SystemService com.whiuk.philip.mmorpg.server.auth.AuthServiceImpl.systemService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.MessageHandlerService com.whiuk.philip.mmorpg.server.system.SystemServiceImpl.messageHandler; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.network.NetworkService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.networkService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nettyNetworkService': Invocation of init method failed; nested exception is org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:8443
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    ... 13 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.MessageHandlerService com.whiuk.philip.mmorpg.server.system.SystemServiceImpl.messageHandler; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.network.NetworkService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.networkService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nettyNetworkService': Invocation of init method failed; nested exception is org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:8443
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:910)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:853)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
    ... 15 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.MessageHandlerService com.whiuk.philip.mmorpg.server.system.SystemServiceImpl.messageHandler; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.network.NetworkService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.networkService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nettyNetworkService': Invocation of init method failed; nested exception is org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:8443
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    ... 26 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.network.NetworkService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.networkService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nettyNetworkService': Invocation of init method failed; nested exception is org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:8443
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:910)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:853)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
    ... 28 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.network.NetworkService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.networkService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nettyNetworkService': Invocation of init method failed; nested exception is org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:8443
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    ... 39 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nettyNetworkService': Invocation of init method failed; nested exception is org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:8443
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:399)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1481)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:910)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:853)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
    ... 41 more
Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:8443
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:303)
    at com.whiuk.philip.mmorpg.server.network.NettyNetworkService.init(NettyNetworkService.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:344)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:295)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)
    ... 53 more
Caused by: java.net.BindException: Address already in use: bind
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:344)
    at sun.nio.ch.Net.bind(Net.java:336)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:199)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.bind(NioServerSocketPipelineSink.java:148)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleServerSocket(NioServerSocketPipelineSink.java:100)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:74)
    at org.jboss.netty.channel.Channels.bind(Channels.java:468)
    at org.jboss.netty.channel.AbstractChannel.bind(AbstractChannel.java:192)
    at org.jboss.netty.bootstrap.ServerBootstrap$Binder.channelOpen(ServerBootstrap.java:348)
    at org.jboss.netty.channel.Channels.fireChannelOpen(Channels.java:176)
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannel.<init>(NioServerSocketChannel.java:85)
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.newChannel(NioServerSocketChannelFactory.java:142)
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.newChannel(NioServerSocketChannelFactory.java:90)
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:282)
    ... 61 more

GameCharacterController can't be wired

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.system.SystemService com.whiuk.philip.mmorpg.server.auth.AuthServiceImpl.systemService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.MessageHandlerService com.whiuk.philip.mmorpg.server.system.SystemServiceImpl.messageHandler; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.service.GameService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.gameService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gameServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController com.whiuk.philip.mmorpg.server.game.service.GameServiceImpl.charController; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.whiuk.philip.mmorpg.server.Main.main(Main.java:87)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.system.SystemService com.whiuk.philip.mmorpg.server.auth.AuthServiceImpl.systemService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.MessageHandlerService com.whiuk.philip.mmorpg.server.system.SystemServiceImpl.messageHandler; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.service.GameService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.gameService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gameServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController com.whiuk.philip.mmorpg.server.game.service.GameServiceImpl.charController; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    ... 13 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.MessageHandlerService com.whiuk.philip.mmorpg.server.system.SystemServiceImpl.messageHandler; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.service.GameService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.gameService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gameServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController com.whiuk.philip.mmorpg.server.game.service.GameServiceImpl.charController; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:910)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:853)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
    ... 15 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.MessageHandlerService com.whiuk.philip.mmorpg.server.system.SystemServiceImpl.messageHandler; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.service.GameService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.gameService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gameServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController com.whiuk.philip.mmorpg.server.game.service.GameServiceImpl.charController; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    ... 26 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageHandlerServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.service.GameService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.gameService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gameServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController com.whiuk.philip.mmorpg.server.game.service.GameServiceImpl.charController; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:910)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:853)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
    ... 28 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.service.GameService com.whiuk.philip.mmorpg.server.MessageHandlerServiceImpl.gameService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gameServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController com.whiuk.philip.mmorpg.server.game.service.GameServiceImpl.charController; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    ... 39 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gameServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController com.whiuk.philip.mmorpg.server.game.service.GameServiceImpl.charController; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:910)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:853)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
    ... 41 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController com.whiuk.philip.mmorpg.server.game.service.GameServiceImpl.charController; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    ... 52 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.whiuk.philip.mmorpg.server.game.controller.GameCharacterController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}[13.07.2013] [14:09:07] INFO [main] org.springframework.beans.factory.support.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:444) - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@6b681dea: defining beans [SNMPAlarmsService,accountHibernateDAO,authServiceImpl,loginAttemptHibernateDAO,registrationAttemptHibernateDAO,chatServiceImpl,voldemortDataService,zoneController,gameServiceImpl,gameServer,gameServerProperties,messageHandlerServiceImpl,nettyNetworkService,nettyNetworkServiceHandler,securityServiceImpl,systemServiceImpl,watchdogServiceImpl,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,referenceSessionFactory,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy

    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:986)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:856)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
    ... 54 more```

Client: EXCEPTION_ACCESS_VIOLATION in org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat at GameClient.buildDisplay

On starting the client.

[06.07.2013] [14:56:34] INFO [main] com.whiuk.philip.mmorpg.client.GameClient (GameClient.java:309) - 1024, 768, 32, 60
[06.07.2013] [14:56:34] INFO [main] com.whiuk.philip.mmorpg.client.GameClient (GameClient.java:321) - using mode: 1024, 768, 32, 60
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006903d268, pid=6280, tid=5332
#
# JRE version: 7.0_01-b08
# Java VM: Java HotSpot(TM) 64-Bit Server VM (21.1-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [atio6axx.dll+0xd268]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\Philip\Documents\GitHub\Game\GameClient\hs_err_pid6280.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Contents of hs_err_pid6280.log

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006903d268, pid=6280, tid=5332
#
# JRE version: 7.0_01-b08
# Java VM: Java HotSpot(TM) 64-Bit Server VM (21.1-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [atio6axx.dll+0xd268]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x000000000221c000):  JavaThread "main" [_thread_in_native, id=5332, stack(0x0000000002540000,0x0000000002640000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x0000000000000010

Registers:
RAX=0x0000000000000000, RBX=0x0000000000000001, RCX=0x0000000000000000, RDX=0x0000000000020000
RSP=0x000000000263e0d0, RBP=0xffffffffbf012494, RSI=0x000007fef8b1fac0, RDI=0x00000000004cee90
R8 =0x0000000000000011, R9 =0x0000000000000022, R10=0x0000000000000011, R11=0x0000000000000003
R12=0x000000000263e370, R13=0x000000006907f270, R14=0x000000006903c610, R15=0x00000000ffffffff
RIP=0x000000006903d268, EFLAGS=0x0000000000010202

Top of Stack: (sp=0x000000000263e0d0)
0x000000000263e0d0:   0000000000000001 ffffffffbf012494
0x000000000263e0e0:   000007fef8b1fac0 000007fef8b1fac0
0x000000000263e0f0:   00000000004cee90 000000006903c639
0x000000000263e100:   0000000000000001 000000000263e370
0x000000000263e110:   ffffffff00120011 000007fef8a31bf8
0x000000000263e120:   00000000004cedf0 000007fef8a57cc0
0x000000000263e130:   00000000004cedf0 000000006907f280
0x000000000263e140:   000007fef8b1fab8 0000000069030000
0x000000000263e150:   0000000000000001 000000000263e900
0x000000000263e160:   0000000000000000 0000000000000000
0x000000000263e170:   0000000000000001 000007fef8a57f93
0x000000000263e180:   ffffffffbf012494 00000000ffffffff
0x000000000263e190:   0000000000000000 000007feff0c0000
0x000000000263e1a0:   000000000263e1f0 000000000265219c
0x000000000263e1b0:   0000000000000000 0000000000000000
0x000000000263e1c0:   000000000221ca38 0105014f001a0018 

Instructions: (pc=0x000000006903d268)
0x000000006903d248:   fd 00 00 00 00 00 8b 81 00 03 00 00 48 8b 0d ed
0x000000006903d258:   85 01 01 33 d2 89 05 39 38 fd 00 e8 48 c5 04 00
0x000000006903d268:   8b 48 10 48 8b 05 d6 83 01 01 48 89 48 38 e8 c5
0x000000006903d278:   93 05 00 8b c8 e8 0e 9c 00 00 48 8b 0d bf 83 01 


Register to memory mapping:

RAX=0x0000000000000000 is an unknown value
RBX=0x0000000000000001 is an unknown value
RCX=0x0000000000000000 is an unknown value
RDX=0x0000000000020000 is an unknown value
RSP=0x000000000263e0d0 is pointing into the stack for thread: 0x000000000221c000
RBP=0xffffffffbf012494 is an unknown value
RSI=0x000007fef8b1fac0 is an unknown value
RDI=0x00000000004cee90 is an unknown value
R8 =0x0000000000000011 is an unknown value
R9 =0x0000000000000022 is an unknown value
R10=0x0000000000000011 is an unknown value
R11=0x0000000000000003 is an unknown value
R12=0x000000000263e370 is pointing into the stack for thread: 0x000000000221c000
R13=0x000000006907f270 is an unknown value
R14=0x000000006903c610 is an unknown value
R15=0x00000000ffffffff is an unallocated location in the heap


Stack: [0x0000000002540000,0x0000000002640000],  sp=0x000000000263e0d0,  free space=1016k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [atio6axx.dll+0xd268]  DrvSwapBuffers+0xb8

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(JIILorg/lwjgl/opengl/PixelFormat;Ljava/nio/IntBuffer;ZZZZ)I+0
j  org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat(JIILorg/lwjgl/opengl/PixelFormat;Ljava/nio/IntBuffer;ZZZZ)I+15
j  org.lwjgl.opengl.WindowsDisplay.createWindow(Lorg/lwjgl/opengl/DrawableLWJGL;Lorg/lwjgl/opengl/DisplayMode;Ljava/awt/Canvas;II)V+196
j  org.lwjgl.opengl.Display.createWindow()V+71
j  org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;Lorg/lwjgl/opengl/Drawable;Lorg/lwjgl/opengl/ContextAttribs;)V+72
j  org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;)V+12
j  org.lwjgl.opengl.Display.create()V+7
j  com.whiuk.philip.mmorpg.client.GameClient.buildDisplay()V+41
j  com.whiuk.philip.mmorpg.client.GameClient.run()V+1
j  com.whiuk.philip.mmorpg.client.Main.main([Ljava/lang/String;)V+21
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x00000000060fd800 JavaThread "Service Thread" daemon [_thread_blocked, id=9572, stack(0x0000000007260000,0x0000000007360000)]
  0x00000000060f4800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=4800, stack(0x0000000007070000,0x0000000007170000)]
  0x00000000060f1800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=7404, stack(0x0000000006ec0000,0x0000000006fc0000)]
  0x00000000060ee800 JavaThread "Attach Listener" daemon [_thread_blocked, id=9196, stack(0x0000000006c90000,0x0000000006d90000)]
  0x00000000060e9800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=7552, stack(0x0000000006aa0000,0x0000000006ba0000)]
  0x0000000002314000 JavaThread "Finalizer" daemon [_thread_blocked, id=7344, stack(0x0000000006970000,0x0000000006a70000)]
  0x000000000230d000 JavaThread "Reference Handler" daemon [_thread_blocked, id=5592, stack(0x0000000006650000,0x0000000006750000)]
=>0x000000000221c000 JavaThread "main" [_thread_in_native, id=5332, stack(0x0000000002540000,0x0000000002640000)]

Other Threads:
  0x0000000002305800 VMThread [stack: 0x00000000067a0000,0x00000000068a0000] [id=3740]
  0x000000000610b800 WatcherThread [stack: 0x00000000073f0000,0x00000000074f0000] [id=6936]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 PSYoungGen      total 18496K, used 4487K [0x00000000eb600000, 0x00000000ecaa0000, 0x0000000100000000)
  eden space 15872K, 28% used [0x00000000eb600000,0x00000000eba61cf8,0x00000000ec580000)
  from space 2624K, 0% used [0x00000000ec810000,0x00000000ec810000,0x00000000ecaa0000)
  to   space 2624K, 0% used [0x00000000ec580000,0x00000000ec580000,0x00000000ec810000)
 PSOldGen        total 42240K, used 0K [0x00000000c2200000, 0x00000000c4b40000, 0x00000000eb600000)
  object space 42240K, 0% used [0x00000000c2200000,0x00000000c2200000,0x00000000c4b40000)
 PSPermGen       total 21248K, used 5234K [0x00000000bd000000, 0x00000000be4c0000, 0x00000000c2200000)
  object space 21248K, 24% used [0x00000000bd000000,0x00000000bd51cbf8,0x00000000be4c0000)

Code Cache  [0x0000000002640000, 0x00000000028b0000, 0x0000000005640000)
 total_blobs=266 nmethods=16 adapters=202 free_code_cache=48706Kb largest_free_block=49857856

Dynamic libraries:
0x000000013fbb0000 - 0x000000013fbe3000     C:\Program Files\Java\jdk1.7.0_01\bin\javaw.exe
0x0000000076e40000 - 0x0000000076fe9000     C:\Windows\SYSTEM32\ntdll.dll
0x0000000076d20000 - 0x0000000076e3f000     C:\Windows\system32\kernel32.dll
0x000007fefcea0000 - 0x000007fefcf0b000     C:\Windows\system32\KERNELBASE.dll
0x000007fefda20000 - 0x000007fefdafb000     C:\Windows\system32\ADVAPI32.dll
0x000007fefdc10000 - 0x000007fefdcaf000     C:\Windows\system32\msvcrt.dll
0x000007fefdba0000 - 0x000007fefdbbf000     C:\Windows\SYSTEM32\sechost.dll
0x000007fefd2c0000 - 0x000007fefd3ed000     C:\Windows\system32\RPCRT4.dll
0x0000000076c20000 - 0x0000000076d1a000     C:\Windows\system32\USER32.dll
0x000007feff0c0000 - 0x000007feff127000     C:\Windows\system32\GDI32.dll
0x000007feff130000 - 0x000007feff13e000     C:\Windows\system32\LPK.dll
0x000007fefecc0000 - 0x000007fefed89000     C:\Windows\system32\USP10.dll
0x000007fefb5e0000 - 0x000007fefb7d4000     C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac\COMCTL32.dll
0x000007fefee10000 - 0x000007fefee81000     C:\Windows\system32\SHLWAPI.dll
0x000007fefd8c0000 - 0x000007fefd8ee000     C:\Windows\system32\IMM32.DLL
0x000007fefd8f0000 - 0x000007fefd9f9000     C:\Windows\system32\MSCTF.dll
0x00000000500b0000 - 0x0000000050181000     C:\Program Files\Java\jdk1.7.0_01\jre\bin\msvcr100.dll
0x000000006d510000 - 0x000000006dbdd000     C:\Program Files\Java\jdk1.7.0_01\jre\bin\server\jvm.dll
0x000007fef6640000 - 0x000007fef6649000     C:\Windows\system32\WSOCK32.dll
0x000007fefdbc0000 - 0x000007fefdc0d000     C:\Windows\system32\WS2_32.dll
0x000007feff140000 - 0x000007feff148000     C:\Windows\system32\NSI.dll
0x000007fefa490000 - 0x000007fefa4cb000     C:\Windows\system32\WINMM.dll
0x0000000077010000 - 0x0000000077017000     C:\Windows\system32\PSAPI.DLL
0x00000000709e0000 - 0x00000000709ef000     C:\Program Files\Java\jdk1.7.0_01\jre\bin\verify.dll
0x0000000050080000 - 0x00000000500a8000     C:\Program Files\Java\jdk1.7.0_01\jre\bin\java.dll
0x00000000548b0000 - 0x00000000548c5000     C:\Program Files\Java\jdk1.7.0_01\jre\bin\zip.dll
0x0000000052ab0000 - 0x0000000052ac9000     C:\Program Files\Java\jdk1.7.0_01\jre\bin\net.dll
0x000007fefc490000 - 0x000007fefc4e5000     C:\Windows\system32\mswsock.dll
0x000007fefc440000 - 0x000007fefc447000     C:\Windows\System32\wship6.dll
0x0000000050040000 - 0x0000000050051000     C:\Program Files\Java\jdk1.7.0_01\jre\bin\nio.dll
0x0000000180000000 - 0x0000000180050000     C:\Users\Philip\Documents\GitHub\Game\GameClient\native\windows\lwjgl64.dll
0x000007fef8a30000 - 0x000007fef8b4d000     C:\Windows\system32\OPENGL32.dll
0x000007fef9120000 - 0x000007fef914d000     C:\Windows\system32\GLU32.dll
0x000007fef3770000 - 0x000007fef3861000     C:\Windows\system32\DDRAW.dll
0x000007fefa180000 - 0x000007fefa188000     C:\Windows\system32\DCIMAN32.dll
0x000007fefdd50000 - 0x000007fefdf27000     C:\Windows\system32\SETUPAPI.dll
0x000007fefd010000 - 0x000007fefd046000     C:\Windows\system32\CFGMGR32.dll
0x000007fefd3f0000 - 0x000007fefd4c7000     C:\Windows\system32\OLEAUT32.dll
0x000007fefd050000 - 0x000007fefd253000     C:\Windows\system32\ole32.dll
0x000007fefcf20000 - 0x000007fefcf3a000     C:\Windows\system32\DEVOBJ.dll
0x000007fefafd0000 - 0x000007fefafe8000     C:\Windows\system32\dwmapi.dll
0x000007fefbd80000 - 0x000007fefbd8c000     C:\Windows\system32\VERSION.dll
0x000007fefb400000 - 0x000007fefb456000     C:\Windows\system32\uxtheme.dll
0x0000000069030000 - 0x000000006a12d000     C:\Windows\system32\atio6axx.dll
0x000007fefa750000 - 0x000007fefa75e000     C:\Windows\system32\atig6txx.dll
0x000007feeb0e0000 - 0x000007feeb1eb000     C:\Windows\system32\aticfx64.dll
0x0000000001d90000 - 0x0000000001de0000     C:\Windows\system32\atiadlxx.dll
0x000007fefce40000 - 0x000007fefce79000     C:\Windows\system32\WINTRUST.dll
0x000007fefccd0000 - 0x000007fefce3a000     C:\Windows\system32\CRYPT32.dll
0x000007fefccc0000 - 0x000007fefcccf000     C:\Windows\system32\MSASN1.dll

VM Arguments:
jvm_args: -Djava.library.path=C:\Users\Philip\Documents\GitHub\Game\GameClient\native\windows -Dfile.encoding=Cp1252 
java_command: com.whiuk.philip.mmorpg.client.Main
Launcher Type: SUN_STANDARD

Environment Variables:
CLASSPATH=.;C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip
PATH=C:\Program Files (x86)\PHP\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Dell\DW WLAN Card;c:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;c:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;c:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\WinSCP\;C:\RIDE\Bin;C:\Program Files (x86)\GNU\GnuPG\pub;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\Nmap
USERNAME=Philip
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 37 Stepping 2, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows 7 , 64 bit Build 7601 Service Pack 1

CPU:total 4 (2 cores per cpu, 2 threads per core) family 6 model 37 stepping 2, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, ht

Memory: 4k page, physical 4051480k(931704k free), swap 8101100k(3798312k free)

vm_info: Java HotSpot(TM) 64-Bit Server VM (21.1-b02) for windows-amd64 JRE (1.7.0_01-b08), built on Oct  3 2011 01:39:25 by "java_re" with unknown MS VC++:1600

time: Sat Jul 06 14:56:34 2013
elapsed time: 0 seconds

Appears to be trying to create LWJGL window, possibly without proper OpenGL support.

ATI Mobility Radeon HD470
Driver: 8.680.0.0

As this is a fairly low level error, before we create the window, we should try and check that it won't cause this issue (we won't be able to catch it most likely).

Libraries use different logging APIs which don't mesh well.

A major future enhancement would be to eliminate java.util.logging by forking Nifty and using SLF4J to integrate Log4J or using log4J directly. As is we are essentially forced to use either different APIs for client and server or two APIs on the client (current).

Lobby screen breaks

Currently transitioning to the lobby will crash the game. There's a deliberate exit currently for debugging purposes, but the root cause is that Nifty GUI refuses to parse the element for an unknown reason.

Attempting to modify and follow: http://sourceforge.net/apps/mediawiki/nifty-gui/index.php?title=ChatArea_Example (designed for 1.2) on 1.3 code was broadly unsuccesful.

Attempting to use the in-built ChatController was also unsuccessful in resolving the issue.

The problems are two-fold:

  1. Well-formed XML is rejected without error
  2. Log level debugging of Nifty is unhelpful. At WARN it provides very limited error messages. At INFO it provides absolutely everything (including LwjglRendering refresh information much more suited for trace).

NPE in Lobby Screen

java.lang.NullPointerException
    at com.whiuk.philip.mmorpg.client.LobbyScreen.onStartScreen(LobbyScreen.java:65)
    at de.lessvoid.nifty.screen.Screen.onStartScreenHasEnded(Screen.java:739)
    at de.lessvoid.nifty.screen.Screen$StartScreenEndNotify.perform(Screen.java:662)
    at de.lessvoid.nifty.screen.Screen$LocalEndNotify.perform(Screen.java:638)
    at de.lessvoid.nifty.screen.Screen.startLayers(Screen.java:269)
    at de.lessvoid.nifty.screen.Screen.startScreen(Screen.java:217)
    at de.lessvoid.nifty.Nifty.gotoScreenInternal(Nifty.java:676)
    at de.lessvoid.nifty.Nifty.access$400(Nifty.java:76)
    at de.lessvoid.nifty.Nifty$1.perform(Nifty.java:633)
    at de.lessvoid.nifty.screen.Screen$EndScreenEndNotify.perform(Screen.java:681)
    at de.lessvoid.nifty.screen.Screen$LocalEndNotify.perform(Screen.java:638)
    at de.lessvoid.nifty.screen.Screen.startLayers(Screen.java:269)
    at de.lessvoid.nifty.screen.Screen.endScreen(Screen.java:229)
    at de.lessvoid.nifty.Nifty.gotoScreen(Nifty.java:630)
    at de.lessvoid.nifty.Nifty.fromXml(Nifty.java:455)
    at com.whiuk.philip.mmorpg.client.GameClient.switchToLobbyScreen(GameClient.java:838)
    at com.whiuk.philip.mmorpg.client.GameClient.handleAuthMessage(GameClient.java:695)
    at com.whiuk.philip.mmorpg.client.GameClient.processInboundMessage(GameClient.java:549)
    at com.whiuk.philip.mmorpg.client.ClientChannelHandler.messageReceived(ClientChannelHandler.java:142)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
    at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:76)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:317)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
    at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:280)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:200)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Nifty's libraries are mostly not from a repository

This makes it harder to upgrade and increases the amount to download. It also adds to dependency-hell and negates the whole point of using Ivy. The project needs to be modified to make use of the Maven repo provided by the developer.

Implement Lobby

Requires:

  • GUI updates from other threads
  • Server-side chat message handling

QuerySyntaxException - Account is not mapped.

Exception generated server-side when trying to login.

Exception in thread "Thread-2" org.hibernate.hql.internal.ast.QuerySyntaxException: Account is not mapped [SELECT a FROM Account a WHERE a.username = :username] at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180) at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110) at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93) at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3291) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3180) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136) at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105) at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80) at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168) at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221) at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199) at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:352) at $Proxy12.createQuery(Unknown Source) at com.whiuk.philip.game.server.auth.AccountDAOImpl.findByUsername(AccountDAOImpl.java:42) at com.whiuk.philip.game.server.auth.AuthServiceImpl.processLoginAttempt(AuthServiceImpl.java:162) at com.whiuk.philip.game.server.auth.AuthServiceImpl.processMessage(AuthServiceImpl.java:130) at com.whiuk.philip.game.server.MessageHandlerServiceImpl.processInboundMessage(MessageHandlerServiceImpl.java:127) at com.whiuk.philip.game.server.MessageHandlerServiceImpl.run(MessageHandlerServiceImpl.java:104) at java.lang.Thread.run(Thread.java:722)

No way to return from registration screen to login screen

When you start the game, you're presented with the login screen. At this point you can login with credentials or you can choose to register.

If you choose to register, but change your mind, there's no way to return to the login screen.

Work-around is to close and re-open the client.

No versioning

There's no versioning for the client. server or shared libraries.

Proposed implementation is a class with a final static string and final static integer value.

The string will be of the form x.y.z (major, minor, bugfix)
The integer will be incremented in line with the string.

Purpose of String is to allow easy identification of major releases and identify points at which backwards compatibility will be broke.

Purpose of integer is to allow trivial checking of versioning for upgrades and identification of clients.

Must be implemented prior to first release.

Wrap long chat messages

Horizontal scrollbars aren't good UI for a chat control.

Probably need some way (most likely in the client and server) to cut very long messages to prevent screen spam.

Implement scene graph

It's not really practical to write all the code in low level OpenGL transforms.

We should borrow code and API design from Java 3D and Ogre and try and write a rudimentary scene graph manager for the 3D code.

LWJGL's native library is fixed to a single platform

Currently the native library folder is set to a specific platform (Windows). To avoid problems it would be better if it somehow picked up the right platform. It might also be better if it could be built for all platforms.

OpenGL context errors when switching to lobby

java.lang.RuntimeException: No OpenGL context found in the current thread.
    at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
    at org.lwjgl.opengl.GL11.glGenTextures(GL11.java:1371)
    at de.lessvoid.nifty.renderer.lwjgl.render.LwjglRenderImage.createTextureID(LwjglRenderImage.java:127)
    at de.lessvoid.nifty.renderer.lwjgl.render.LwjglRenderImage.createTexture(LwjglRenderImage.java:70)
    at de.lessvoid.nifty.renderer.lwjgl.render.LwjglRenderImage.<init>(LwjglRenderImage.java:42)
    at de.lessvoid.nifty.renderer.lwjgl.render.LwjglRenderDevice.createImage(LwjglRenderDevice.java:189)
    at de.lessvoid.nifty.render.NiftyImageManager.getImage(NiftyImageManager.java:32)
    at de.lessvoid.nifty.render.NiftyRenderEngineImpl.createImage(NiftyRenderEngineImpl.java:176)
    at de.lessvoid.nifty.loaderv2.types.apply.ApplyRendererPanel.apply(ApplyRendererPanel.java:34)
    at de.lessvoid.nifty.elements.Element.initializeFromAttributes(Element.java:433)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyAttributes(ElementType.java:218)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:172)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ScreenType.create(ScreenType.java:80)
    at de.lessvoid.nifty.loaderv2.types.NiftyType.create(NiftyType.java:137)
    at de.lessvoid.nifty.Nifty.loadFromFile(Nifty.java:569)
    at de.lessvoid.nifty.Nifty.fromXml(Nifty.java:454)
    at com.whiuk.philip.mmorpg.client.GameClient.switchToLobbyScreen(GameClient.java:838)
    at com.whiuk.philip.mmorpg.client.GameClient.handleAuthMessage(GameClient.java:695)
    at com.whiuk.philip.mmorpg.client.GameClient.processInboundMessage(GameClient.java:549)
    at com.whiuk.philip.mmorpg.client.ClientChannelHandler.messageReceived(ClientChannelHandler.java:142)
    at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:783)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
    at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:76)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:783)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:317)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216)
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
    at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:280)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:200)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
java.lang.RuntimeException: No OpenGL context found in the current thread.
    at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
    at org.lwjgl.opengl.GL11.glGenTextures(GL11.java:1371)
    at de.lessvoid.nifty.renderer.lwjgl.render.LwjglRenderImage.createTextureID(LwjglRenderImage.java:127)
    at de.lessvoid.nifty.renderer.lwjgl.render.LwjglRenderImage.createTexture(LwjglRenderImage.java:70)
    at de.lessvoid.nifty.renderer.lwjgl.render.LwjglRenderImage.<init>(LwjglRenderImage.java:42)
    at de.lessvoid.nifty.renderer.lwjgl.render.LwjglRenderDevice.createImage(LwjglRenderDevice.java:189)
    at de.lessvoid.nifty.render.NiftyImageManager.getImage(NiftyImageManager.java:32)
    at de.lessvoid.nifty.render.NiftyRenderEngineImpl.createImage(NiftyRenderEngineImpl.java:176)
    at de.lessvoid.nifty.loaderv2.types.apply.ApplyRendererImage.apply(ApplyRendererImage.java:35)
    at de.lessvoid.nifty.elements.Element.initializeFromAttributes(Element.java:433)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyAttributes(ElementType.java:218)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:172)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyChildren(ElementType.java:251)
    at de.lessvoid.nifty.loaderv2.types.ElementType.applyStandard(ElementType.java:175)
    at de.lessvoid.nifty.loaderv2.types.ElementType.create(ElementType.java:144)
    at de.lessvoid.nifty.loaderv2.types.ScreenType.create(ScreenType.java:80)
    at de.lessvoid.nifty.loaderv2.types.NiftyType.create(NiftyType.java:137)
    at de.lessvoid.nifty.Nifty.loadFromFile(Nifty.java:569)
    at de.lessvoid.nifty.Nifty.fromXml(Nifty.java:454)
    at com.whiuk.philip.mmorpg.client.GameClient.switchToLobbyScreen(GameClient.java:838)
    at com.whiuk.philip.mmorpg.client.GameClient.handleAuthMessage(GameClient.java:695)
    at com.whiuk.philip.mmorpg.client.GameClient.processInboundMessage(GameClient.java:549)
    at com.whiuk.philip.mmorpg.client.ClientChannelHandler.messageReceived(ClientChannelHandler.java:142)
    at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:783)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
    at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:76)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:783)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:317)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216)
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
    at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:280)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:200)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Properties file location is platform specific

Need to do better than this.

C:\etc\opt\philipwhiuk\gameServer.properties
[07.07.2013] [13:26:50] WARN [main] com.whiuk.philip.mmorpg.server.Main (Main.java:97) - Error reading properties file: /etc/opt/philipwhiuk/gameServer.properties
java.io.FileNotFoundException: \etc\opt\philipwhiuk\gameServer.properties (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileReader.<init>(FileReader.java:72)
    at com.whiuk.philip.mmorpg.server.Main.main(Main.java:93)

Move to Netty 4

Currently in Alpha, but we should have a plan to move to Netty 4.0.0 not too long after release to ensure we pull in newer features and upstream fixes.

No build and spec files

There should be proper Ant build files, RPM spec files and installation instructions for each project.

LWJGL's libraries are not from Maven Central

This makes it harder to upgrade and increases the amount to download. It also adds to dependency-hell and negates the whole point of using Ivy. It would be nice if the Ivy XML could be updated to include the correct native LWJGL libraries.

Input boxes layout needs work

Currently the input boxes used on LoginScreen and RegisterScreen don't quite fit. The right-hand edge isn't shown.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.