codeka / wwmmo Goto Github PK
View Code? Open in Web Editor NEWWar Worlds MMO
License: MIT License
War Worlds MMO
License: MIT License
In issue #7, it becomes apparent that we need a better way to make requests to the server so that we don't end up with an enormous queue of hundreds of requests.
If we had a generic "ApiRequest" object that represented any request to the server, we could limit the number of threads connecting to the server in a more intelligent way and we'd also be able to batch up requests so that the server can parallelize them on the server and not just have one-per-thread on the client.
Hi Dean,
I set up the development environment on a different machine. In this latest version the run-debug.sh is started when running the server and it's missing config-debug.json in code/server/data. The file is actually not there. Did you forget to add it or is it an intended change and I need to do something differently?
Regards,
Carsten
I kind of want to open this for discussion.
My empire is at a point where many stars are just producing new ships all the time. As I see it, you can only order them in batches of 100 and when done you have several stacks of 100 ships which you can merge one at a time.
Am I doing anything wrong because I find that merge process extremely annoying but I've never seen anyone complain about it?
I would suggest an automatic merge. Maybe on button press, preferably at fleet creation? Like, when a fleet is created, check for ships of same type with same upgrades and same stance and just merge the ships onto that.
I hoped it would be fixed with the correction in isSameAlliance, but apparently there is another bug hidden elsewhere.
Also ignore my changes as i originally submitted a dupe issue. :D
After clicking Attack, the dialog closes and the last screen stays open.
From @Hexan1:
One thing some of us were kicking around, was a change to the depth of a sitrep tap to just galaxy view re-center, and not all the way to solar view. Sometimes you want to rename a star etc. Backing up just kicks you to sitrep.
On tapping a wormhole, the blue details box at screen bottom should state who owns it.
I joined a random alliance and this was the first complaint that I got.
You can only tune to your own wormholes, not to alliance members', although it should be possible.
Is this correct? Is this a bug?
From @Hexan1:
Another fix, if you could, is the outstanding votes not being scrollable. Cannot finish votes if the boss is not early to vote, and others vote, pushing it off screen.
Being able to list your, and your ally's wormholes as a star type. Additionally tag the wormhole entry with the ally's name and in ally-order.
Sometimes I notice fleets with zero ships. Mostly after fighting natives. Screenshot coming up.
If I select an alliance member's ships at my own star system from the star map or the star system screen I can assign a movement order for them (thought i dont think it is accepted in the end).
Every place I've seen this, there's also another thread that's simulating a star. That seems suspicious and it could be that simulating the star at the same time as the UI thread is displaying the builds is causing a problem?
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 1, found: 0 Pager id: au.com.codeka.warworlds:id/pager Pager class: class android.support.v4.view.ViewPager Problematic adapter: class au.com.codeka.warworlds.game.build.k
at android.support.v4.view.ViewPager.a(SourceFile:967)
at android.support.v4.view.ViewPager.b(SourceFile:919)
at android.support.v4.view.ViewPager.onMeasure(SourceFile:1441)
at android.view.View.measure(View.java:16612)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
at android.view.View.measure(View.java:16612)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16612)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16612)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5147)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
at android.view.View.measure(View.java:16612)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2065)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1192)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1401)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1079)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5948)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Another thread:
---------- THREAD: BackgroundRunner #4
...
au.com.codeka.common.model.Simulation.simulateStepForAllEmpires(SourceFile:212)
au.com.codeka.common.a.bc.a(SourceFile:129)
au.com.codeka.warworlds.ctrl.BuildEstimateView$1.doInBackground(SourceFile:79)
au.com.codeka.warworlds.ctrl.e.b(SourceFile:65)
au.com.codeka.BackgroundRunner$2.call(SourceFile:66)
java.util.concurrent.FutureTask.run(FutureTask.java:237)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
java.lang.Thread.run(Thread.java:841)
Whenever I try to set any of my colony's sliders, it keeps reverting back to what the slider was originally. This bug has been affecting me since about thirty minutes ago.
Currently the back end website just hard-codes access to my email address, and gives me full access to everything. That's not going to be useful if we want others to help with managing the game. We'll need some sort or role-based author where we can say PersonA can access the empire list but not chat, PersonB can access chat and ban people but can't do something else.
I'm not sure exactly what the roles should be, but initially we could start with a "read-only" role that letsnyou view things but not change it.
Access should also be controlled by database tables, instead of just hard-coding my email address in the code...
The end result is the below exception. I'm not sure if the best solution is to just allow "infinite" (or at least, more) queued tasks, or to somehow limit the number of stars we try to fetch some other way.
java.util.concurrent.RejectedExecutionException: Task au.com.codeka.d@439ec898 rejected from java.util.concurrent.ThreadPoolExecutor@41cbfd58[Running, pool size = 20, active threads = 20, queued tasks = 250, completed tasks = 254]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1979)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:786)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1307)
at au.com.codeka.BackgroundRunner.[execute|onComplete|access$100|access$200](SourceFile:88)
at au.com.codeka.warworlds.model.StarManager.[clearCache|getStarSummary|getStarSummary|getStarSummaries$33f58d9f|notifyStarUpdated|refreshStar|refreshStarSummaries|renameStar|requestStar|access$200](SourceFile:178)
at au.com.codeka.warworlds.model.ek.a(SourceFile:60)
at au.com.codeka.warworlds.model.ek.a(SourceFile:50)
at au.com.codeka.warworlds.game.SitrepActivity$SituationReportAdapter.getView(SourceFile:500)
at android.widget.AbsListView.obtainView(AbsListView.java:2680)
at android.widget.ListView.makeAndAddView(ListView.java:1838)
at android.widget.ListView.fillDown(ListView.java:681)
Some alliance tools would be nice for future...sort shortlists of entries by player, or date/time etc...tracking loans vs paid back or yet un-repaid...ticktock on last sign-on to point up players gone inactive. I favor a 2 month deadline to re-log or auto flag for kick.
The dying stars would represent a chance to add a terraformer option. In all my stars, I have a bare dozen dying stars. Finding an alien gizmo when subduing the ground forces, purely at random, and only a few conquests involved, would let a player accumulate two or three terraform boxes. Boxes would 'heal' dying stars to some random amount, allowing them to re-join the community of stars. This would have the side benefit of eliminating those pesky resources depleted msgs from clogging SitRep.
It seems quite laggy, and the lag is not really explained by the time it takes to actually create the scene. From what I can see, the scene is recreated in < 1 second typically, but the whole screen can freeze 10+ seconds which is just really terrible.
Is this a bug? Just happened to me.
What's your take on shortlisting sitrep combats and new colonies? Might make data handling better if you can cut entries out of the main SitRep....cull all but what a player wants to deal with.
Looks like the server responded with an empty response. I don't think that should actually be possible.
java.lang.RuntimeException: An error occured while executing doInBackground()
at au.com.codeka.BackgroundRunner$3.done(SourceFile:78)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
at au.com.codeka.warworlds.model.AllianceManager$4.doInBackground(SourceFile:145)
at au.com.codeka.warworlds.model.f.b(SourceFile:131)
at au.com.codeka.BackgroundRunner$2.call(SourceFile:66)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 3 more
It says 1x fighter produced when it's actually 100x.
In landscape mode, no fleets are shown.
If someone updates the database schema, we don't want to have to manually get everyone to apply the same changes. It would also help in the initial setup process if the database is created automatically.
The easiest way to do this would be to keep a "schema version" table which includes a single integer describing the 'version' of the schema. Every time the server starts up, it checks the stored schema version against it's own, and if there's a difference it runs scripts to upgrade the schema.
It means we'll have to be vigilant about making sure any commits which update the database schema also include the scripts to upgrade other database instances.
This will also help with upgrading the schema on the production instance, because I won't have to worry about forgetting to update the database as well (that's happened before and caused annoying downtime...)
From @Hexan1:
Another idea was a re-center options flag at game start so that instead of always opening at Homestar, you could center on your current Workstar. Handy for a galaxy view of the neighborhood.
In particular, I think we should use Guava rather than Apache Commons, just because Guava is somewhat more modern. Hopefully Proguard will help to keep APK size down...
When selecting a ship to move, the highlighted choice unselects and re-selects and highlights the ship at list bottom.
every time I close and reopen app without restarting app it crashes or lags alot
java.lang.RuntimeException: Unable to resume activity {au.com.codeka.warworlds/au.com.codeka.warworlds.game.solarsystem.FleetActivity}: au.com.codeka.warworlds.b.b
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2455)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2483)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4511)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:976)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:743)
at dalvik.system.NativeStart.main(Native Method)
Caused by: au.com.codeka.warworlds.eventbus.EventBus$AlreadyRegisteredException
at au.com.codeka.warworlds.eventbus.EventBus.register(SourceFile:32)
at au.com.codeka.warworlds.game.solarsystem.FleetActivity$2.onHelloComplete$1238f8d8(SourceFile:95)
at au.com.codeka.warworlds.ServerGreeter.[addHelloWatcher|clearHello|waitForHello|access$602|access$800](SourceFile:93)
at au.com.codeka.warworlds.game.solarsystem.FleetActivity.onResume(SourceFile:88)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1157)
at android.app.Activity.performResume(Activity.java:4560)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2445)
... 10 more
If you have, lets say, 3x 100 fighters at a colony. You select the first in the fleets screen and click merge. You select one of the 2x 100 other fighters. The list updates after a second, showing 200 fighters and 100 fighters.
The 200 fighters entry is still selected, if you click merge again it will show again 2x 100 fighters to merge (although there's only 1x 100 fighters present left now).
The entity in this case is the selection line. I think just doing a detachChild first will fix it.
java.lang.IllegalStateException: pEntity 'b' already has a parent: 'b'. New parent: 'b'!
at org.andengine.entity.Entity.[onUpdateColor|setPosition|setScale|attachChild|postDraw](SourceFile:913)
at au.com.codeka.warworlds.game.starfield.FleetEntity.onSelected(SourceFile:68)
at au.com.codeka.warworlds.game.starfield.SelectionIndicatorEntity.[setSelectedEntity|access$000](SourceFile:58)
at au.com.codeka.warworlds.game.starfield.StarfieldScene.refreshSelectionIndicator(SourceFile:206)
at au.com.codeka.warworlds.game.starfield.StarfieldScene$2.run(SourceFile:139)
at org.andengine.engine.handler.runnable.RunnableHandler.[onUpdate|postRunnable](SourceFile:42)
at org.andengine.engine.Engine.[startUpdateThread|setScene|setSurfaceSize|setTouchController|registerUpdateHandler|onTouchEvent|runOnUpdateThread|onUpdate|onDrawFrame](SourceFile:611)
at org.andengine.b.a.m(SourceFile:574)
at org.andengine.engine.Engine$UpdateThread.run(SourceFile:870)
Reported to have been happening since v830.
Of the tab trio, Buildings/Ships/Queue, Queue is redundant and adds an unnecessary extra step when doing a stop or accelerate. The running builds are listed at pane bottom for both Buildings, and Ships. It would be easier and faster to just tap a running build to stop or accelerate a job.
Currently the locate empire view shows a bunch of stars with the Homestar at display center, without any overt indication of the player's Homestar. A small, green globe, similar to the array sphere would clarify which is the Homestar. Making it also pulsate, would make it obvious even for the truely stupid. Tapping said sphere would be enhanced by a split view of solarview writ small and a survey report, detailing whether the player is allied or solo, Diplomatic status, etc., and Homestar's galactic co-ordinates on a Quadrant map. A quadrant map would offer an overall notion of the empire's placement in the galaxy. A tap on the Quad map would jump you to zoomed out Tac view to have a look at your neighbors. So many players have asked where they are located. This might be a nice way to show them. Something to ponder for the future...
java.lang.NumberFormatException: Invalid int: "15552222222"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parse(Integer.java:378)
at java.lang.Integer.parseInt(Integer.java:366)
at java.lang.Integer.parseInt(Integer.java:332)
at au.com.codeka.warworlds.game.build.BuildConfirmDialog.access$100(SourceFile:39)
at au.com.codeka.warworlds.game.build.BuildConfirmDialog$4.onClick(SourceFile:220)
at au.com.codeka.warworlds.StyledDialog$ButtonClickListener.onClick(SourceFile:237)
at android.view.View.performClick(View.java:4223)
at android.view.View$PerformClick.run(View.java:17275)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
at dalvik.system.NativeStart.main(Native Method)
As mentioned in the blog post,
The scripts in the scripts/ folder should help with building the various components, but they may need some tweaking.
The current shell scripts (run-server.sh
, run-client.sh
, etc) make assumptions about their position relative to the source directories, including the name of which the repository was cloned (code/server
).
These scripts could have these assumptions removed or at least relaxed. If nothing else, they could assume a position that matches the repository layout, making them instantly usable.
java.lang.RuntimeException: Unable to start activity ComponentInfo{au.com.codeka.warworlds/au.com.codeka.warworlds.game.solarsystem.SolarSystemActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2351)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3910)
at android.app.ActivityThread.access$700(ActivityThread.java:165)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5391)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at au.com.codeka.warworlds.game.wormhole.DestinationDialog.[onCreateDialog|access$300](SourceFile:82)
at android.support.v4.app.DialogFragment.[onDetach|getLayoutInflater](SourceFile:307)
at android.support.v4.app.FragmentManagerImpl.[throwException|beginTransaction|putFragment|getFragment|saveFragmentInstanceState|dump|makeOpenCloseAnimation$376f30fd|makeFadeAnimation$424ea1bd|loadAnimation|moveToState|moveToState|addFragment|removeFragment|findFragmentById|findFragmentByTag|enqueueAction|allocBackStackIndex|setBackStackIndex|popBackStackState$68507953$44bd8ea3|restoreAllState|attachActivity|dispatchConfigurationChanged|dispatchCreateOptionsMenu|dispatchPrepareOptionsMenu|dispatchOptionsItemSelected](SourceFile:942)
at android.support.v4.app.z.a(SourceFile:1121)
at android.support.v4.app.z.e(SourceFile:1103)
at android.support.v4.app.z.i(SourceFile:1901)
at android.support.v4.app.FragmentActivity.onStart(SourceFile:567)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
at android.app.Activity.performStart(Activity.java:5132)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2324)
... 12 more
I suspect this is more likely due to a memory leak somewhere, rather than anything in particular with the code. Here's one place I've seen it:
java.lang.RuntimeException: Unable to resume activity {au.com.codeka.warworlds/au.com.codeka.warworlds.game.solarsystem.SolarSystemActivity}: android.view.InflateException: Binary XML file line #132: Error inflating class au.com.codeka.warworlds.ctrl.ColonyFocusView
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3076)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3105)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.access$900(ActivityThread.java:175)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #132: Error inflating class au.com.codeka.warworlds.ctrl.ColonyFocusView
at android.view.LayoutInflater.createView(LayoutInflater.java:626)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at au.com.codeka.warworlds.game.solarsystem.w.a(SourceFile:70)
at android.support.v4.app.Fragment.b(SourceFile:1504)
at android.support.v4.app.z.a(SourceFile:942)
at android.support.v4.app.z.a(SourceFile:1121)
at android.support.v4.app.l.run(SourceFile:682)
at android.support.v4.app.z.d(SourceFile:1484)
at android.support.v4.app.s.onPostResume(SourceFile:457)
at android.support.v7.a.f.onPostResume(SourceFile:116)
at au.com.codeka.warworlds.l.onPostResume(SourceFile:109)
at android.app.Activity.performResume(Activity.java:5543)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3066)
... 12 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:600)
... 31 more
Caused by: android.view.InflateException: Binary XML file line #111: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:626)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:675)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:700)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
at android.view.View.inflate(View.java:18474)
at au.com.codeka.warworlds.ctrl.ColonyFocusView.<init>(SourceFile:21)
... 34 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:600)
... 43 more
Caused by: java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:683)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:513)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:889)
at android.content.res.Resources.loadDrawable(Resources.java:3436)
at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
at android.widget.ImageView.<init>(ImageView.java:133)
at android.widget.ImageView.<init>(ImageView.java:123)
... 46 more
java.lang.RuntimeException: Unable to start activity ComponentInfo{au.com.codeka.warworlds/au.com.codeka.warworlds.game.alliance.AllianceActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2395)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2453)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4036)
at android.app.ActivityThread.access$1000(ActivityThread.java:173)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5579)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at au.com.codeka.warworlds.game.alliance.RequestVoteDialog.refresh(SourceFile:107)
at au.com.codeka.warworlds.game.alliance.ao.c(SourceFile:63)
at android.support.v4.app.DialogFragment.[onDetach|getLayoutInflater](SourceFile:307)
at android.support.v4.app.FragmentManagerImpl.[throwException|beginTransaction|putFragment|getFragment|saveFragmentInstanceState|dump|makeOpenCloseAnimation$376f30fd|makeFadeAnimation$424ea1bd|loadAnimation|moveToState|moveToState|addFragment|removeFragment|findFragmentById|findFragmentByTag|enqueueAction|allocBackStackIndex|setBackStackIndex|popBackStackState$68507953$44bd8ea3|restoreAllState|attachActivity|dispatchConfigurationChanged|dispatchCreateOptionsMenu|dispatchPrepareOptionsMenu|dispatchOptionsItemSelected](SourceFile:942)
at android.support.v4.app.z.a(SourceFile:1121)
at android.support.v4.app.z.e(SourceFile:1103)
at android.support.v4.app.z.i(SourceFile:1901)
at android.support.v4.app.FragmentActivity.onStart(SourceFile:567)
at au.com.codeka.warworlds.game.alliance.AllianceActivity.onStart(SourceFile:86)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1177)
at android.app.Activity.performStart(Activity.java:5461)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2368)
... 12 more
Is it okay if I just submit everything that bugs me while playing?
java.lang.RuntimeException: Unable to resume activity {au.com.codeka.warworlds/au.com.codeka.warworlds.game.starfield.StarfieldActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {au.com.codeka.warworlds/au.com.codeka.warworlds.game.starfield.StarfieldActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2944)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2973)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2408)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3910)
at android.app.ActivityThread.access$700(ActivityThread.java:165)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5391)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {au.com.codeka.warworlds/au.com.codeka.warworlds.game.starfield.StarfieldActivity}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3533)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2928)
... 13 more
Caused by: java.lang.NullPointerException
at au.com.codeka.warworlds.game.starfield.StarfieldActivity.[openEmpireActivityAtFleet|applyBottomPaneAnimation|navigateToPlanet$513f7269|navigateToPlanet|navigateToFleet|showStarRenamePopup|access$000|access$002|access$402|access$800|access$1000$3a216234|access$1300](SourceFile:511)
at au.com.codeka.warworlds.game.starfield.StarfieldActivity.onActivityResult(SourceFile:647)
at android.app.Activity.dispatchActivityResult(Activity.java:5311)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3529)
... 14 more
Android provides a library, protobuf nano, which would probably be better to use on the client than the heavy-weight protobuf library we use.
This should make the final .apk a bit smaller, but should also hopefully make the interface cleaner.
I'm not sure how this will work with the way we share "model" objects between the client and server, maybe it means the server will have to use protobuf nano as well. Some investigation will therefore be required. Using square/wire is another option I've looked into in the past, they generate nice small classes with a decent API as well.
The other thing that needs to be done is the model objects need to be tidied up quite a bit. The whole "BaseXxx" and then the sub class in the client/server which contains additional logic is pretty annoying in practice. If we choose to go with square/wire, then perhaps using the generated classes directly would be an option. The main difficulty would be the fact that the classes it generates are immutable (but that would actually have other benefits as well, it will just require a bit of extra work to get it working nicely.)
Ever since the update that included idle queue, the map view/tacb view is unusable. Zoom out and scroll will always crash. This makes empire navigation, expansion and attack extremely difficult. I don't know if this issue only affects larger empires but It would make the game playable again. Thank you.
every time I close and reopen app without restarting app it crashes or lags alot
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.