Presentation from David Wingrove & Katie Merrill from Golden Hammer Software http://www.goldenhammersoftware.com/
From the Barcelona Android User Group meetup: http://www.meetup.com/Barcelona-Android-User-Group/events/166734982/
This document provides an overview of common programming areas, team organizations, methodologies, and practices for game development. It discusses that programming teams often specialize in areas like graphics, networking, or AI. Common methodologies include code and fix, waterfall, iterative, and agile approaches. Key practices involve using version control, code reviews, unit testing, and bug tracking. The document also compares popular programming languages like C++, Java, and scripting languages, noting their pros and cons for game development.
Data Management and Streaming Strategies in Drakensang OnlineAndre Weissflog
One of my older presentations from the Browser Games Forum 2011 about how we're managing data size optimizations and streaming in Drakensang Online. Absolute asset size number are about 3x..4x bigger today, since the game has grown a lot since 2011.
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5David Voyles
The video for this talk can be found here:https://channel9.msdn.com/Blogs/raw-tech/Getting-started-with-Emscripten--Transpiling-C--C-to-JavaScript--HTML5
I cover how to transpile code from C/C++ to HTML5/JS using Emscripten, an open source compiler tool from Mozilla and Alon Zakai.
Multiplatform C++ on the Web with EmscriptenChad Austin
IMVU is using Emscripten to bring its multiplatform C++ codebase to web browsers with HTML5 and WebGL. See how Emscripten works, how to use, and what you can expect.
Minko - Build WebGL applications with C++ and asm.jsMinko3D
This document summarizes an HTML5 Meetup about building WebGL applications with C++ and ASM.js. It discusses how C++ is more expressive than JavaScript for complex 3D applications and allows leveraging existing C++ libraries and performance through GPU programming. It outlines using Emscripten to cross-compile C++ to JavaScript, generating optimized ASM.js code. It also discusses tools like Premake for cross-platform building and Vagrant for consistently provisioning the build environment. Examples are given of building a 3D application with C++ and WebGL that runs across desktop, mobile and web with good performance and binary size.
WebGL games with Minko - Next Game Frontier 2014Minko3D
- Minko is a framework for building 3D applications in C++ that can be deployed to desktops, mobiles, and the web.
- It uses C++ as its core language and Lua for scripting. Applications are compiled to JavaScript using Emscripten to run in HTML5 and WebGL.
- Minko provides 3D graphics and physics engines, file format support, and tools to develop once and deploy everywhere. This allows building complex 3D games and experiences that achieve high performance across platforms.
Minko - Creating cross-platform 3D apps with MinkoMinko3D
Minko is a cross-platform 3D engine that allows developers to create and deploy 3D applications across desktops, mobile devices, and the web from a single codebase. It uses C++ and Lua for high performance and allows loading 3D files up to 200 times faster than other solutions through exclusive compression algorithms. Minko supports over 50 3D file formats and is used in games like IronForce from EA. It provides tools for 3D content creation and integration and can be used to develop applications that deliver rich 3D experiences everywhere.
This document provides an overview of common programming areas, team organizations, methodologies, and practices for game development. It discusses that programming teams often specialize in areas like graphics, networking, or AI. Common methodologies include code and fix, waterfall, iterative, and agile approaches. Key practices involve using version control, code reviews, unit testing, and bug tracking. The document also compares popular programming languages like C++, Java, and scripting languages, noting their pros and cons for game development.
Data Management and Streaming Strategies in Drakensang OnlineAndre Weissflog
One of my older presentations from the Browser Games Forum 2011 about how we're managing data size optimizations and streaming in Drakensang Online. Absolute asset size number are about 3x..4x bigger today, since the game has grown a lot since 2011.
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5David Voyles
The video for this talk can be found here:https://channel9.msdn.com/Blogs/raw-tech/Getting-started-with-Emscripten--Transpiling-C--C-to-JavaScript--HTML5
I cover how to transpile code from C/C++ to HTML5/JS using Emscripten, an open source compiler tool from Mozilla and Alon Zakai.
Multiplatform C++ on the Web with EmscriptenChad Austin
IMVU is using Emscripten to bring its multiplatform C++ codebase to web browsers with HTML5 and WebGL. See how Emscripten works, how to use, and what you can expect.
Minko - Build WebGL applications with C++ and asm.jsMinko3D
This document summarizes an HTML5 Meetup about building WebGL applications with C++ and ASM.js. It discusses how C++ is more expressive than JavaScript for complex 3D applications and allows leveraging existing C++ libraries and performance through GPU programming. It outlines using Emscripten to cross-compile C++ to JavaScript, generating optimized ASM.js code. It also discusses tools like Premake for cross-platform building and Vagrant for consistently provisioning the build environment. Examples are given of building a 3D application with C++ and WebGL that runs across desktop, mobile and web with good performance and binary size.
WebGL games with Minko - Next Game Frontier 2014Minko3D
- Minko is a framework for building 3D applications in C++ that can be deployed to desktops, mobiles, and the web.
- It uses C++ as its core language and Lua for scripting. Applications are compiled to JavaScript using Emscripten to run in HTML5 and WebGL.
- Minko provides 3D graphics and physics engines, file format support, and tools to develop once and deploy everywhere. This allows building complex 3D games and experiences that achieve high performance across platforms.
Minko - Creating cross-platform 3D apps with MinkoMinko3D
Minko is a cross-platform 3D engine that allows developers to create and deploy 3D applications across desktops, mobile devices, and the web from a single codebase. It uses C++ and Lua for high performance and allows loading 3D files up to 200 times faster than other solutions through exclusive compression algorithms. Minko supports over 50 3D file formats and is used in games like IronForce from EA. It provides tools for 3D content creation and integration and can be used to develop applications that deliver rich 3D experiences everywhere.
The document discusses updates to the Minko 3D game engine, including new editor features, framework features, and community features. It provides details on a new game released using Minko called IronForce, and outlines Minko's goals for targeting new platforms like iOS, Android, and HTML5 while increasing performance. Technological choices like C++, Emscripten, ANGLE, and Premake are presented. Implementation details cover areas like components, GLSL, effects, and a cross-compilation workflow.
This document introduces .NET Core and its advantages over the .NET Framework. It discusses how .NET Core is cross-platform, uses the .NET Standard library, and can create self-contained applications. It also highlights how .NET Core applications are smaller, faster, and container-friendly. The document demonstrates how to use the dotnet CLI and publish .NET Core applications to reduce their deployment size. Overall, it promotes adopting .NET Core for its performance, portability, and familiar .NET APIs.
GraalVM can be used as a drop-in replacement for the JDK to run Java programs. It includes the Graal just-in-time compiler which can provide better performance than the default HotSpot compiler. GraalVM also includes the native-image tool which can compile Java bytecode ahead-of-time to native executables without dependencies, improving startup time significantly. This enables using Java for more dynamic workloads like microservices that require fast startup. Reflection and dynamic proxies require additional configuration for native images. Docker images can also be built from native executables to distribute applications.
The document provides performance tips for Symfony2 and PHP applications. It recommends starting by measuring performance before and after optimizations to identify where to focus efforts. Key areas to optimize include services like using PHP opcache, architecture like caching, and code through techniques like moving calculations out of loops. Symfony-specific tips involve using bytecode caching, lazy-loading services, and caching in general. The overall message is to prioritize scalability and only optimize after identifying bottlenecks through measurement and profiling.
The document discusses Lua, a lightweight scripting language embedded in C/C++ applications. It provides an overview of Lua's uses in games, mobile apps, and embedded systems. The Lua Development Tools (LDT) plugin for Eclipse is presented as a way to provide IDE support for Lua in a manner consistent with its embeddable nature. Future plans for LDT include improved content assistance, support for multiple execution environments, and pre-bundled interpreters.
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko3D
This document summarizes a conference about targeting Flash/Stage3D with C++ and GLSL. It discusses new features added to Minko, including user data, improved Collada loading, and new tutorial videos. It also previews the next major version of Minko called "Normandie", which will target new platforms using C++ and improve performance. Technological choices like C++ 2011, Crossbridge, Premake, and GLSL are explained. The challenges of shader programming, cross-platform shaders, and multi-pass effects are also covered.
This document provides an overview of .NET Core and discusses getting started, the dotnet command line interface, apps and libraries, current frustrations, converting existing code, building for both .NET 4.5 and .NET Core, and concludes with a thank you. It recommends installing the .NET Core SDK, updating Visual Studio, using the dotnet CLI for building even when using Visual Studio, understanding how console, web, and test projects target frameworks differently than libraries, and dealing with issues like unfinished Visual Studio tooling and lack of NuGet package support for some frameworks.
Microsoft is working hard to modernize the .NET Platform. There are great new frameworks and tools coming, such as .NET Core and ASP.NET Core. The amount of new things is overwhelming, with multiple .NET Platforms (.NET Framework, Unified Windows Platform, .NET Core), multiple runtimes (CoreCLR, CLR, CoreRT), multiple compilers (Roslyn, RyuJIT, .NET Native and LLILC) and much more. This session will bring you up to speed on all this new Microsoft technology, focusing on .NET Core.
But, we will also take a look at the first framework implementation on top op .NET Core for the Web: ASP.NET Core 1.0. You will learn about ASP.NET Core 1.0 and how it is different from ASP.NET 4.6. This will include Visual Studio 2015 support, cross-platform ASP.NET Core and command-line tooling for working with ASP.NET Core and .NET Core projects.
After this session you know where Microsoft is heading in the near future. Be prepared for a new .NET Platform.
GraalVM can be used as a drop-in replacement for the JDK to run Java programs. It includes the Graal just-in-time compiler which can provide better performance than the default HotSpot compiler. GraalVM also allows ahead-of-time compilation of Java bytecode into native images using SubstrateVM, eliminating the overhead of interpretation and compilation at runtime. These native images have minimal dependencies and fast startup times, making them suitable for containerized microservices and cloud applications.
Fix: static code analysis into our project noelchris3
Static code analysis tools like Larastan and PHP-CS-Fixer were introduced to make code reviews more efficient by standardizing code formatting and catching errors. They help avoid trivial code formatting differences between pull requests that waste review time. Now reviewers can focus on architecture, algorithms and naming instead of minor whitespace and quote style fixes. These tools have reduced the number of file conflicts per pull request from over 10 to just important conflicts, allowing for more effective code reviews.
Infrastructure as data with Ansible: systems and cloud
deployment and management for the lazy developer
Abstract: Great programmers and sysadmins are lazy people: rightly,
they prefer avoiding manual, time consuming and error-prone tasks such
as installing and configuring a Linux/Apache/Tomcat cluster for the
tenth time.
Ansible, an infrastructure (server, cloud) deployment automation &
configuration both powerful AND simple (in most cases simpler than
shell scripts and maven poms!), will make developers and it staff more
productive and effective.
http://www.ansible.cc
Deep Dive Azure Functions - Global Azure Bootcamp 2019Andrea Tosato
This document summarizes key differences between Azure Functions version 1 and 2. Version 2 offers improvements like .NET Core support instead of just .NET Framework, ability to isolate assemblies, and support for additional languages like Python and Node.js version 10. It also describes deployment options, new bindings for inputs and outputs, and premium plans that enable configuring minimum and maximum instance counts and using virtual networks. Durable Functions are demonstrated for orchestrating function apps.
Short introduction - .net core and .net standard 2.0Mark Lechtermann
This document discusses the history and relationship between .NET Core, .NET Framework, and .NET Standard. It explains that .NET Framework was not platform independent, while .NET Core is cross-platform but lacked Windows Forms and WPF support. .NET Standard was created to define a common set of APIs that can be targeted by frameworks like .NET Core and implemented by frameworks like .NET Framework, allowing libraries to work across platforms. The document notes that .NET Framework 4.7.1 added support for .NET Standard 2.0 by implementing around 200 missing APIs.
The document discusses Docker containers and Kubernetes for deploying containerized applications. It covers building Docker images from code, running containers locally and on Kubernetes, using Kubernetes concepts like pods and services to run and connect containers, and deploying containerized applications on Kubernetes clusters hosted on cloud providers using tools like Helm charts. The goal is to enable continuous deployment of applications to production environments at scale through containerization and orchestration with Kubernetes.
CampJS - Making gaming more fun and efficientCong Nguyen
The document discusses improving a gaming bot by developing it into a full automation stack using JavaScript technologies. The initial bot automated farming and attacks for a tribal wars game. It was later rewritten to use Node-RED for a visual interface and messaging with Apache Kafka. Future plans include adding business process modeling with Camunda to coordinate workflows and encrypting messages for multi-tenancy. The goal is to create a general automation stack for JavaScript applications rather than focus solely on gaming.
20160409 서브라임텍스트 대신 visual studio code로 만들어 보는 웹 환경영욱 김
This document discusses Visual Studio Code and how it can be used as a lightweight code editor in the cloud. It provides an overview of VS Code's features like IntelliSense, debugging, source control integration, and support for multiple programming languages. It also explains how VS Code connects to language servers to provide richer editing capabilities. Examples of language servers mentioned are OmniSharp for C# and the TypeScript server. The document also briefly introduces Azure services that can be used to deploy and host apps developed in VS Code.
This document is a thesis submitted by Kristian Steensen Nielsen to Aarhus University in Denmark. The thesis examines the potential for a carbon label to influence consumers' coffee purchasing behavior. It reviews theories on the relationship between attitudes and behavior, discusses existing eco-labels, and reports on focus groups conducted to explore consumer knowledge, attitudes, and label preferences. The thesis then presents a discrete choice experiment testing two carbon label designs. The results indicate the carbon label significantly affected purchases but price and organic labels were more important. A traffic light ranking enhanced the carbon label's effects by directing consumers to lower carbon options. The thesis evaluates the carbon label's potential and limitations, and provides recommendations.
This document contains a questionnaire about coffee consumption habits. The questionnaire has three sections: background information, habits and preferences regarding coffee consumption, and attitudes and perceptions about coffee. The background section collects demographic data like gender, age, education level. The habits section asks about daily coffee intake, when and why coffee is consumed. The attitudes section addresses health concerns, reasons for drinking coffee, and preferences regarding brands. Respondents are asked to select answers on a scale or by marking options.
The document discusses updates to the Minko 3D game engine, including new editor features, framework features, and community features. It provides details on a new game released using Minko called IronForce, and outlines Minko's goals for targeting new platforms like iOS, Android, and HTML5 while increasing performance. Technological choices like C++, Emscripten, ANGLE, and Premake are presented. Implementation details cover areas like components, GLSL, effects, and a cross-compilation workflow.
This document introduces .NET Core and its advantages over the .NET Framework. It discusses how .NET Core is cross-platform, uses the .NET Standard library, and can create self-contained applications. It also highlights how .NET Core applications are smaller, faster, and container-friendly. The document demonstrates how to use the dotnet CLI and publish .NET Core applications to reduce their deployment size. Overall, it promotes adopting .NET Core for its performance, portability, and familiar .NET APIs.
GraalVM can be used as a drop-in replacement for the JDK to run Java programs. It includes the Graal just-in-time compiler which can provide better performance than the default HotSpot compiler. GraalVM also includes the native-image tool which can compile Java bytecode ahead-of-time to native executables without dependencies, improving startup time significantly. This enables using Java for more dynamic workloads like microservices that require fast startup. Reflection and dynamic proxies require additional configuration for native images. Docker images can also be built from native executables to distribute applications.
The document provides performance tips for Symfony2 and PHP applications. It recommends starting by measuring performance before and after optimizations to identify where to focus efforts. Key areas to optimize include services like using PHP opcache, architecture like caching, and code through techniques like moving calculations out of loops. Symfony-specific tips involve using bytecode caching, lazy-loading services, and caching in general. The overall message is to prioritize scalability and only optimize after identifying bottlenecks through measurement and profiling.
The document discusses Lua, a lightweight scripting language embedded in C/C++ applications. It provides an overview of Lua's uses in games, mobile apps, and embedded systems. The Lua Development Tools (LDT) plugin for Eclipse is presented as a way to provide IDE support for Lua in a manner consistent with its embeddable nature. Future plans for LDT include improved content assistance, support for multiple execution environments, and pre-bundled interpreters.
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko3D
This document summarizes a conference about targeting Flash/Stage3D with C++ and GLSL. It discusses new features added to Minko, including user data, improved Collada loading, and new tutorial videos. It also previews the next major version of Minko called "Normandie", which will target new platforms using C++ and improve performance. Technological choices like C++ 2011, Crossbridge, Premake, and GLSL are explained. The challenges of shader programming, cross-platform shaders, and multi-pass effects are also covered.
This document provides an overview of .NET Core and discusses getting started, the dotnet command line interface, apps and libraries, current frustrations, converting existing code, building for both .NET 4.5 and .NET Core, and concludes with a thank you. It recommends installing the .NET Core SDK, updating Visual Studio, using the dotnet CLI for building even when using Visual Studio, understanding how console, web, and test projects target frameworks differently than libraries, and dealing with issues like unfinished Visual Studio tooling and lack of NuGet package support for some frameworks.
Microsoft is working hard to modernize the .NET Platform. There are great new frameworks and tools coming, such as .NET Core and ASP.NET Core. The amount of new things is overwhelming, with multiple .NET Platforms (.NET Framework, Unified Windows Platform, .NET Core), multiple runtimes (CoreCLR, CLR, CoreRT), multiple compilers (Roslyn, RyuJIT, .NET Native and LLILC) and much more. This session will bring you up to speed on all this new Microsoft technology, focusing on .NET Core.
But, we will also take a look at the first framework implementation on top op .NET Core for the Web: ASP.NET Core 1.0. You will learn about ASP.NET Core 1.0 and how it is different from ASP.NET 4.6. This will include Visual Studio 2015 support, cross-platform ASP.NET Core and command-line tooling for working with ASP.NET Core and .NET Core projects.
After this session you know where Microsoft is heading in the near future. Be prepared for a new .NET Platform.
GraalVM can be used as a drop-in replacement for the JDK to run Java programs. It includes the Graal just-in-time compiler which can provide better performance than the default HotSpot compiler. GraalVM also allows ahead-of-time compilation of Java bytecode into native images using SubstrateVM, eliminating the overhead of interpretation and compilation at runtime. These native images have minimal dependencies and fast startup times, making them suitable for containerized microservices and cloud applications.
Fix: static code analysis into our project noelchris3
Static code analysis tools like Larastan and PHP-CS-Fixer were introduced to make code reviews more efficient by standardizing code formatting and catching errors. They help avoid trivial code formatting differences between pull requests that waste review time. Now reviewers can focus on architecture, algorithms and naming instead of minor whitespace and quote style fixes. These tools have reduced the number of file conflicts per pull request from over 10 to just important conflicts, allowing for more effective code reviews.
Infrastructure as data with Ansible: systems and cloud
deployment and management for the lazy developer
Abstract: Great programmers and sysadmins are lazy people: rightly,
they prefer avoiding manual, time consuming and error-prone tasks such
as installing and configuring a Linux/Apache/Tomcat cluster for the
tenth time.
Ansible, an infrastructure (server, cloud) deployment automation &
configuration both powerful AND simple (in most cases simpler than
shell scripts and maven poms!), will make developers and it staff more
productive and effective.
http://www.ansible.cc
Deep Dive Azure Functions - Global Azure Bootcamp 2019Andrea Tosato
This document summarizes key differences between Azure Functions version 1 and 2. Version 2 offers improvements like .NET Core support instead of just .NET Framework, ability to isolate assemblies, and support for additional languages like Python and Node.js version 10. It also describes deployment options, new bindings for inputs and outputs, and premium plans that enable configuring minimum and maximum instance counts and using virtual networks. Durable Functions are demonstrated for orchestrating function apps.
Short introduction - .net core and .net standard 2.0Mark Lechtermann
This document discusses the history and relationship between .NET Core, .NET Framework, and .NET Standard. It explains that .NET Framework was not platform independent, while .NET Core is cross-platform but lacked Windows Forms and WPF support. .NET Standard was created to define a common set of APIs that can be targeted by frameworks like .NET Core and implemented by frameworks like .NET Framework, allowing libraries to work across platforms. The document notes that .NET Framework 4.7.1 added support for .NET Standard 2.0 by implementing around 200 missing APIs.
The document discusses Docker containers and Kubernetes for deploying containerized applications. It covers building Docker images from code, running containers locally and on Kubernetes, using Kubernetes concepts like pods and services to run and connect containers, and deploying containerized applications on Kubernetes clusters hosted on cloud providers using tools like Helm charts. The goal is to enable continuous deployment of applications to production environments at scale through containerization and orchestration with Kubernetes.
CampJS - Making gaming more fun and efficientCong Nguyen
The document discusses improving a gaming bot by developing it into a full automation stack using JavaScript technologies. The initial bot automated farming and attacks for a tribal wars game. It was later rewritten to use Node-RED for a visual interface and messaging with Apache Kafka. Future plans include adding business process modeling with Camunda to coordinate workflows and encrypting messages for multi-tenancy. The goal is to create a general automation stack for JavaScript applications rather than focus solely on gaming.
20160409 서브라임텍스트 대신 visual studio code로 만들어 보는 웹 환경영욱 김
This document discusses Visual Studio Code and how it can be used as a lightweight code editor in the cloud. It provides an overview of VS Code's features like IntelliSense, debugging, source control integration, and support for multiple programming languages. It also explains how VS Code connects to language servers to provide richer editing capabilities. Examples of language servers mentioned are OmniSharp for C# and the TypeScript server. The document also briefly introduces Azure services that can be used to deploy and host apps developed in VS Code.
This document is a thesis submitted by Kristian Steensen Nielsen to Aarhus University in Denmark. The thesis examines the potential for a carbon label to influence consumers' coffee purchasing behavior. It reviews theories on the relationship between attitudes and behavior, discusses existing eco-labels, and reports on focus groups conducted to explore consumer knowledge, attitudes, and label preferences. The thesis then presents a discrete choice experiment testing two carbon label designs. The results indicate the carbon label significantly affected purchases but price and organic labels were more important. A traffic light ranking enhanced the carbon label's effects by directing consumers to lower carbon options. The thesis evaluates the carbon label's potential and limitations, and provides recommendations.
This document contains a questionnaire about coffee consumption habits. The questionnaire has three sections: background information, habits and preferences regarding coffee consumption, and attitudes and perceptions about coffee. The background section collects demographic data like gender, age, education level. The habits section asks about daily coffee intake, when and why coffee is consumed. The attitudes section addresses health concerns, reasons for drinking coffee, and preferences regarding brands. Respondents are asked to select answers on a scale or by marking options.
Bengawan Solo is an Indonesian coffee shop chain with stores in major cities across Indonesia. It offers coffee beverages, tea drinks, and light snacks. The document discusses Bengawan Solo's business overview including its locations, products, pricing, and additional services like WiFi. It also summarizes observations of customer behavior and decisions factors, finding that customers choose Bengawan Solo as a place to socialize with friends or study due to recommendations, affordable prices and a comfortable atmosphere.
CONSUMER BEHAVIOR TOWARDS COFFEE VENDING MACHINES
BLIND RESEARCH TO UNDERSTAND THE CONSUMER BEHAVIOR
FULL RESEARCH SECTOR (IMRB)
FMCG SECTOR ANALYSIS
SUB SECTOR BEVRAGE ANALYSIS
report on consumer preference w.r.t to coffeegauravishah90
This report analyzes customer preferences between Nescafe and Bru coffee brands based on a survey of 50 respondents. The key findings are that Nescafe is preferred over Bru, with 35 respondents choosing Nescafe. Taste was found to be the most important factor influencing brand choice. Most respondents drink coffee once per day and are satisfied with their chosen brand and its advertising.
This document provides a descriptive analysis of data collected from 331 respondents regarding their perceptions of coffee bars. Some key findings include:
1) The sample consisted of 51.7% male and 48.3% female respondents, with 80% between the ages of 21-32.
2) When it comes to beverages, there was an equal preference for hot and cold drinks. Coffee was the most preferred hot beverage.
3) Around 45% of respondents preferred to have coffee at coffee bars, while 33% preferred home.
4) The most common frequency of visiting a coffee bar was reported as 3 times per month, by 27.8% of respondents.
The document discusses AmigoCloud, an enterprise mapping platform that allows for mobile cross-platform development in C++. It describes how AmigoCloud uses 95% common C++ code and 5% platform-specific code to build applications for iOS, Android, and other platforms. It also details AmigoCloud's custom build system called AmigoMake, which handles compiling C++ code and dependencies for different platforms.
Android porting for dummies @droidconin 2011pundiramit
This document provides an overview of porting Android to new hardware:
1. It describes the Android software stack and the structure of the Android Open Source Project code.
2. It discusses requirements for building and accessing the AOSP code, including using the 'repo' tool to download the source.
3. It summarizes the AOSP code structure and highlights key components like the Linux kernel, HAL, and build system.
4. It provides an overview of the Android boot process and offers tips for debugging, including increasing log levels and using tools like logcat, adb, and dumpsys.
- Android is an open source software platform for mobile devices based on the Linux kernel and managed by the Open Handset Alliance. It allows developers to write managed code in Java for the applications layer.
- The Android software stack includes the Linux kernel, native libraries, the Android runtime (which includes a Java virtual machine called Dalvik), and the Application Framework layer where Android applications run.
- Android applications are built using the Android SDK and its tools which allow compilation of Java code into an executable .apk file that can be installed and run on Android devices.
This document provides an overview of the Android mobile platform architecture. It describes that Android is based on the Linux kernel with additional enhancements for power management, inter-process communication, and more. It also discusses the Dalvik virtual machine, core libraries, and hardware abstraction layer. Finally, it covers aspects of application development including setting up the manifest, laying out UI with XML, and debugging apps.
The document discusses various .NET debugging techniques, including:
1. The importance of debugging and the tools available for debugging .NET applications, such as Visual Studio and Debugging Tools for Windows.
2. Basic debugging tasks like setting breakpoints, stepping through code, and examining variables and call stacks.
3. Advanced techniques like debugging managed code, threads, and memory issues.
Debugging is an important part of the software development process that helps developers write more reliable code. There are several tools available for debugging .NET applications, including Visual Studio and Debugging Tools for Windows. Some basic debugging tasks involve setting breakpoints, stepping through code, examining variables and call stacks, and understanding memory usage and threads. Postmortem debugging techniques like dump file analysis can help debug problems that occur in production environments where live debugging is not possible.
This document discusses debugging techniques for production environments. It covers using debuggers and symbol files to debug running processes, remote debugging to debug processes on other machines, analyzing core dumps to debug crashed processes postmortem, and snapshot debugging using Application Insights to capture the state of an application during errors. It also introduces the OzCode production debugging platform, which aims to provide a unified experience for debugging applications running in cloud, on-premise, and other complex environments.
An introduction to the Android mobile operating system and programming framework. Example code at http://resume.jesse-anderson.com/introduction_to_android.zip.
The document introduces JavaME as a platform for developing wireless mobile applications, covering JavaME architecture, developing MIDlets, user interfaces, data persistence, networking, optional packages like messaging and multimedia, and performance tips. It provides an overview of key JavaME concepts like configurations, profiles, and packages as well as how to get started with a simple "Hello World" MIDlet and best practices for optimization.
This document summarizes key aspects of programming with eMbedded Visual C++ 4.0 for Windows Mobile development. It discusses the tools available in eVC++ 4.0 including new features since version 3.0. It provides tips for using the text editor, project settings, linker and emulator. It also compares native and managed code approaches and how to bridge between them using Platform Invoke. The document recommends certain scenarios for each approach and how to build native DLLs to support managed code projects.
This document provides an overview of Android development including why Android, features of the Android platform, steps to set up an Android development environment, and resources for Android development. It discusses that over 300,000 Android phones are sold daily, Android applications can be developed across multiple platforms using Java and Eclipse, and there are over 100,000 apps available on Android. It also summarizes the Android application framework, virtual machine, browser, graphics and media support, and includes high-level steps to create a "Hello Android" application and options for testing and deploying apps.
Designing the Call of Cthulhu app with Google App EngineChris Bunch
These are slides from a talk I gave at UCSB to the Senior Capstone class on 02/10/10 on how I developed the Call of Cthulhu application using Google App Engine.
Thug is a new low-interaction honeyclient for analyzing malicious web content and browser exploitation. It uses the Google V8 JavaScript engine and emulates different browser personalities to detect exploits. Thug analyzes content using static and dynamic analysis and logs results using MAEC format. Future work includes improving DOM emulation and JavaScript analysis to better identify vulnerabilities and exploit kits. The source code for Thug will be publicly released after the presentation.
The document introduces Android programming and provides an overview of key concepts including:
- Android applications are developed using Java and compiled into APK files to run on the Android operating system which uses a Linux kernel and Dalvik virtual machine.
- The AndroidManifest.xml file contains app metadata and declares app components like activities, services, and permissions.
- UI resources like layouts, drawables, and strings are organized by screen density in folders like res/layout-hdpi. Common layouts include LinearLayout and RelativeLayout.
- Activities display app screens and follow a back stack model. Fragments allow modular reuse of UI.
- Services run in the background, AsyncTask simpl
JIT Spraying Never Dies - Bypass CFG By Leveraging WARP Shader JIT Spraying.pdfSamiraKids
This document discusses bypassing Control Flow Guard (CFG) via Windows Advanced Rasterization Platform (WARP) shader Just-In-Time (JIT) spraying. It begins with background on Direct3D, WARP, shaders, and WebGL. It then explains the basic principle of CFG and known bypass methods. The presentation will demonstrate a new JIT spraying technique to bypass CFG by circumventing restrictions on the WARP JIT engine and reliably achieving CFG bypass. It concludes with a live demo of bypassing CFG on Internet Explorer 11 and Microsoft Edge on Windows 10.
This document summarizes a presentation on Microsoft .NET and C#. It discusses .NET as a set of technologies for connecting information and as an emphasis on web services. C# is presented as a language that combines the safety of Java, ease of Visual Basic, and power of C++. Key aspects of .NET like the Common Language Runtime and class libraries are defined. The document also provides a brief comparison between .NET and J2EE frameworks and languages.
This document provides a step-by-step guide for creating a Windows 8 Metro-style game from a programmer's perspective. It covers setting up the game, coding it, and optimizing it. The coding section discusses app initialization, opening a window, rendering graphics, loading and saving data, adding input controls, adding sound effects, and creating an asset pipeline. The sample code uses C++ and Windows Runtime APIs to access devices, services, and graphics through DirectX.
Similar to Porting and Maintaining your C++ Game on Android without losing your mind (20)
EPID is a digital signature scheme that allows for anonymity and privacy. It uses a single public key that corresponds to multiple private keys, so the private key used to generate a signature cannot be identified. EPID signatures can be verified using the group public key. EPID provides granular revocation mechanisms and has been shipping since 2008 in Intel processors. It is used for technologies like Intel Insider, Intel TXT, Intel IPT and Intel SGX.
This document is a presentation from Intel about their Internet of Things (IoT) developer platform and tools. It introduces Intel's IoT reference architecture and developer kit, which includes hardware boards, middleware libraries, cloud connectors, and integrated development environments. It provides examples of code samples and reference applications that developers can use to prototype and develop IoT solutions using Intel technologies.
Cisco Paris DevNet Hackathon slideshow - IntroBeMyApp
This document outlines an agenda for a 48-hour hackathon in Paris to invent the city of the future. It will include presentations from Cisco and various technology partners on topics like smart cities, Internet of Things, and cloud platforms. Participants will then pitch project ideas before forming teams and beginning development. Over the weekend, teams will work on their projects, receive mentoring, and do practice pitches. On the final day, projects will be presented to a jury for cash prizes. The goal is to generate innovative ideas for connecting people, data, and devices to improve city services.
Tumeurs Neuroendocrines : une vue d'ensembleBeMyApp
Le Dr Olivier Dubreuil donne une vue d'ensemble des Tumeurs Neuroendocrines via une présentation donnée au cour de la soirée Idéation du hackathon NET Patient Accelerator qui a eu lieu le 30 avril 2016 à la Zalthabar.
Building your first game in Unity 3d by Sarah SextonBeMyApp
Learn to create a 3D isometric survival shooter called Nightmares using Unity 5 in this hands-on workshop. Although this workshop is beginner-friendly, you need to understand mathematical 3D concepts.
Using intel's real sense to create games with natural user interfaces justi...BeMyApp
As technology advances, more sophisticated ways of interfacing with it are emerging. Even though new tech strives to make our apps more intuitive and easy to use, designing interfaces for those apps is not quite as straight forward. We’ve learned a few rules and “gotchas” when working with gesture cameras that can help to make apps that use them easy and fun to use.
In this talk Justin described:
1. Different data types you can get from Intel® RealSense™ and how to get them
2. Designing an interface for a gesture camera
3. Using your hands, face, and voice as an interface
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsBeMyApp
We used the Intel RealSense SDK In conjunction with the R200 Camera to bring about the fun, interactive and tactile gameplay featured at GDC16. Using Intel® RealSense™ we were able to create a unique gameplay experience with every play through, as the players themselves sculpted the terrain the game used out of sand which was monitored by the camera and our code effectively translated the profile of the sand into a terrain. In this talk we’ll use one of the realsense samples to step through and gain an insight into how that depth data is translated into a usable game object in Unity3d.
In this talk, Jon described:
1. Features we used in the Magic and Magnums Tower Defense game
2. Using the Blob Sensing and tracking actions provided in the Unity Toolkit for Realsense
3. Using the Realsense Depth feed to manipulate meshes
Unity 5 introduces a new Audio Mixer system to take your game’s music and sound effects to the next level! Andy will give a hands-on, in-editor demo of all the new Audio Features introduced in the latest version of the Unity game engine; covering in-game sound mixing, groups, applying effects, audio ducking, fading and more!
This talk is welcome to all but at least some Unity knowledge will be useful.
Shaders - Claudia Doppioslash - Unity With the BestBeMyApp
Shader programming is one of the things that most influences how good your game will look, yet it's perceived as a black art, hidden away and feared.
In this talk, Claudia described:
1. How shader programming works
2. How Unity lets you take almost full control of the shader subsystem
3. What you can achieve with that control
4. How to implement a custom Physically Based Lighting system and the logic behind every choice
[HACKATHON CISCO PARIS] Slideshow du workshop Smart CityBeMyApp
Slideshow du workshop Smart City organisé le mercredi 23 mars au NUMA. Ce workshop est organise dans le cadre du hackathon Smart City les 1-3 avril prochain.
Before Spécial 1ère Année proposé par BeMyApp le 8 mars 2016 à l'École 42. Tous les bons conseils, astuces, liens pour des Softwares | Applications pour bien réussir un Hackathon.
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateurBeMyApp
Slideshow de présentation diffusé lors du workshop idéation / soirée pitch à l'Usine io le lundi 1er février. Cet événement a été organisé dans le cadre du Programme E-résidents.
http://hackathon.dalkia.fr/
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...BeMyApp
Dans le cadre du hackathon E-résidents, nous organisons deux webinars de 30 minutes chacun les mardi 19 et 26 janvier à 18h.
Pour cette première immersion au sein du bâtiment connecté, ce sont les deux supers mentors Jean-Yves Lépine et Patrick Quach respectivement Directeur des Relations Clients chez Dalkia et Product Manager chez Intent Technologies, qui expliqueront en détail les différents métiers (gestionnaire de patrimoine, exploitant, fournisseurs de services, occupants, etc...). Ils aborderont les problématiques de chaque acteur ainsi que des idées d'applications à développer et/ou existantes. Une session de questions/réponses suivra.
18h - Introduction par Alex de BeMyApp
18h05 - Présentation des métiers du bâtiment connecté
18h25 - Idées & inspirations pour le hackathon
18h30 - Q&A
Pour rappel, le hackathon E-résidents aura lieu les 5-7 février prochain à l'Usine io. Le workshop Idéation est complémentaire de ce webinar, il prévu le mardi 2 février toujours à l'Usine io.
[IoT World Forum Webinar] Review of CMX Cisco technologyBeMyApp
Cisco's CMX provides location detection, visibility, and engagement capabilities through Wi-Fi, BLE, and video technologies. It uses the MSE for location calculation and WLC/APs to collect client RSSI data. The CMX Mobile App Server hosts applications and Notification Receivers subscribe to location events. CMX's REST API allows extracting real-time location data for various use cases like improving customer experience in retail, banking, hospitality, and healthcare industries.
This document provides an overview of user experience (UX) design. It discusses what UX is, how to deliver good UX by understanding users' needs and goals, envisioning key use cases, creating feature lists, prototyping solutions, testing prototypes with users, and following usability heuristics like ensuring visibility of system status and matching systems to the real world. The document aims to provide both high-level and practical tips for designing more usable solutions that solve problems and meet user needs.
HP Helion Webinar #5 - Security Beyond FirewallsBeMyApp
Giuseppe Paternò is an IT security expert who has worked with many large companies. He discussed security issues with OpenStack and cloud applications. Neutron provides software-defined networking and security groups for network segmentation. Keystone handles identity management. APIs must be secured to protect resources and authentication tokens. Continuous security practices like automated testing and monitoring help harden the cloud platform.
HP Helion Webinar #4 - Open stack the magic pillBeMyApp
We will go through a quick overview about the 5 years of OpenStack cloud computing platform. This webinar explains the short history of this fast growing open-source initiative, and try to answer the common questions about the place of infrastructure and platform services in the IT hierarchy.
The technology is ready, but are we ready for the cloud adoption? Does it really solve our business problems? Learn the basic terminology, get an insight about the IT operation and development transition steps required to win the efficiency race.
Infrastructure Challenges in Scaling RAG with Custom AI modelsZilliz
Building Retrieval-Augmented Generation (RAG) systems with open-source and custom AI models is a complex task. This talk explores the challenges in productionizing RAG systems, including retrieval performance, response synthesis, and evaluation. We’ll discuss how to leverage open-source models like text embeddings, language models, and custom fine-tuned models to enhance RAG performance. Additionally, we’ll cover how BentoML can help orchestrate and scale these AI components efficiently, ensuring seamless deployment and management of RAG systems in the cloud.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
4. Overview
NDK recap
What goes where? C++ vs Java
Streamlining packaged app data
Eliminating Data Duplication
Compiling multiple architectures
Other quirks we’ve run into
Some downloads info about our apps
7. NDK
Android.mk
(shared lib – loaded by java)
LOCAL_MODULE := libGHEngine
LOCAL_SRC_FILES :=
../../GHEngine/obj/local/armeabi/libGHEngine.a
include $(PREBUILT_STATIC_LIBRARY)
LOCAL_STATIC_LIBRARIES += libGHEngine
include $(BUILD_SHARED_LIBRARY)
$(shell cp libs/armeabi/libGHBowling.so
../../../GHBowlingBase/libs/armeabi)
8. NDK
JNI
Loading the C++ Library
public class GHBowlingBaseActivity
extends Activity {
static {
System.loadLibrary("GHBowling");
}
}
Loads the file named libGHBowling.so
9. NDK
JNI
Java (calling C++)
public class GHEngineInterface {
public native void runNativeFrame();
public native void launchNativeApp(int windowWidth,
int windowHeight,
String externalStoragePath,
int isTablet,int iapIsOn);
//resizeWindow, handleTouchStart, handleTouchEnd, handleTouchPos
//handleAcceleration, handleJavaPause, handleJavaResume,
//handleJavaShutdown,handleBackPressed, calculatePublicKey,
//onInterstitialRewardGranted,onRewardInterstitialAvailabilityChange,
//onInterstitialDismiss, loadFile,handleTextureLoadConfirmed,
//onAdActivation, onAdDeactivation, onIAPPurchase
}
13. What goes Where?
C++ or Java
C++
Java
All your platform-independent/pre-existing code
Bare minimum wrapper for Android implementation of
platform services
Typical Android platform code
Middleware integration
Can swap middleware vendors of the same service
without touching C++
Exceptions:
OpenGL (initialization in Java, most code in C++ or GLSL)
File I/O (mix of Java, C++)
14. What Goes Where
Java
OpenGL initialization
Sound through SoundPool
File handle loading through AssetManager
Image loading through BitmapFactory
Google Play, In-App Billing, etc
Ads and other middleware integration
AdMob, AdColony, Chartboost, PlayHaven, Facebook, etc
Input Handling
(touches, accelerometer, buttons/gamepad)
15. What Goes Where
C++
All your game code
OpenGL rendering code
Ideally 90% of your app
Need to handle reinit after lost device
fopen using file handle from Java
Thin wrapper over JNI calls for
everything else
16. What Goes Where
Our code distribution.
2800 lines Java
1600 in base project
1200 in master project
Includes middleware integration
50k-150k lines C++
Varies depending on game
6400 Android-specific C++
17. Eliminating Data Duplication
Problem
Eclipse wants all data underneath
project
We want to reuse data (between
projects) in our own directory structure
We hate maintaining multiple copies of
the same data files.
18. Eliminating Data Duplication
Solution
Batch file/shell script to copy data
On Mac
cp ../../../../../data/GHBowling/ballrollloop.wav
../../../GHBowling/assets/ballrollloop.wav
cp
../../../../../data/Bowling/GHBowlingAndroid/backwall.jpg ../.
./../GHBowling/assets/backwall.jpg
On Windows
copy ..........dataGHBowlingballrollloop.wav
......GHBowlingassetsballrollloop.wav
copy
..........dataBowlingGHBowlingAndroidbackwall.jpg ...
...GHBowlingassetsbackwall.jpg
19. Eliminating Data Duplication
Batch File Generation
Tool for initial generation
Looks through set of directories with a specified
order of preference
Some files are different per-platform
We may have Android-specific files
We may not, but we prefer iOS-specific to generic
Downside: some unnecessary files get copied
Maintenance usually done by hand
20. Packaged App Data
Problem
Data is packaged through Android build
process
All files except those with certain
excluded file extensions (precompressed file types) are
automatically compressed.
Platform-agnostic file reading code
doesn’t know to uncompress: sees
garbage
22. App Data Compression
Solution
One option: forgo Eclipse and pass –0
to the AAPT via command line
(universally or for certain extensions)
What we do
cp
../../../../../data/GHBowlingiOS/arrowpixel.glsl ../
../../GHBowling/assets/arrowpixel.glsl.mp3
23. Compiling for x86
(or other architectures)
In Application.mk:
APP_ABI := x86 armeabi
Supported values:
armeabi
armeabi-v7a
x86
mips
all
24. Compiling for x86
Problem
Shared library Android.mk needs to
include the correct static library for each
architecture
For arm: /armeabi/libGHEngine.a
For x86: /x86/libGHEngine.a
25. Compiling for x86
Solution
include $(CLEAR_VARS)
LOCAL_MODULE := libGHEngine
LOCAL_SRC_FILES :=
../../GHEngine/obj/local/$(TARGET_ARCH_ABI)/libGHEngine.a
include $(PREBUILT_STATIC_LIBRARY)
26. Building on Windows
Problem
We really like verbose filenames
GHBowlingYellowBallThrowWith190Degre
eSpinTransitionXMLLoaderTransition.cpp
Our GHEngine project has lots of files
Linker includes all of those filenames in
one shell command
Exceeds maximum line length on
Windows cmd (8191 characters)
27. Building on Windows
Problem
We really like verbose filenames
Ok, more like
GHGUIPopTransitionXMLLoader.cpp
Our GHEngine project has lots of files
Linker includes all of those filenames in
one shell command
Exceeds maximum line length on
Windows cmd (8191 characters)
28. Building on Windows
Solution
In Android.mk:
LOCAL_SHORT_COMMANDS := true
Build system generates intermediate list
file and then invokes it with a much
shorter command line
Downside: slower compiles
Can use only in projects that need it.