This is a fun and simple tutorial for game developers since we are going to build a wheel of fortune game. Let’s get started!
Demonstration
Development Procedures
1. Create a Luck class for the main logic
Luck class is inherited from container egret.DisplayObjectContainer
2. Data initialization
3. Create a red button to spin (creatbtn)
Center the button: change the default anchor point of the button in the upper left corner to the center of the button this.btn.anchorOffsetX = this.btn.width / 2; this.btn.anchorOffsetY = this.btn.height / 2; Then make the button position in the center of the entire stage. However, the width and height of the stage cannot be obtained by directly using this.stage.stageWidth since there is nothing on the stage when the button is created. As such, students can create a date class to store global data. In this tutorial, two static attributes STAGEWIDTH and STAGEHEIGHT are directly added to main.ts. The specific methods are as follows:
4. Arrange all the prizes in a circle
You will get the prompt when using comments with /***/. When there are many parameters, you can use @param in the comment line to declare the function of each parameter.
5. Respond to click events
Remove the monitoring of the current click in the ‘click’ event to prevent multiple clicks on button.
In the timer, you can directly use timer.delay to change the delay of the timer in milliseconds.
Stay tuned for updates from the Egretia official channels below so that you can be involved in all the exciting things to come!
1)After the creation via Egretia Launcher, the project will be shown on the list. Then developers can click the release settings
2) Select the Xiaomi Quick Game to create the game
3) After the creation, developers can click the button to release the game
a. Compile the game code to Xiaomi Quick Game: to execute command egret build — target qgame and compile the code in the Egretia project into the Quick Game project;
b. QR code: to install rpk by scanning the QR code on the Xiaomi Quick Game Debugger
c. Release: to execute the command npm run build and build rpk package
d. Debugging: use the USB cable to connect your computer to the Xiaomi device and click the debug button then the debugging interface will start automatically in Chrome
3. Publish to Xiaomi Quick Game by the command line
Method 1: Developers can use the command line to build and release Xiaomi Quick Game
>debug: egretia build — target qgame;
>release: egretia publish — target qgame
Method 2: Deploy the template: egretProperties.json
As it shows, developers can execute the command line egretia build or egretia publish to build and release Xiaomi Quick Game when property current is set to qgame in the configuration files of egretProperties.json
4. Package and release Xiaomi Quick Game by the command line
1)Execute the command line npm run build and generate a dist file. The file com.application.demo.debug.rpk is the Quick Game Project file, which can be debugged on the devices.
2) Generate the Quick Game to be released by executing the command line
npm run release
3) Listed below is the Quick Game structure
4) An overview of directory structure:
egret.qgame.js: Adaptation layer code of Egretia engine and Quick Game;
js folder: js code of the game;
library:the code of local cache of running Xiaomi Quick Game by Assetsmanager can be deleted;
main.js:the entry file of Quick Game;
manifest.js: to load all js codes;
manifest.json: the configuration file of Quick Game
resources: resource files such as pictures and audio of the game
5) manifest.json
6) Parameter:
Package: the name of package;
Name: Application name, within 6 Chinese characters, consistent with the name saved in the application store, used to display the application name on desktop icons, pop-up windows, etc.;
versionName: the application version;
versionCode: The application version number, which is incremented from 1. It is recommended to add 1 to the current version every time the package is re-uploaded;
minPlatformVersion: The minimum supported platform version number (1041), for compatibility check, can avoid the incompatibility caused by running on low version platforms after going online; if not filled in, it will be processed according to the internal test version;
icon: The path of the application icon, the size is 192×192;
orientation: the Supported screen orientation. Portrait is vertical screen, and landscape is horizontal screen. This parameter will be automatically obtained from index.html of the Egretia game project.
4. Debugging
Note: The debugging must be based on the physical device.
1) Install Xiaomi Quick Game Debugger and Xiaomi Quick Game Environment
2) Use a USB cable to connect your computer to your Xiaomi device and copy the generated quick game rpk file to the devices
3) Open the Xiaomi Quick Game Debugger, choose (com.miui.hybrid) and click Local Install, then select the uploaded rpk files to run the game
4) Input chrome://inspect/#devices on the Chrome browser and click Enter to generate com.miui.hybrid. the debugging information will pop out on the screen
Stay tuned for updates from the Egretia official channels below so that you can be involved in all the exciting things to come!
Please note that developers should use EgretiapPro at Version 1.6 or above and Egretia2d engine at Version 5.3.7 or above
Create a project
Firstly, open EgretiaPro, then click Project>Library Project>Create
After the creation, EgretiaPro will automatically open the library project RunningGame which was just created. Then create a RunningScene under the directory of resource/scenes and double-click to open the scene in the scene editor. As shown below:
Create tracks
The track is spliced by three entity Cubes, and the track needs to roll up as the protagonist runs forward. Here we create the track dynamically through components. Use Vscode to open the project you just created, then create a folder game under the src directory to store our component code, and then create the RoadController.ts file in the game directory.
Then add the RoadController component to the Root entity of the scene.
Now click the preview (built-in) (or preview browser) button, and you can see the following effect.
If it looks a bit weird, you can adjust the position and angle of the camera by debugging the camera’s TransForm parameters in the running interface to make the picture look more comfortable.
Add protagonist
Add the protagonist to the scene and let him run forward, as follows:
The first step is to copy the game material BakedAnimation to the project directory resource/assets/a nimations.
In the second step, open the resource/assets/animations/BakedAni mation/Boy_standby_out directory in the EgretiaPro editor explorer, drag and drop the Boy_standby.gltf.prefab.json file into the scene.
The third step is to play the running animation of the protagonist. There are two ways: Method 1: Directly operate in the pro editor. details as follows:
Method 2: Uncheck autoPlay in the pro editor and implement it through scripts. Create a PlayerController file under the game directory; (Remember to hang the PlayerController component on the protagonist entity).
As of now, the protagonist is running on the track. But the player is supposed to move forward. As such, we need to constantly update the position of the protagonist in the onUpdate function and meanwhile make the camera move along with the protagonist at the same speed. Otherwise you will find that your protagonist runs further and further on your screen, getting smaller and smaller.
As the protagonist moves forward, we find that the track under his feet is gone. What we need to do now is to open RoadController.ts component then continue to pave the road while the protagonist moves forward.
Then use the left mouse button to control the protagonist’s movement direction. To change the position of the protagonist by the onUpdate function according to the movement of the mouse.
Add coins
A prefab is a collection of game objects and their components. The purpose is to enable game objects and resources to be reused. The same game object can be created through a prefab. This process can be understood as instantiation. Since the gold coins in the game are scattered all over the runway, it is perfect to make gold coins by prefabs!
How to create a prefab:
1. Open (or create) the resource/perfab directory, and then right-click — “Create prefab coin.perfab.json in the resource manager module;
2. Double-click the prefab just created, right-click in the hierarchy bar → 3D →Sphere;
3. Select the sphere you just created, and select the material item in the property bar, select coin.mat.json.
First, let’s get started with a coin component Coin.ts
Our gold coins are scattered on the runway, so every time we create a runway, we randomly create some gold coins on the runway. The number of gold coins and location are random. Next, you need to add the following logic code to the RoadController.ts component:
Now a lot of gold coins are scattered on the road. But it’s necessary to build a gold coin pool to collect gold coins instead of creating gold coins all the time. So Next we will create a gold coin buffer pool. Add a CoinPool class to the Coin.ts file.
When the gold coin leaves the rendering range of the camera, we should put the gold coin into the buffer pool, and the gold coin entity is not participating in the rendering, so that the gold coin is in a dormant state. We put these processing of gold coins in the system class to do. The system is a tool to handle a collection of entities with one or more identical characteristic components, which only have behavior (that is, there is no state in the system). How to get all the gold coins in our system class?The entity matcher is used to define the rules of a set of entities with certain component characteristics. A clear set of rules can be defined through an instance of the matcher.
In our cases, we first create a gold coin system class CoinSystem.ts in which all the gold coins are collected, and then check whether the gold coins are thrown behind by the player and no need to render in each frame, then those will be returned to the gold coin pool. Look specifically at the following code:
The system does not work like a component directly added to the entity so we need to register the system with the component. Next, add the following two lines of code in PlayerController
We will consider getting them from the buffer pool first when it comes to the creation of gold coins. Modify the crea teCoins() function in RoadController.ts.
The collision
Next, what we must do is to deal with the collision between the gold coin and the protagonist. We need to check each gold coin. If there is a collision with the protagonist, then the gold coin will have an easing animation and then disappear. Thus we still put the behavior of dealing with the collision between gold coins and the protagonist in the CoinSystem.ts system class.
Add UI interface
As of now, 3D scene is complete. Next, we need to add a UI interface to the case, that is, to add some 2d content. Here is an explanation of how to add a UI interface in a 3d scene. The integration of Egretia2d and EgretiaPro. Firstly, to export the 3d scene into a third-party library pro-library; Secondly, to create a 2d project and add the third library pro-library to the 2d project; Thirdly, to upgrade the 2D project and modify index.html.
Lastly, the scene in EgretiaPro is rendered as an Egretia.Texture object. Add Egretia.Texture to the Bitmap object so as to render to the stage through Egretia engine.
After the first three steps, the project directory is as follows:
Then we click the start button to add a parkour scene. See the Main.ts file for details
.But at this time, you may find that the protagonist could not move towards left or right side. What we need to do now is to pass on the 2d touch event to the 3d scene. Then you need to complete the communication through Egretia.pro
Then we need to receive and process the message in the PlayerController of the 3d scene. Details as below:
Now, enter the command in the console: Egretia run -a and run your project!
What are the coolest projects you saw from people using Egretia Pro?
Stay tuned for updates from the Egretia official channels below so that you can be involved in all the exciting things to come!
Development procedure for accessing the Huawei Quick Game:
1. Preparation
>Register as a developer on Huawei Quick Game
>Call APIs such as game sign-in and user information provided by Huawei
> Note that the size of released rpk file is less than 10MB
2. The game creation and package
1)Create a game via Egretia Launcher or import the existing project on Egretia
2) After creating or importing is done, it will be shown on the list. Then developers can click the release settings
3) Select the Huawei Quick Game to create the quick game
4) After the creation, developers can click the button to release the game
Compile the game code to Huawei Quick Game: compile the code in the Egretia project into the Quick Game project;
• The type of game code -debug: js code is not obfuscated by uglify, which is convenient for debugging;
The type of game code -release: the uglify obfuscation and compression for js code;
5) After release, the rpk files will be generated in dist files
6) Huawei Quick Game Structure
• Build directory:
o egret.fastgame.js: Adaptation layer code of Egretia engine and Quick Game;
o game.js: the entry file of Quick Game;
o icon directory: game icons;
o js directory: js code of the game;
o manifest.js: to load dependent js files;
o manifest.json: the configuration file of Quick Game
o resources: resource files such as pictures and audio of the game;
o dist directory: to store compiled rpk files;
o sign: to store signature files;
o signtool: a compilation tool for Quick Game;
7) Through the “Modify Configuration” tab of the Launcher, developers can modify the relevant parameters of Huawei quick game
• Note that developers need to republish the rpk for the new parameters to take effect after modifying the parameters;
The minimum platform version number is 1075;
3. Download and install Huawei Quick App Loader
• Download the Windows/Mac version of the Quick Application Loader Assistant;
Click to select the compiled rpk package, and then install it on the phone
4. About signature files
There are two types of the signature of Huawei Quick Game: debug and release. We provide a default debug signature for developers to package and debug. But if developers want to use platform functions such as log-in and user information, they must use the release signature.
• On the release tab of the Launcher, developers can select Release as the signature type, and click the “Open” button on the right to open a folder, and then import the generated signature file;
• After re-release, the generated rpk package is signed with release;
Note: For signatures generated by Huawei tools, the fingerprint of the certificate must be filled in the project settings in the background of Quick Game.
//shoot once every pass of main loop, the distance is 80
this.vy = -80; //-80 upwards
this.vx = 0 ;
this.dx = this.dy = 0 ;
this.n = 0;
break;
update():
//the special one will be scheduled in advance and automatically executed. The “return” will show up when it finishes.
if(this.id == 10){
//the distances between planes and them
this.dx +=this.vx;
this.dy +=this.vy;
//offset value:base value+offset
// coordinates of laser is base coordinates and changes
this.x = this.game.player.x + this.dx;
this.y = this.game.player.y + this.dy;
// test whether it’s off-screen
if(this.y < -100 ){
this.vis = false;
}
return;
}
>Tracking bullet
Demonstration
Version:1.0
StartHTML:000000275
EndHTML:000053955
StartFragment:000021508
EndFragment:000053873
StartSelection:000021508
EndSelection:000053869
SourceURL:https://medium.com/egretia/create-a-space-shooter-game-egretia-engine-tutorial-for-beginners-part-6-a93d80fc08de
Create A Space Shooter Game | Egretia Engine Tutorial For Beginners Part 6 | by Egretia Io | Egretia | Aug, 2020 | Medium
1)NPC:
NPCManager
//obtain NPC
public getNPC():NPC{
//length>0,NPC exists; if no, bounce off
if(this.nm.length > 0 ){
//if there is npc, choose one randomly
let npc = this.nm[Math.floor(Math.random()* this.nm.length)]