поддержке индивидуальной предпринимательской
инициативы//Министерство экономического развития, 2018г // URL: http:// smb. gov.ru/ files/images/Doklad_Mmekonomrazvitiya_za_2016-2017_gg..pdf
3. Итоги 2017 года для малого и среднего предпринимательства//Блог И. Хандрикова, дата публикации 16.01.18г // URL: https ://www.yabloko.ru/blog/2018/01/16
4. Оборот организаций годовой (без субъектов малого предпринимательства и пр.) Данные Росстата // URL: http://www.gks.ru/free_doc/new_site/business/prom/oborot.htm
5. Россия в цифрах. 2018: Крат.стат.сб./Росстат- M., 2018 - 522 с. // URL: http://www.gks.ru/free_doc/doc_2018/rusfig/rus18.pdf
6. Центр статистики МСП. Сведения ЕГРЮЛ // URL: https ://rcsme.ru/ru/ statistics
7. Степанова А.И. Особенности российского предпринимательства на современном этапе // Успехи современного естествознания. - 2018. - № 11. -С. 44-47 - URL: http://www.natural-sciences.ru/ru/article/view?id=10744
УДК 004
Васильев В.И. студент 2 курс
факультет «Информационные системы и технологии» Северный Арктический федеральный университет, Высшая школа информационных технологий и автоматизированных систем
Россия, г Архангельск СОЗДАНИЕ ИГРОВОГО ПРИЛОЖЕНИЯ В СРЕДЕ РАЗРАБОТКИ
ИГР UNITY
Аннотация: Статья посвящена знакомству с работой в среде разработки игр Unity. А так же работе со встроенным сетевым сервисом Unet. Кроме того в данной работе рассказывается про пошаговое создание мультиплеерной игры в среде разработки Unity.
Ключевые слова: Unity, разработка игры, кроссплатформенность, мультиплеер, компьютерная игра.
Vasilyev V.I.
Student, 2 year, faculty "Information Systems and Technology " Northern Arctic Federal University, Graduate School of Information
Technology and Automated Systems Russia, Arkhangelsk
CREATING A GAMING APPLICATION IN GAME ENGINE UNITY
Annotation: The article is devoted to getting acquainted with the work in the Unity game development environment. As well as working with the built-in Unet network service. In addition, this paper describes the step-by-step creation of a multiplayer game in the Unity development environment.
Keywords: Unity, game development, cross-platform, multiplayer, computer
game
Для создания игры воспользуемся межплатформенной средой разработки компьютерных игр - Unity. Для этого нам нужно скачать само средство разработки на компьютер. После этого создадим проект в 2D шаблоне как показано на рисунке 2._
Unity 2017,4.11f1
Projects Learn
Project name
U New ß Open (J) My/
Template
Organization
vladmater
( ON Enable Unity Anal/tics (?)
Cancel I Create project
Рисунок 2 - Создание проекта
Затем в открывшемся проекте создаем три папки во вкладке project: Prefabs, Scripts, Sprites как показано на рисунке 3
Я Project | .[fi Console
Favorites
.All In Prog res All Modified . All Conflicts .All Excluded O; All Materials
All Models ■Q; All Prefabs
I Prefabs
Ш Scripts Ш Sprites
P Л j % I -
Scripts Sprit
Рисунок 3 - Создание папок
Далее переходим в папку Sprites и создаем там Square, как показано на рисунке 4.
А
► II н
'¡= Hierarchy
С Game
Create >
Collaborate >
Show in Explorer
Open
Delete
Open Scene Additive
Import New Asset...
Import Package >
Export Package,..
Find References In Scene
Select Dependencies
Refresh Ctrl+R
Reimport
Reimport All
Extract From Prefab
Run API Updater...
Open C# Project
Folder
C# Script Shader Testing Playable!
Assembly Definition
Scene Prefab
Audio Mixer
Material Lens Flare Render Texture Lightmap Parameters Custom Render Texture
Sprite Atlas Sprites
Tile
Animator Controller Animation
Animator Override Controller Avatar Mask
Timeline
Physic Material Physics Material ZD
GUI Skin Custom Font
Legacy
UlElements View
[ Г Coll
QAs
>
m
Рисунок 4 - Создание Square Перетаскиваем Square на Scene продемонстрировано на 5 рисунке.
и делаем из него игрока, как
Л
Рисунок 5 - Создание игрока
После этого переходим в Inspector и задаём нашему игроку свойства Transform,Sprite Render,Ridgitbody2D, что показано на рисунке 6.
* л Transform
Position Rotation Scale
X -0,03
X 0
Y -Ü.02 Z 0 ~ Y "û Z 0
X 0.423723E Y 2.203321 Z 1
rite Reil derer
Sprite Color Flip
Material Draw Mode
[Square
□ X □*
Sprites-Default
Simple
Sorting Layer Order in Layer Mask Interaction
Default
I None
■V Rigidbody 2D _
Body Type I Dynamic
The type of the rigidbody,
one (Physics Material 2D)
гта I lI l*_ Li
Use Auto Mass Mass
Linear Drag Angular Drag Gravity Scale Collision Detection Sleeping Mode Interpolate Constraints Info
0.05
Start Av.'ake
У Вон Collider 2D
Edit Collider
Material
Is Trigger
Used By Effector
Used By Composite
Auto Tiiing
Offset
Size
Edge Radius Info
0 Y 0
1 Y 1
Ejft,
jLie,
о
о
!
Qft,
о
(Lja.
None (Physics Material 2D)
□
□ □
Рисунок 6 - Свойства игрока
А так же зададим свойства необходимые для работы с мультиплеером Network Identity, Network Transform, как продемонстрировано на рисунке 7.
▼ ® Network Identity (Script) Q
Server Only cannot be set for Local Player Authority objects Local Player Authority
T© ® Network Transform (Script) Q
Network Send Rate [9
Transform Sync Mode Sync Rigidbody 2D__ij
Movement:
Movement Thresholc 0.001 Velocity Threshold 0.0001 Snap Threshold 5 Interpolate Moveme 1 Rotation:
Rotation Axis [ Z (Side-on 2D)_¡J
Interpolate Rotation 1
Compress Rotation [ None Г|
Sync Angular Velocii_J
Рисунок 7 - Свойства игрока связанные с мультиплеером После этих действий добавим скрипт необходимый для управления ракеткой и взаимодействия игрока с сервером, назовем его Rocket и так же добавим к свойствам ракетки, как продемонстрировано на рисунке 8 и на рисунке 9. После этого перетащим получившийся объект в папку Prefabs.
■r|(jj 0 Rocket (Script) Q»,
Script Rocket О
Speed 0.1
Network Channel 0
Network Send Interval 0,1
Рисунок 8 - Свойства игрока связанные с мультиплеером
Busing unityEngine;
[using unityEngine.Networking;
Rpublic class Rocket : NetworkBehaviour {
private GameCamera gameCanera; [Syncvar] private int PlayerNumber;
[serializeField] private float speed = e.if; [Syncvar (hook = "OnPointChanged")] private int points;
public int Points {
get {
return points;
}
set {
if (value > 0 S3 points != value) points = value;
private void onPointchanged(int points) i
ganecamera.updateuI(PlayerNumber, points);
>
private void FixedupdateQ {
if (!isLocalPlayer) return;
if (input.GetKey(KeyCode.upArrow) && transforo.position.y < GameCanera.Size.y - transform.localScale.y/2) transform.Translate(0, speed, ©);
else if (input.GetKey(KeyCode.DownArrow) && transform.position.y > -GameCamera.size.y + transform.localscale.y/2) transform.Translated, -speed, 0);
public override void onstartLocalPlayer() {
Getcomponent<spriteRenderer>().color = new Color(0.3f, I20f, 2S5f, 25Sf); base.onstartLocalPlayerQ;
if (isServer)
PlayerNumber = 1;
private void Awake() {
gamecamera = camera, main. Getcomponent<GameCar>era>();
>
Рисунок 9 - Скрипт Rocket
Для того что бы игра могла работать по сети нам нужно в окне Scene добавить элемент NetworkManager как показано на рисунке 10.
А
":= Hierarchy
à ■ =
Create * "о-All
Scene*
Main Camera Network Manager
Рисунок 10 - Добавление NetworkManager
И задать ему свойства в окне Inspector: Transform, Network Manager HUD и Network Manager, который затем мы перепишем в скрипте Custom Network Manager. Свойства объекта показаны на рисунке 11.
Ü Asset Store Services
ф Inspector
0 ÖJ NetworkManager
! ■ Static
Tag Untagged
Layer Default
Transform
Position X 0 Y 0 z 0
Rotation X 0 Y 0 z 0
Scale X 1 Í 1 z .1
' l&j Custom Network Manager (Script)
Don't Destroy on Load
Run in Background
ivT
Info
Offline Scene *3None (Scene Asset) О
Online Scene <.;None (Scene Asset) О
Network Info Spawn Info
Player Prefab Player
Auto Create Player
Player Spawn Method Random
Registered Spawnable Prefabs:
Ball 1 Ball 1 О
+ ■ ■■
Advanced Configuration Use Network Simulator
Script Players
CustomNetworkManager
Ш ^/Network Manager HUD (Script)
Show Puntime GUI /
GUI Horizontal Offset 0 GUI Vertical Offset 0
Add Component
Рисунок 11 - Свойства NetworkManager
А
Далее нужно написать скрипт Custom Network Manager, Который будет наследоваться от Network Manager, но иметь с ним различия, так как это нужно для корректного появления на сцене игроков и игрового мяча, скрипт Custom Network Manager продемонстрирован на рисунке 12.
1 ;-using unityEngine;
2 using unityEngine.networking;
3 using System.Collections,Generic;
4
5 --public class custamNetborfcM&nager : Netdorkp.anager {
fi 7 S 9
ie il
12
13
14
15 IS 17 13
19
20 21 22
23
24
25
26
27
28
29
30
31
32
33 3+
35
36
37 ЗЯ 39 46
41
42
43
public List<Rocket> Flayers = new List<Rocket>(); ^region singleTon
public static ajstomNetuiorki'lanager instance { get; private set #endregion
private void Awak«{) <
Instance = ttiis;
}
private void InstantisteEalli)
i
Gareotiject ball = Instatitiate(sFawnPrefabs[8]);
wetworkserver.spawn(bal1);
Debu^,Log("123lr)i
}
public override void OnServerAddPlayer{NetHorkConneccion ccnn, short playerControIIerld) i
Debug.Log("2K);
var currentPlayercourvt - Metworkserver.connections.count; if (currentPI ayerCuunt <= startPcsitions.Count) t
Debug.Lcg("i"); if (currentPlayerCount == 1) InstantiateBall();
Eameobiect player = Instantiatefplayerprefaij, startPcsitions[currentPlayercount - 1].position, Quaternion.identity]; NetuorkSe rver,Ad dpi ayer ForCon ne ctionf con п, player, playerCont го 1lerld J; Flayers. Add (player.GetCompone nt<Rocket>(]);
}
else
{
conn.Di5connect();
J
>
Рисунок 12 - Скрипт CustomNetworkManager
Затем создадим игровой мячик перейдя в папку Sprites и создав Sircle, как показано на рисунке 13.
А
Create
Collaborate
Show in Explorer
Open
Delete
Open Scene Additive Import New Asset.,, Import Package Export Package.., Find References In Seer Select Dependencies Refresh Reimport Reimport All Extract From Prefab Run API Updater... Open C# Project
Folder C# Script Shader
Playsbles
Assembly Definition
Scene
Prefab
Audio Mixer
Material
Lens Flare
Render Texture
Lightmap Parameters
Custom Render Texture
Sprite Atlas
Tile
Animator Controller
Animator Override Controller Avatar Mask
Physic Material Physics Material 2D QUI Skin Custom Font
LflElements View
V
Polygor
Рисунок 13 - Создание Circle Перетаскиваем Circle на Scene и делаем из него игровой мяч, как
продемонстрировано на 14 рисунке.
Рисунок 14 - Создание игрового мяча
После этого переходим в Inspector и задаём нашему мячу свойства Transform,Sprite Render,Ridgitbody2D, Cirlce Collider что показано на рисунке 15.
Q Asset Store Services О Inspector a ■
I
/ Ball 1 □ Static »
Tag Untagged т Layer Default : 1
Prefab Select Reveit Apply
■4, Transform Q
Position X -3.43443 Y -2.44810 Z 0
Rotation X 0 V 0 Z 0
Scale X 0.345431 Y 0.345431 Z 0.349431
* Si Sprite Renderer Q
Sprite № Circle о
Color 1
Flip о JÇ pY
Material Sprites-Default G
Draw Mode IS impie
Sorting Layer Default i 1
Order in Layer 0
Mask Interaction . None il
Ш У'Circle Collider 2D Qfc,
Л Edit Collider
Material None (Physics Material 2D) о
Is Trigger Used By Effector m □
Offset X 0 Y 0
Padius 0.5
Info
Rigidbody 2D 0©,
Body Type Dynamic il
Material None (Physics Material 2D) о
Simulated Use Auto Mass У □
Mass 1
Linear Drag 0
Angular Drag 0.05
Gravity Scale 0
Collision Detection Discrete il
Sleeping Mode Stait Awake i 1
Interpolate | None il
Constraints Info
Рисунок 15 - Свойства игрового мяча
А так же зададим свойства необходимые для работы с мультиплеером Network Identity, Network Transform, как продемонстрировано на рисунке 16
® Netvfork Identity (Script) О О.
Server Only
Local Player Authority
© -/ Network Transform (Script) Q
Network Send Rate [9_|
Transform Sync Mode Sync Rigidbody 2D __
Movement:
Movement Thresholt 0.00:.
Velocity Threshold |0.0001 |
Snap Threshold 5 Interpolate Moveme 1 R otation:
Rotation Axis Z (Side-on 2D) _tj
Interpolate Rotation 1
Compress Rotation [ None i ]
Sync Angular Veloci
Рисунок 16 - Свойства игрового мяча, связанные с мулътиплеером После этих действий добавим скрипт необходимый для взаимодействия игрового мяча с сервером, назовем его Ball и так же добавим к свойствам ракетки, как продемонстрировано на рисунке 17 и на рисунке 18. После этого перетащим получившийся объект в папку Prefabs.
▼ I&J 0Ball (Script) L. От
Script Eal! Q
Speed 0.2
Network Channel 0
Network Send Interval 0,1
Рисунок 17 - Свойства игрока связанные с мулътиплеером
А
V™ V
3 87
[SerializeField] private float speed = 8.2f; private Vectors direction;
1 -using UnityEngine;
using UnityEngine.Networking;
3
4 Epublic class Ball : NetworkBeiiaviour {
5
6
7
8
private void RespawnBallQ IB I {
11 E if (isServer)
{
if (transform.position.X > GameCamera.Size.x)
CustomNetworkKanager.Instance.Players[l] ,Points++; else if(transform.position.x < -GameCamera.Size.x}
Cus tomlfetwfl&cMa nager. Instance. Pi ayer s [6] .Points++;
}
transform.position = Vector^.zero; var x = Random.Range(0.0.70f); var y = Mathf.Sqrt(l - x * x); direction = new Vector2(Xj y);
12
13
14
15
16 17 IS
19
20 21
22 }
23
24 É private void Start()
25 {
26 RespawriBallQ;
27 }
23
29 E private void FixedUpdateQ
{
transform.Translate(direction * speed);
if (Mathf.Abs(transform.position.x) - transf orin. localScale . x / 2 > GameCamera.Size.x) RespawnBall();
if (Mathf.Abs(transform.position.y) + transform,localScale.y / 2 > GameCamera.Size.y) direction = new Vector2(direction.Xj -direction.y);
30
31
32
33
34
35
36
37
private void 0nTriggerEnter2D(Collider2E) col)
{
direction = new Vector2(-direction.x, direction.y);
>
39
40
41
42
>
Рисунок 18 - Скрипт Ball
После этого добавим на уже существующий на сцене MainCamera скрипт GameCamera к которому привяжем счет игры и его отображение на экране, как показано на рисунке 19 и рисунке 20.
А
Ö Asset Store Services ö Inspector
Ы
✓ M
IJ Static ч
Tag i MainCar
±\ Layer Default
Ta Transform
Position Rotation Scale ■ ® Camera Clear Flags Background Culling Mask
Projection Size
Clipping Planes Viewport Rect
Depth
Rendering Path Target Texture Occlusion Culling Allow HDR Allow M S A A Allow Dynamic ResolutkQ
Target Display | Display 1
Y 0
"уГ
Z -10
~ Z<Q
3D 33
3
W1
EH
e Graphics Settings
ï (Render Texture)
Ш И
0
M I^Fiare Layer 0 »T
^ Audio Listener щъ.
▼ (&J @Game Camera (Script) 0 a.
Script GameCamera о
▼ Points Text
Size [2 ï
Element 0 Missing (Text) о
Element 1 Missing (Text) о
Add Component
Рисунок 19 -Свойства GameCamera ï 2
3
4
5
6 7
E-using UinityEngine; using LfnityEngirie.UI; using System.Collect ions.Generic;
Epublic class GameCamera : MonoBehaviour {
[SerializeField] private List<T'ext> pointsText;
E
9 10 11 12
13
14 У В
15
16
17
18
19
20 21 22
23
24
25
26
в:
public static Vector2 size; public static Vector2 Size { get { return size; }
}
public void UpdateUI(int rocketNumber^ int points) i
pointsText[rocketMumber].text = points.ToStriingQ;
void Start () {
Debug.Log("3");
var cam m Camera.main;
size = new Vector2(cam.orthographicSize * cam.aspect, cam. ortliograpliicSize);
}
Рисунок 20 - Скрипт GameCamera
Так же для текста нам необходима будет создать на сцене Canvas который будет содержать в себе два текста, это продемонстрирована на рисунке 21. При создании Canvas на сцену автоматически добавиться элемент EventSystem.
А
GameObject Component Window Help
Create Empty
Create Empty Child
3D Object
ZD Object
Effects
Light
Audio
Video
Ul
Camera
Center On Children
Make Parent Clear Parent
Apply Changes To Prefab Break Prefab Instance
Set as first sibling Set as last sibling M ove To Vi ew Align With View Align View to Selected Toggle Active State
Ctrl + Shift+N Alt+Shift+N
Text
Ctrk = Ctrl-ь-Ctrl+Alt+F Ctrl + Shift+F
Alt+ Shift+A
Image Raw Image
Button
Toggle
Slider
Scrollbar
Dropdown
Input Field
Canvas Panel
Scroll View Event System
Рисунок 21 - Создание счёта
Готовый проект представлен на рисунке 22.
О
Рисунок 22 - Готовый проект
А
Использованные источники:
1. Руководство пользователя Unity [Электронный ресурс]. Режим доступа: https://docs.unity3d.com/ (дата обращения 19.02.019)
УДК 004
Васильев В.И. студент, 2 курс
факультет «Информационные системы и технологии» Северный Арктический федеральный университет, Высшая школа информационных технологий и автоматизированных систем
Россия, г Архангельск СОЗДАНИЕ ПРИЛОЖЕНИЯ СПРАВОЧНИКА В ANDROID STUDIO
Аннотация: Статья посвящена знакомству с работой в среде разработки приложений Android Studio. А так же работе с файлами разметки. Кроме того в данной работе рассказывается про пошаговое создание приложения справочника.
Ключевые слова: Android Sudio, разработка приложений, Android, справочник. Мобильное приложение.
Vasilyev V.I.
Student, 2 year, faculty "Information Systems and Technology " Northern Arctic Federal University, Graduate School of Information
Technology and Automated Systems Russia, Arkhangelsk CREATING AN APPLICATION OF THE REFERENCE BOOK IN
ANDROID STUDIO
Annotation: The article is devoted to getting acquainted with the work in the development environment of applications Android Studio. As well as working with markup files. In addition, this paper describes the step-by-step creation of a directory application.
Keywords: Android Sudio, application development, Android, reference. Mobile app.
Для начала работы нужно запустить проект в Android studio, выбрать имя проекта, указать минимальную версию на которой будет запускаться приложение и выбрать пустой шаблон как показано на рисунке 1.
А
К91 V
3 91