Cryengine

3D Engine

  • Refactored: Terrain layer painting is modified to work with new 3D Engine side texture atlas and without using of any Custom Editor side textures. During painting textures look very close to how they will look after generation.
  • Optimized: Enabled bindless texturing for terrain base pass and for vegetation «use terrain color» feature, 
  • Fixed: (VR, Config) Re-enabled default stereo output.
  • Fixed: Static instancing crash.
  • Fixed: (VR) Re-enable Oculus support.
  • Fixed: Sky-dome initialization on level-reload.
  • Fixed: (VR, Sandbox) Culling when using Sandbox with attached and enabled HMD.
  • Fixed: Missing brushes on Editor start.
  • Fixed: Crash on materials editing.
  • Fixed: Sandbox might crash on start.
  • Fixed: Static Instancing crash.

Action

Action General

  • Refactored: Remove direct #include reference to CryAction files from other modules and include CryAction for every module as include path instead.
  • Fixed: Camera not resetting when exiting game mode after calling SetViewCamera scriptbind.
  • Fixed: A memory management issue with a debug string instance being passed across a dll boundary. Removed the previous ad-hoc workaround for this issue to reduce complexity on the CryAction’s client side.
  • Fixed: Client crash when connecting to servers that did not have sv_pacifist CVar available.

Flowgraph

  • New: Adds blend feature to the Entity:EntityFaceAt flownode. 
  • Fixed: Changing the param of a material on an entity would prevent from changing the entity’s material.

◆ DynamicLightFlags

enum CryEngine.DynamicLightFlags
strong

Flags that can be used to set the parameters of dynamic lights.

Enumerator
AreaSpecTex 

Flag for AreaSpecTex.

Directional 

Flag that indicates this is a directional light.

BoxProjectedCm 

Flag for box projected cubemaps.

Post3DRenderer 

Flag for post 3d renderer light.

CastShadowMaps 

Flag that indicates if this light should cast shadows.

Point 

Flag that indicates this light is a point light.

Project 

Flag that indicates this light is a projector.

IgnoresVisAreas 

Flag for ignoring Vis Areas.

DeferredCubemaps 

Flag that indicates that the cubemaps are deferred.

HasClipVolume 

Flag that indicates this light has a clip volume.

Disabled 

Flag that indicate that this light is disabled.

AreaLight 

Flag that indicates that this light is an area light.

UseForSVOGI 

Flag that indicates that this light is used for SVOGI.

Fake 

No lighting, used for Flares, beams and such.

Sun 

Flag that indicates that this light is the sun.

LM 
ThisAreaOnly 

Affects only current area/sector.

Ambient 

Ambient light (as name indicates, used for replacing ambient).

IndoorOnly 

Does not affect height map.

VolumetricFog 

Affects volumetric fog.

AttachToSun 

Add only to Light Propagation Volume if it’s possible.

TrackviewTimescrubbing 

Add only to Light Propagation Volume if it’s possible.

VolumetricFogOnly 

Affects only volumetric fog.

LightTypeMask 

Mask with the various types of light that are available.

Editor General

  • Fixed: Imported *.fbx file uses ReplaceMe-textures due to missing texture-files in blank-templates.
  • Fixed: Issue where the user was unable to open a Material Editor through the Properties Panel edit button.
  • Fixed: Issue in property rows where clicking the «edit» button wouldn’t actually open the corresponding Editor.
  • Fixed: Fixed backing up a level problem.
  • Fixed: Crash — when leaving the Database View (DB) open (with no separate windows on the taskbar) and then restarting the Sandbox Editor and attempting to close the DB crashed the Sandbox Editor.
  • Fixed: Automatic cryasset generation is disabled for xml, Lua, wav, ogg files and for _autobackup folders. 
  • Fixed: Level not saving after a backup was successfully created. Also fixed auto-backup timer changes (in Preferences) not immediately taking effect.
  • Fixed: Crash when dragging and dropping from Database View (DB) into Viewport.
  • Fixed: Dragging *.abc file into Mesh Importer freezes the Sandbox Editor.
  • Fixed: Restored CurveEditorContent deletion and signaling logic, after change to delayed initialization.

Additional Fixes

  • Fixed: (Renderer, Xbox) Compilation error in RenderDisplayContext on Durango.
  • Fixed: (Renderer) DrawToRenderTarget finding no depth-buffer.
  • Fixed: (Renderer, win32) Wrong calling convention for function table.
  • Fixed: (FBX UI) Properties of imported mesh are not displayed in the Properties-pane.
  • Fixed: (FBX Animation) The root of an imported animation sticks to the origin.

Features[edit]

  • Simultaneous WYSIWYG on all platforms in sandbox editor
  • «Hot-update» for all platforms in sandbox editor
  • Material editor
  • Flow graph
  • Track View Editor
  • Procedural placement tools and cover generation
  • Integrated vegetation and terrain cover generation system
  • Real time soft particle system and integrated FX editor
  • Road and river tools
  • Vehicle creator
  • Fully flexible time of day system
  • Streaming
  • Performance Analysis Tools
  • Visual Budget System
  • Multi-core support
  • Sandbox development layers
  • Resource compiler
  • Natural lighting and dynamic soft shadows with penumbra
  • Irradiance Volume
  • Deferred lighting
  • Real time dynamic global illumination
  • Eye adaptation and high-dynamic-range (HDR) lighting
  • Screen space ambient occlusion
  • Color grading
  • «Uber Shader» technology
  • Blend Layer
  • Normal maps and parallax occlusion maps
  • Motion blur and depth of field with sprite-based bokeh
  • High quality 3D water
  • Dynamic volumetric light beams and light shaft effects
  • Volumetric, layer and view distance fogging
  • Screen Space Directional Occlusion (SSDO)
  • Tessellation (computer graphics) and Displacement Mapping
  • Screen-space reflections
  • Particles motion blur and shadows
  • Character animation system
  • Character individualisation system
  • Parametric skeletal animation
  • Procedural motion warping and IK solutions
  • Facial animation editor
  • Subsurface scattering
  • AI editing system
  • Dynamic pathfinding
  • Layer Navigation Mesh
  • Automated navigation mesh generation
  • Tactical Point System
  • Integrated multi-threaded physics engine
  • Deformables and soft body physics
  • Interactive and destructible environment
  • Rope physics
  • In-game sound mixing and profiling
  • Data-driven sound system
  • Dynamic sounds and interactive music
  • Environmental audio
  • Key frame-accurate sounds in animations
  • Sound moods
  • Water volume caustics
  • UV mapping editor
  • PBR (Physically Based Rendering)

Мнимые плюсы при работе с CryEngine

Но почему тогда некоторые компании до сих пор его используют?

У него отличный realtime render — это раз.

В комплекте идет GameSDK — это два.

GameSDK — это полноценный шутер, который можно модифицировать под свои нужды. Аналог старого доброго Source Engine, на базе которого родилось множество отличных игр.

GameSDK 

Но есть проблема. В прошлом году Crytek официально заявил об отказе от дальнейшего развития GameSDK. И сейчас движок находится в промежуточной стадии развития, которую не факт, что переживет. Многие старые инструменты удаляются, код тотально переписывается. Сейчас готов новый Shooter Game, но он пока на очень ранней стадии развития.

Третья причина, по которой до недавнего времени можно было ценить движок, заключалась в том, что он был бесплатным. Но с версии движка под номером 5.5 Crytek придется отдавать 5% с продаж.

На это все мы в свое время и купились. Когда стало ясно, что движок не отвечает нашим требованиям, разработка шла уже несколько месяцев — назад было поворачивать слишком поздно (хотя стоило бы).

Разработка

Комплект разработчика программного обеспечения (SDK) CryEngine , первоначально называвшийся Sandbox Editor, представляет собой текущую версию редактора уровней, используемого Crytek для создания уровней для CryEngine . В программном обеспечении также предусмотрены инструменты для облегчения написания сценариев , анимации и создания объектов. Он был включен в различные игры Crytek (включая, помимо прочего, Crysis и Far Cry ) и широко используется для моддинга . Стиль редактирования аналогичен концепции песочницы с упором на большие территории и свободный стиль программирования миссий. Редактор также может создавать внутренние настройки.

В отличие от таких редакторов, как UnrealEd , которые используют «субтрактивный» стиль редактирования, который удаляет области из заполненного мирового пространства, Sandbox имеет «аддитивный» стиль (например, Quake II ). Объекты добавляются к общему пустому пространству. Концентрация песочницы на потенциально огромной (теоретически, сотни квадратных километров) местности означает, что она использует алгоритмическую форму рисования текстур и объектов на ландшафте. При этом используются различные параметры для определения распределения текстур или типов растительности. Это предназначено для экономии времени и обеспечения возможности редактирования таких больших территорий при сохранении общего стиля свободного роуминга «песочницы» в «реальном мире». Это отличается от некоторых стилей редактирования, которые часто используют «поддельные фоны», чтобы создать иллюзию больших ландшафтов.

В моде, несколько сравнимой с 3D Renderer Blender , который можно использовать для игрового дизайна, редактор Sandbox имеет возможность одним нажатием клавиши перейти прямо к текущему дизайну (WYSIWYP, «What You See Is Во что вы играете »). Это упрощается без загрузки игры, поскольку игровой движок уже запущен в редакторе. Вид «игрока» отображается в трехмерной части редактора. Редактор также поддерживает все функции CryEngine, такие как автомобили и физика, сценарии, расширенное освещение (в том числе в реальном времени, движущиеся тени), технологию Polybump , шейдеры, 3D-звук, обратную кинематику персонажей и наложение анимации, динамическую музыку, систему мягких частиц в реальном времени. и интегрированный редактор эффектов, отложенное освещение, карты нормалей и параллакс-окклюзии, а также усовершенствованная модульная система искусственного интеллекта.

External links[edit]

Wikimedia Commons has media related to .
vteCrytek
Games
Crysis series
  • Crysis

    Warhead

  • Crysis 2
  • Crysis 3
Other games
  • Far Cry
  • Warface
  • Ryse: Son of Rome
  • Hunt: Showdown
  • The Climb
  • Robinson: The Journey
  • Arena of Fate
Subsidiaries
  • Crytek Black Sea (2008–17)
  • Crytek UK (2009–14)
  • Crytek USA (2013–14)
People
  • Cevat Yerli
  • David Doak
  • Graeme Norgate
Related
  • Dambuster Studios
  • Amazon Lumberyard
vteGame engines (list)
  • Source port
  • First-person shooter engine

    list

  • Game engine recreation

    list

  • Game creation system
  • List of visual novel engines
  • id Tech
Proprietary
1980s
  • Filmation
  • Freescape
  • SCUMM
1990s
  • Dark Engine
  • FaceGen
  • GameMaker
  • Genie Engine
  • GoldSrc
  • iMUSE
  • INSANE
  • Jedi
  • Mugen
  • Pie in the Sky
  • Reality Lab
  • RenderWare
  • RPG Maker
  • Sim RPG Maker
  • Truevision3D
  • Unreal Engine
  • Virtual Theatre
  • Voxel Space
  • Zero
  • Zillions of Games
2000s
  • AnvilNext
  • C4 Engine
  • Chrome Engine
  • Crystal Tools
  • Diesel
  • Ego
  • Essence Engine
  • Euphoria
  • Flare3D
  • Frostbite
  • Gamebryo
  • GameSalad
  • Gamestudio
  • Havok
  • HeroEngine
  • IW
  • LithTech
  • Marmalade
  • MT Framework
  • Q
  • RAGE
  • SAGE
  • Shark 3D
  • ShiVa
  • Silent Storm engine
  • Source
  • SpeedTree
  • Star Engine
  • Titan
  • Unigine
  • Unity
  • Vicious Engine
  • Vision
  • Visual3D Game Engine
2010s
  • 4A Engine
  • Amazon Lumberyard
  • Autodesk Gameware
  • Bitsquid
  • Construct
  • Creation Engine
  • Decima
  • Felgo
  • Fox Engine
  • id Tech 5
  • id Tech 6
  • Ignite
  • Kynapse
  • Luminous Engine
  • Nvidia GameWorks
  • Panta Rhei
  • RE Engine
  • Snowdrop
  • Source 2
  • UbiArt Framework
2020s
Freeand/oropen-source
1970s
1990s
  • Adventure Game Studio
  • Build
  • Crystal Space
  • Doom engine
  • Game-Maker
  • OHRRPGCE
  • Quake engine
  • Stratagus
2000s
  • Away3D
  • Blender Game Engine
  • Bork3D Game Engine
  • Cafu Engine
  • Cocos2d
  • Dim3
  • Game Editor
  • id Tech 3
  • id Tech 4
  • Irrlicht Engine
  • jMonkeyEngine
  • Lightweight Java Game Library
  • Löve
  • OGRE
  • Open Wonderland
  • Panda3D
  • Papervision3D
  • PhyreEngine
  • Plasma
  • Platinum Arts Sandbox
  • Pygame
  • Quake II engine
  • Ren’Py
  • Scratch
  • Solar2D
  • Spring Engine
  • Thousand Parsec
  • Torque
  • Vassal Engine
  • Wintermute Engine
2010s
  • Delta3D
  • Godot
  • GPUOpen
  • Horde3D
  • libGDX
  • Moai
  • OpenFL
  • ORX
  • PlayCanvas
  • Stencyl
  • Stride

◆ PhysicsEntityFlags

enum CryEngine.PhysicsEntityFlags
strong

General flags for PhysicsEntity-parameters

Enumerator
None 

No flags

TraceableParts 

Each entity part will be registered separately in the entity grid

Disabled 

Entity will not be simulated

NeverBreak 

Entity will not break or deform other objects

Deforming 

Entity undergoes dynamic breaking/deforming

PushableByPlayers 

Entity can be pushed by players

Traceable 

Entity is registered in the entity grid

ParticleTraceable 

Entity is registered in the entity grid

RopeTraceable 

Entity is registered in the entity grid

Update 

Only entities with this flag are updated if ent_flagged_only is used in TimeStep()

MonitorStateChanges 

Generate immediate events for simulation class changed (typically rigid bodies falling asleep)

MonitorCollisions 

Generate immediate events for collisions

MonitorEnvChanges 

Generate immediate events when something breaks nearby

NeverAffectTriggers 

Don’t generate events when moving through triggers

Invisible 

Will apply certain optimizations for invisible entities

IgnoreOcean 

Entity will ignore global water area

FixedDamping 

Entity will force its damping onto the entire group

MonitorPoststep 

Entity will generate immediate post step events

AlwaysNotifyOnDeletion 

When deleted, entity will awake objects around it even if it’s not referenced (has refcount = 0)

OverrideImpulseScale 

Entity will ignore breakImpulseScale in PhysVars

PlayersCanBreak 

Players can break the Entiy by bumping into it

CannotSquashPlayers 

Entity will never trigger ‘squashed’ state when colliding with players

IgnoreAreas 

Entity will ignore phys areas (gravity and water)

LogStateChanges 

Entity will log simulation class change events

LogCollisions 

Entity will log collision events

LogEnvChanges 

Entity will log EventPhysEnvChange when something breaks nearby

LogPoststep 

Entity will log EventPhysPostStep events

Versions[]


This diagram illustrates the development history of CryEngine game engine versions.

CryEngine 1

CryEngine 1 is a game engine used for the first-person shooter video game Far Cry. It was originally developed by Crytek as a technology demo for Nvidia and, when the company saw its potential, it was turned into a game. When video cards with support for 3.0 pixel and vertex shaders were released, Crytek released version 1.2 of the engine which used some of the capabilities for better graphics. Later the company developed CryEngine version 1.3, which added support for HDR lighting. The engine has been licensed to NCsoft for their MMORPG, Aion: The Tower of Eternity. On March 30, 2006, Ubisoft acquired all intellectual property rights to the Far Cry franchise and a perpetual license to use the Far Cry ion of CryEngine, known as the Dunia Engine.

CryEngine 2

CryEngine 2 is used in Crytek’s game Crysis, and an updated version in Crysis Warhead, a side story of Crysis. It was first licensed out to French company IMAGTP who specializes in architectural and urban-planning communication. The purpose of licensing the engine was to create a program to allow clients to see exactly what a building or other structure would look like before any actual construction was started. As of March 7, 2011, Simpson Studios has licensed CryEngine 2 out to use on a Massively Multiplayer Virtual World (MMVW) that takes place on a terraformed Mars. On May 11, 2007, Crytek announced that they would be using the engine to create a game based on their new “intellectual property”. It is also confirmed that it would not be a part of Crysis and in fact may not even be a first-person shooter. On September 17, 2007, Ringling College of Art & Design became the first higher education institution in the world to license CryEngine 2 for educational purposes.

CryEngine 3

Crytek introduced CryEngine 3 at the 2009 Game Developers Conference, held from March 25 to March 27 and demonstrated it on the Xbox 360 and PlayStation 3 consoles. The new engine was being developed for use on Microsoft Windows, PlayStation 3, Xbox 360, and Wii U. As for the PC platform, the engine is said to support development in DirectX 9, 10, and 11. As of June 1, 2009, it was announced that Crysis 2 would be developed by Crytek on their brand-new engine. CryEngine 3 was released on October 14, 2009.


Family tree illustrates the history of CryEngine versions

On March 1, 2010, a new tech demo of the engine was released for the i3D 2010 symposium, which demonstrates ‘Cascaded Light Propagation Volumes for Real Time Indirect Illumination’. On June 11, 2011, the Australian Defence Force revealed that Navy personnel would train on a virtual landing helicopter dock ship made using the CryEngine 3 software. As of July 1, 2011, the Mod SDK version of CryEngine 3 specifically to create custom maps, mods and content for Crysis 2 is available on Crytek’s website. Crytek also released a free-to-use version of the CryEngine for non-commercial game development. It was released as of August 17, 2011 under the name CRYENGINE Free SDK.

Crytek announced on September 9, 2011 that they would be using CryEngine 3 to bring the original Crysis to consoles. It was released for Xbox Live and PlayStation Network on October 4, 2011.

CryEngine (3.6–4)

On August 21, 2013, Crytek rebranded CryEngine (starting from version 3.6.0) to simply «CryEngine», and announced that their next CryEngine would not be advertised with a version number. The reason for this decision was the claim that this new engine bears almost no similarity to previous CryEngine versions. However, the development kits available to licensees still use version numbers. The new CryEngine version adds support for Linux and consoles such as the PlayStation 4, Xbox One, and Wii U. Subsequent appearances at events have also featured the use of CryEngine on virtual reality systems, at GDC 2015 Crytek brought a demonstration ‘Back To Dinosaur Island’ to the event to showcase such.

CryEngine V

On March 22, 2016, Crytek announced a new version of CryEngine, called CryEngine V. Additionally, a new licensing model was introduced with a «pay what you want» model for usage and access to the source code.

On September 21, 2017, CryEngine 5.4 was released. adding the Vulkan API renderer as a beta, substance integration, and other features including new C# templates, asset system updates, and new anti-aliasing techniques.

On March 20, 2018, Crytek changed the licensing from «pay what you want» to a 5% revenue-sharing model.

Entity System & Schematyc

Schematyc

The new Entity Component system (that was introduced with CRYENGINE 5.3.0) has been adjusted in order to unify with the Schematyc setup. This means that any component exposed with the new 5.4.0 format (example below) will automatically become available in the Inspector and Schematyc so that Designers can build more complex logical entities.

The existing 5.3.0 method of creating components is still available, however we’ll be phasing it out over time as the new unified setup matures. Part of evolving the new setup will be to reduce the amount of code required to expose a component, so keep in mind that the example below will not be as rough in the future:

#include <CrySchematyc/CoreAPI.h>
class CMyComponent final : public IEntityComponent
{
public:
	static CryGUID& IID()
	{
		static CryGUID id = "{AD383B41-C144-4F99-9A2B-0FA2D9D86245}"_cry_guid;
		return id;
	}
	
	void MyFunction() 
	{
		// Print to the console
		CryLogAlways("Hello world!"); 
		
		// Signals can only be sent when the component was attached through Schematyc
		if(Schematyc::IObject* pObject = m_pEntity->GetSchematycObject())
		{
			// Send the signal back to Schematyc, along with our instance GUID
			pObject->ProcessSignal(SMySignal { m_bSignalResult }, GetGUID());
		}
	}
	struct SMySignal { bool m_bReturnValue; };
	bool m_bSignalResult = false;
};
void ReflectType(Schematyc::CTypeDesc<CMyComponent>& desc)
{
	desc.SetGUID(CMyComponent::IID());
	desc.SetEditorCategory("MyCategory");
	desc.SetLabel("MyComponent");
	desc.SetDescription("Does awesome things!");
	desc.SetComponentFlags({ IEntityComponent::EFlags::Socket, IEntityComponent::EFlags::Attach });
	desc.AddMember(&CMyComponent::m_myMember, 'memb', "MyMember", "My Member", "A property that can be changed", 10);
}
static void ReflectType(Schematyc::CTypeDesc<CMyComponent::SMySignal>& desc)
{
	desc.SetGUID("{DBBDB49C-6C48-446E-9451-DAA32E6FA240}"_cry_guid);
	desc.SetLabel("My Signal");
	desc.AddMember(&CMyComponent::SMySignal::m_bReturnValue, 'ret', "ReturnVal", "Return Value", "Description", false);
}
static void RegisterMyComponent(Schematyc::IEnvRegistrar& registrar)
{
	Schematyc::CEnvRegistrationScope scope = registrar.Scope(IEntity::GetEntityScopeGUID());
	{
		Schematyc::CEnvRegistrationScope componentScope = scope.Register(SCHEMATYC_MAKE_ENV_COMPONENT(CMyComponent));
		// Functions
		{
			auto pFunction = SCHEMATYC_MAKE_ENV_FUNCTION(&CMyComponent::MyFunction, "{FE5B34ED-A5DD-4C3B-A81C-38B5D980A770}"_cry_guid, "MyFunction");
			pFunction->SetDescription("Triggers our test function");
			componentScope.Register(pFunction);
		}
		// Signals
		componentScope.Register(SCHEMATYC_MAKE_ENV_SIGNAL(CMyComponent::SMySignal));
	}
}
CRY_STATIC_AUTO_REGISTER_FUNCTION(&RegisterMyComponent);

Standard Components

The default entities introduced with CRYENGINE 5.3.0 are still part of the Engine, but are now considered deprecated and will be removed in a future Engine release. These entities are no longer available for creation in the Sandbox Editor, but existing instances will continue to work.

The new standard components can be used by Designers as well as Programmers using C++. For example, the updated 5.4 templates heavily utilize the new standard components in order to cut down on the amount of code required when getting started. The new components can be included with the path <DefaultComponents/…`>.

The components all reside in the Cry::DefaultComponents namespace.

Miscellaneous

  • EntityGUID is now a proper 128-bit GUID. Parsing of legacy 64-bit GUIDs will still work, but convert on export.
  • IEntity::Activate has been removed. Individual components can now return BIT64(ENTITY_EVENT_UPDATE) in GetEventMask and call UpdateComponentEventMask to trigger re-activation. 
  • IEntity::IsActive has been renamed to IsActivatedForUpdates.
  • IEntityComponent functions PreInit, Initialize, OnShutDown, OnTransformChanged, ProcessEvent and Run are now protected and can thus not be called from outside the component itself.

Development[]

The CryEngine software development kit (SDK), originally called Sandbox Editor, is the current version of the level or used to create levels for CryEngine by Crytek. Tools are also provided within the software to facilitate scripting, animation, and object creation. It has been included with various Crytek games (including, but not limited to, Crysis and Far Cry), and is used extensively for modding purposes. The ing style is that of the sandbox concept, with the emphasis on large terrains and a free style of mission programming. The or can also construct indoor settings.

As opposed to ors like UnrealEd, which use a «subtractive» ing style that takes away areas from a filled world space, the Sandbox has an «additive» style (like Quake II). Objects are added to an overall empty space. The Sandbox’s concentration on potentially huge (in theory, hundreds of square kilometers) terrain, means that it uses an algorithmic form of painting textures and objects onto the landscape. This uses various parameters to define the distribution of textures or types of vegetation. This is intended to save time and make the ing of such large terrains feasible while maintaining the overall «real world» sandbox free roaming style. This is different from some ing styles that often use «fake backdrops» to give the illusion of large terrains.

In a fashion somewhat comparable to the 3D Renderer Blender, which can be used for game design, the Sandbox or has the ability, with a single key press, for the or to jump straight into the current design (WYSIWYP, «What You See Is What You Play» Feature). This is facilitated without loading the game as the game engine is already running within the or. The «player» view is shown within the 3D portion of the Editor. The Editor also supports all the CryEngine features such as vehicles and physics, scripting, advanced lighting (including real time, moving shadows), Polybump technology, shaders, 3D audio, character inverse kinematics and animation blending, dynamic music, Real Time Soft Particle System and Integrated FX Editor, Deferred Lighting, Normal Maps & Parallax Occlusion Maps, and Advanced Modular AI System.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector