The version accessed is Wwise SDK 2017.2.0
First download https://github.com/wwisesamples/cocos2dx-IntegrationDemo, borrow the WwiseWrapper inside (with some modifications), and read ReadMe***.txt carefully
If you want to lua, just make some changes yourself.
- win
1. Add additional include directories (corresponding Wwise directories)
2. Add additional library directory (corresponding Wwise directory)
3. Add files to the project
- Android
1. Modify Application.mk
2. Modify Android.mk (plug-ins can be added or deleted as required)
This is in lua's Android Studio, just look at the modified path in c++
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d-x/cocos)
include $(CLEAR_VARS)
ifndef AK_CONFIG
#AK_CONFIG := Profile
AK_CONFIG := Release
endif
ifneq ($(AK_CONFIG), Debug)
NDK_DEBUG := 1
endif
AK_ANDROID := 1
#WWISESDK := ../../../../../Wwise/SDK
WWISESDK := E:/workspace/code/Wwise/SDK
include $(CLEAR_VARS)
#SDK_LIB_DIR := ../../../../../Wwise/SDK/Android_$(TARGET_ARCH_ABI)/$(AK_CONFIG)/lib
SDK_LIB_DIR := ${WWISESDK}/Android_$(TARGET_ARCH_ABI)/$(AK_CONFIG)/lib
ifneq ($(AK_CONFIG), Release)
LOCAL_MODULE := CommunicationCentral
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libCommunicationCentral.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
else
LOCAL_EXPORT_CFLAGS += -DAK_OPTIMIZED
endif
LOCAL_MODULE := AkMemoryMgr
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkMemoryMgr.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkSoundEngine
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkSoundEngine.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkStreamMgr
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkStreamMgr.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkMusicEngine
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkMusicEngine.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkVorbisDecoder
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkVorbisDecoder.a
include $(PREBUILT_STATIC_LIBRARY)
LOCAL_MODULE := zip
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libzip.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := cocos2dlua_shared
LOCAL_MODULE_FILENAME := libcocos2dlua
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../Classes/pbc
#Wwise
LOCAL_C_INCLUDES += $(WWISESDK)/samples/SoundEngine/Android
LOCAL_C_INCLUDES += $(WWISESDK)/samples/SoundEngine/Android/libzip/lib
LOCAL_C_INCLUDES += $(WWISESDK)/samples/SoundEngine/Common
LOCAL_C_INCLUDES += $(WWISESDK)/include
LOCAL_C_INCLUDES += $(WWISESDK)/samples/IntegrationDemo/Android
#友盟
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../Classes/analytics \
$(LOCAL_PATH)/../../../Classes/share \
$(LOCAL_PATH)/../../../Classes/Common
LOCAL_SRC_FILES := \
../../../Classes/AppDelegate.cpp \
../../../Classes/PixelSprite.cpp \
../../../Classes/FuncHelper.cpp \
../../../Classes/ButtonEx.cpp \
../../../Classes/ListViewEx.cpp \
../../../Classes/md5.cpp \
../../../Classes/WwiseAudio.cpp \
../../../Classes/WwiseWrapper.cpp \
../../../Classes/JPushBridge.cpp \
hellolua/main.cpp \
../../../Classes/pbc/src/alloc.c \
../../../Classes/pbc/src/array.c \
../../../Classes/pbc/src/bootstrap.c \
../../../Classes/pbc/src/context.c \
../../../Classes/pbc/src/decode.c \
../../../Classes/pbc/src/map.c \
../../../Classes/pbc/src/pattern.c \
../../../Classes/pbc/src/proto.c \
../../../Classes/pbc/src/register.c \
../../../Classes/pbc/src/rmessage.c \
../../../Classes/pbc/src/stringpool.c \
../../../Classes/pbc/src/varint.c \
../../../Classes/pbc/src/wmessage.c \
../../../Classes/pbc/pbc-lua.c
LOCAL_SRC_FILES += \
../../../../cocos2d-x/external/lua/cjson/fpconv.c \
../../../../cocos2d-x/external/lua/cjson/lua_cjson.c \
../../../../cocos2d-x/external/lua/cjson/strbuf.c
#c++转lua
LOCAL_SRC_FILES += \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_PixelSprite_auto.cpp \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_FuncHelper_auto.cpp \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_ListViewEx_auto.cpp \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_ButtonEx_auto.cpp \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_WwiseAudio_auto.cpp
#Wwise
LOCAL_SRC_FILES += \
$(WWISESDK)/samples/SoundEngine/Common/AkFileLocationBase.cpp \
$(WWISESDK)/samples/SoundEngine/Common/AkFilePackage.cpp \
$(WWISESDK)/samples/SoundEngine/Common/AkFilePackageLUT.cpp \
$(WWISESDK)/samples/SoundEngine/Android/AkFileHelpers.cpp \
$(WWISESDK)/samples/SoundEngine/Android/AkDefaultIOHookBlocking.cpp
#友盟
LOCAL_SRC_FILES += \
../../../Classes/analytics/MobClickCpp.cpp \
../../../Classes/analytics/DplusMobClickCpp.cpp \
../../../Classes/analytics/lua_binding.cpp \
../../../Classes/share/lua_share_binding.cpp \
../../../Classes/share/CCUMSocialSDK.cpp \
../../../Classes/Common/UMCCCommon.cpp
# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END
#wwise
LOCAL_LDLIBS := -llog -lOpenSLES -landroid -lEGL -lGLESv1_CM
LOCAL_CFLAGS := -DLUA_USE_POSIX
LOCAL_CFLAGS += -DAK_DEBUG -DCOCOS_INTEGRATION
LOCAL_STATIC_LIBRARIES := cocos2d_lua_static
# 引用 bugly/Android.mk 定义的Module
LOCAL_STATIC_LIBRARIES += bugly_crashreport_cocos_static
# 引用 bugly/lua/Android.mk 定义的Module
LOCAL_STATIC_LIBRARIES += bugly_agent_cocos_static_lua
#wwise
LOCAL_WHOLE_STATIC_LIBRARIES += gnustl_static
ifneq ($(AK_CONFIG), Release)
LOCAL_STATIC_LIBRARIES += CommunicationCentral
endif
LOCAL_STATIC_LIBRARIES += AkMusicEngine \
AkSoundEngine \
AkMemoryMgr \
AkStreamMgr \
AkVorbisDecoder \
zip
# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END
include $(BUILD_SHARED_LIBRARY)
$(call import-module,scripting/lua-bindings/proj.android)
# 导入 bugly 静态库目录
$(call import-module,external/bugly)
$(call import-module,external/bugly/lua)
# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END
3. Modify AppActivity.java
package org.cocos2dx.cpp;
import org.cocos2dx.lib.Cocos2dxActivity;
import android.app.Activity;
import android.os.Bundle;
public class AppActivity extends Cocos2dxActivity {
private static Object instance;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
instance = this;
}
public static Object getInstance() {
return instance;
}
}
- ios
1. Add files
2. Add library
$(WWISESDK)/iOS/$(CONFIGURATION)-iphoneos/lib/libAkMusicEngine.a
Among them, the red line frame is the communication function, which is added in debug mode, but not in release mode.
3.
4.
5.
6.
- Modify the code
Modify the code in WwiseWrapper, pay attention to the paths of different platforms, the paths of java functions called by c++ and lua, etc.
- use
1. Call WWISE::initialize(); in AppDelegate.cpp to initialize
static const AkGameObjectID GAME_OBJECT_PIANO = 100;
2. Import bnk
// Load the sound bank
AkBankID bankID; // Not used
if (AK::SoundEngine::LoadBank("Piano.bnk", AK_DEFAULT_POOL_ID, bankID) != AK_Success)
{
log("LoadBank Piano.bnk error");
}
// Register the "Piano" game object
AK::SoundEngine::RegisterGameObj(GAME_OBJECT_PIANO);
3. Use (play, stop, pause, etc.)
//txt文件中的name
int playingID = AK::SoundEngine::PostEvent("Play_7d", GAME_OBJECT_PIANO);
Be sure to enable update
this->scheduleUpdate();
void HelloWorld::update(float dt)
{
WWISE::update();
}
4. Stop
//详细使用请阅读API
//1.PostEvent返回的ID,2.持续毫秒
AK::SoundEngine::StopPlayingID(_index, 200);
5. Uninstall
// Unregister the "Human" game object
AK::SoundEngine::UnregisterGameObj(GAME_OBJECT_PIANO);
// Unload the sound bank
AK::SoundEngine::UnloadBank("Piano.bnk", NULL);
WWISE::terminate();