No implementation found for void com.sdkbox.plugin.SDKBox.nativeInit

No implementation found for void com.sdkbox.plugin.SDKBox.nativeInit
0

#21

a lot of errors when compiling new project:

Android NDK: WARNING: Unsupported source file extensions in /Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/Android.mk for module cocos2d_js_static    
Android NDK:   \    
make: Entering directory `/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/app'
[armeabi] Compile++ thumb: cocos2d_js_static <= ScriptingCore.cpp
[armeabi] Compile++ thumb: cocos2d_js_static <= js_bindings_core.cpp
[armeabi] Compile++ thumb: cocos2d_js_static <= js_bindings_opengl.cpp
[armeabi] Compile++ thumb: cocos2d_js_static <= jsb_opengl_functions.cpp
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In constructor 'ScriptingCore::ScriptingCore()':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:480:3: error: class 'ScriptingCore' does not have any field named '_jsInited'
 , _jsInited(false)
   ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:481:3: error: class 'ScriptingCore' does not have any field named '_needCleanup'
 , _needCleanup(false)
   ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'void ScriptingCore::createGlobalContext()':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:597:10: error: '_jsInited' was not declared in this scope
     if (!_jsInited && !JS_Init())
          ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:647:5: error: '_needCleanup' was not declared in this scope
     _needCleanup = true;
     ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: At global scope:
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:660:29: error: prototype for 'JS::PersistentRootedScript* ScriptingCore::getScript(const char*)' does not match any in class 'ScriptingCore'
 JS::PersistentRootedScript* ScriptingCore::getScript(const char *path)
                             ^
In file included from /Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:25:0:
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/3d/../scripting/js-bindings/manual/ScriptingCore.h:259:15: error: candidate is: JSScript* ScriptingCore::getScript(const char*)
     JSScript* getScript(const char *path);
               ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:675:29: error: prototype for 'JS::PersistentRootedScript* ScriptingCore::compileScript(const char*, JS::HandleObject, JSContext*)' does not match any in class 'ScriptingCore'
 JS::PersistentRootedScript* ScriptingCore::compileScript(const char *path, JS::HandleObject global, JSContext* cx)
                             ^
In file included from /Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:25:0:
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/3d/../scripting/js-bindings/manual/ScriptingCore.h:267:10: error: candidate is: void ScriptingCore::compileScript(const char*, JS::HandleObject, JSContext*)
     void compileScript(const char *path, JS::HandleObject global, JSContext* cx = NULL);
          ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:778:63: error: prototype for 'std::unordered_map<std::basic_string<char>, JS::PersistentRooted<JSScript*>*>& ScriptingCore::getFileScript()' does not match any in class 'ScriptingCore'
 std::unordered_map<std::string, JS::PersistentRootedScript*>& ScriptingCore::getFileScript()
                                                               ^
In file included from /Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:25:0:
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/3d/../scripting/js-bindings/manual/ScriptingCore.h:315:49: error: candidate is: std::unordered_map<std::basic_string<char>, JSScript*>& ScriptingCore::getFileScript()
     std::unordered_map<std::string, JSScript*> &getFileScript();
                                                 ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'bool ScriptingCore::runScript(const char*, JS::HandleObject, JSContext*)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:799:49: error: 'void script' has incomplete type
     auto script = compileScript(path, global, cx);
                                                 ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'bool ScriptingCore::requireScript(const char*, JS::HandleObject, JSContext*, JS::MutableHandleValue)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:830:49: error: 'void script' has incomplete type
     auto script = compileScript(path, global, cx);
                                                 ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'void ScriptingCore::cleanup()':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:867:10: error: '_needCleanup' was not declared in this scope
     if (!_needCleanup) {
          ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:872:20: error: 'garbageCollect' was not declared in this scope
     garbageCollect();
                    ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:900:5: error: '_needCleanup' was not declared in this scope
     _needCleanup = false;
     ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: At global scope:
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:927:81: error: no 'void ScriptingCore::retainScriptObject(cocos2d::Ref*, cocos2d::Ref*)' member function declared in class 'ScriptingCore'
 void ScriptingCore::retainScriptObject(cocos2d::Ref* owner, cocos2d::Ref* target)
                                                                                 ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:960:58: error: no 'void ScriptingCore::rootScriptObject(cocos2d::Ref*)' member function declared in class 'ScriptingCore'
 void ScriptingCore::rootScriptObject(cocos2d::Ref* target)
                                                          ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:994:82: error: no 'void ScriptingCore::releaseScriptObject(cocos2d::Ref*, cocos2d::Ref*)' member function declared in class 'ScriptingCore'
 void ScriptingCore::releaseScriptObject(cocos2d::Ref* owner, cocos2d::Ref* target)
                                                                                  ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1027:60: error: no 'void ScriptingCore::unrootScriptObject(cocos2d::Ref*)' member function declared in class 'ScriptingCore'
 void ScriptingCore::unrootScriptObject(cocos2d::Ref* target)
                                                            ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1061:68: error: no 'void ScriptingCore::releaseAllChildrenRecursive(cocos2d::Node*)' member function declared in class 'ScriptingCore'
 void ScriptingCore::releaseAllChildrenRecursive(cocos2d::Node *node)
                                                                    ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1071:61: error: no 'void ScriptingCore::releaseAllNativeRefs(cocos2d::Ref*)' member function declared in class 'ScriptingCore'
 void ScriptingCore::releaseAllNativeRefs(cocos2d::Ref* owner)
                                                             ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'bool ScriptingCore::handleTouchesEvent(void*, cocos2d::EventTouch::EventCode, const std::vector<cocos2d::Touch*>&, cocos2d::Event*, JS::MutableHandleValue)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1400:128: error: 'jsb_get_or_create_weak_jsobject' was not declared in this scope
         JS::RootedValue jsret(_cx, OBJECT_TO_JSVAL(jsb_get_or_create_weak_jsobject(_cx, touch, typeClassTouch, "cocos2d::Touch")));
                                                                                                                                ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1413:119: error: 'jsb_get_or_create_weak_jsobject' was not declared in this scope
         dataVal[1] = OBJECT_TO_JSVAL(jsb_get_or_create_weak_jsobject(_cx, event, typeClassEvent, "cocos2d::EventTouch"));
                                                                                                                       ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'bool ScriptingCore::handleTouchEvent(void*, cocos2d::EventTouch::EventCode, cocos2d::Touch*, cocos2d::Event*, JS::MutableHandleValue)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1447:114: error: 'jsb_get_or_create_weak_jsobject' was not declared in this scope
         dataVal[0] = OBJECT_TO_JSVAL(jsb_get_or_create_weak_jsobject(_cx, touch, typeClassTouch, "cocos2d::Touch"));
                                                                                                                  ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'bool ScriptingCore::handleMouseEvent(void*, cocos2d::EventMouse::MouseEventType, cocos2d::Event*, JS::MutableHandleValue)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1476:117: error: 'jsb_get_or_create_weak_jsobject' was not declared in this scope
         jsval dataVal = OBJECT_TO_JSVAL(jsb_get_or_create_weak_jsobject(_cx, event, typeClass, "cocos2d::EventMouse"));
                                                                                                                     ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: At global scope:
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1554:136: error: no 'bool ScriptingCore::handleKeyboardEvent(void*, cocos2d::EventKeyboard::KeyCode, bool, cocos2d::Event*)' member function declared in class 'ScriptingCore'
 bool ScriptingCore::handleKeyboardEvent(void* nativeObj, cocos2d::EventKeyboard::KeyCode keyCode, bool isPressed, cocos2d::Event* event)
                                                                                                                                        ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'bool ScriptingCore::handleFocusEvent(void*, cocos2d::ui::Widget*, cocos2d::ui::Widget*)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1595:111: error: 'jsb_get_or_create_weak_jsobject' was not declared in this scope
         OBJECT_TO_JSVAL(jsb_get_or_create_weak_jsobject(_cx, widgetLoseFocus, typeClass, "cocos2d::ui::Widget")),
                                                                                                               ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'int ScriptingCore::executeCustomTouchesEvent(cocos2d::EventTouch::EventCode, const std::vector<cocos2d::Touch*>&, JSObject*)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1616:116: error: 'jsb_get_or_create_weak_jsobject' was not declared in this scope
         jsval jsret = OBJECT_TO_JSVAL(jsb_get_or_create_weak_jsobject(this->_cx, touch, typeClass, "cocos2d::Touch"));
                                                                                                                    ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'int ScriptingCore::executeCustomTouchEvent(cocos2d::EventTouch::EventCode, cocos2d::Touch*, JSObject*)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1642:114: error: 'jsb_get_or_create_weak_jsobject' was not declared in this scope
     jsval jsTouch = OBJECT_TO_JSVAL(jsb_get_or_create_weak_jsobject(this->_cx, touch, typeClass, "cocos2d::Touch"));
                                                                                                                  ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: In member function 'int ScriptingCore::executeCustomTouchEvent(cocos2d::EventTouch::EventCode, cocos2d::Touch*, JSObject*, JS::MutableHandleValue)':
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1660:114: error: 'jsb_get_or_create_weak_jsobject' was not declared in this scope
     jsval jsTouch = OBJECT_TO_JSVAL(jsb_get_or_create_weak_jsobject(this->_cx, touch, typeClass, "cocos2d::Touch"));
                                                                                                                  ^
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp: At global scope:
/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/../../cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/ScriptingCore.cpp:1770:36: error: no 'void ScriptingCore::garbageCollect()' member function declared in class 'ScriptingCore'
 void ScriptingCore::garbageCollect()
                                    ^
[armeabi] Compile++ thumb: cocos2d_js_static <= jsb_opengl_manual.cpp
[armeabi] Compile++ thumb: cocos2d_js_static <= jsb_opengl_registration.cpp
[armeabi] Compile++ thumb: cocos2d_js_static <= jsb_event_dispatcher_manual.cpp
cc1plus: warning: unrecognized command line option "-Wno-extern-c-compat"
cc1plus: warning: unrecognized command line option "-Wno-extern-c-compat"
make: *** [obj/local/armeabi/objs-debug/cocos2d_js_static/__/manual/ScriptingCore.o] Error 1
make: *** Waiting for unfinished jobs....
make: Leaving directory `/Users/heximal/Documents/cocos/MyGame/frameworks/runtime-src/proj.android-studio/app'
Error running command, return code: 2.

#22

This means either your cocos2d-x have some problem or your build environment have some issue, which version are you using?


#23

I’m using version 3.10.


#24

Can you try upgrading to latest version? make sure the new game compiles would be the first step…


#25

it’s very risky for me) what if it breaks everything?
can I make some backup so I could rollback to 3.10 later?


#26

would it be enough to backup .profile with cocos path exports?


#27

and one more thing. is latest version compatible with Cocos Studio? I know, this product is no longer supported, but my whole project is designed with it


#28

If that’s the case try downgrade your NDK to NDK 10e and see if it works with cocos2d-x 3.10


#29

I currently have NDK 10e (


[SDKBox] Facebook integration crash when app start
#30

Hi
having same issue.
i am using cococ2d-x 3.17

05-23 15:37:42.118 13081-13081/? I/zygote: Late-enabling -Xcheck:jni 05-23 15:37:42.163 13081-13088/? I/zygote: Debugger is no longer active 05-23 15:37:42.559 13081-13081/? I/InstantRun: starting instant run server: is main process 05-23 15:37:42.664 13081-13081/? D/main: cocos_android_app_init 05-23 15:37:42.667 13081-13081/? I/SDKBOX_CORE: Sdkbox Droid starting. 05-23 15:37:42.668 13081-13081/? E/zygote: No implementation found for void com.sdkbox.plugin.SDKBox.nativeInit(java.lang.Object, java.lang.ClassLoader) (tried Java_com_sdkbox_plugin_SDKBox_nativeInit and Java_com_sdkbox_plugin_SDKBox_nativeInit__Ljava_lang_Object_2Ljava_lang_ClassLoader_2) 05-23 15:37:42.668 13081-13081/? D/AndroidRuntime: Shutting down VM 05-23 15:37:42.670 13081-13081/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.myprojects.game, PID: 13081 java.lang.UnsatisfiedLinkError: No implementation found for void com.sdkbox.plugin.SDKBox.nativeInit(java.lang.Object, java.lang.ClassLoader) (tried Java_com_sdkbox_plugin_SDKBox_nativeInit and Java_com_sdkbox_plugin_SDKBox_nativeInit__Ljava_lang_Object_2Ljava_lang_ClassLoader_2) at com.sdkbox.plugin.SDKBox.nativeInit(Native Method) at com.sdkbox.plugin.SDKBox.init(SDKBox.java:71) at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:128) at org.cocos2dx.cpp.AppActivity.onCreate(AppActivity.java:35) at android.app.Activity.performCreate(Activity.java:6999) at android.app.Activity.performCreate(Activity.java:6990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)


SDKBox 2.4.3.0 bugfix
#31

Same for me, after I upgraded iap to 2.4.1.1
cocos2d-x 3.17

Update:
After iap 2.4.0.3 the AppActivity extends com.sdkbox.plugin.SDKBoxActivity
Reason of crash - it was because of my changes in Cocos2dxActivity.java and native library was not loaded in Cocos2dxActivity::onCreate (I’m loading a bit later in AppActivity::onCreate).

Solution for me:
I removed extends com.sdkbox.plugin.SDKBoxActivity


#32
  1. revert Cocos2dActivity.java
  2. extends com.sdkbox.plugin.SDKBoxActivity
  3. move sdkbox.jar from engine jar lib (cocos2d/cocos/platform/android/java/libs/) to project.android{-studio}

keep Sdks out of engine and do not modify engine.

One fixed for sdkbox.jar > UnsatisfiedLinkError on Released Game.