Форум программистов, компьютерный форум, киберфорум
Storm23
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Старый
Рейтинг: 5.00. Голосов: 1.
Добавление скриптинга и динамических аддонов в Unity (часть 2)
Запись от Storm23 размещена 30.05.2019 в 17:10
Показов 20944 Комментарии 1
Метки c#, unity

В первой части статьи нам удалось загрузить и заставить работать аддон, который был создан отдельно от основного проекта Unity.

В текущем варианте скрипты можно разрабатывать автономно. Для этого не нужен ни исходный код проекта, ни сам Unity. Для разработки аддона нужно...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 2.
Добавление скриптинга и динамических аддонов в Unity (часть 1)
Запись от Storm23 размещена 30.05.2019 в 13:55
Показов 5085 Комментарии 0
Метки .net, c#, unity

Постановка задачи

Требуется разделить игру на движок и игровой контент (сюжет, геймплей, диалоги, задания для игрока, и так далее).
Контент будет содержать сложную логику, поэтому контент нужно представить не просто в виде текстовых файлов или БД. Для описания контента нужно...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 5.
Паттерн StateBus вместо MessageBus в Unity3D
Запись от Storm23 размещена 03.11.2018 в 13:49
Показов 12445 Комментарии 7
Метки c#, unity

MessageBus

Один из паттернов организации взаимодействия в Unity - это MessageBus (шина сообщений).
Это разновидность паттерна Publisher-Subscriber (Издатель-Подписчик), с той разницей, что события объявляются не в Publisher, а в глобальном синглтоне MessageBus. Таким образом, разрывается зависимость подписчика и издателя....
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 4.
Neural Network Racing - Part 4
Запись от Storm23 размещена 12.04.2018 в 02:45
Показов 12464 Комментарии 4

Итак, после того, как ИИ готово, можно перенести весь проект в Unity и сделать полноценную гонку в 3D.

Экспорт трека в Unity

Редактор треков, который я описывал ранее, сохраняет специальную текстуру с изображением трека.
Мы ее экспортируем в проект Unity и с помощью нее формируем текстуру трека на террейне.
Это делается с помощью такого кода:

BuildTerrain
C#
1
2
3
    void BuildTerrain(Terrain t, Texture2D roadMap)
    {
        float[,,] maps =
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 9.
Neural Network Racing - Part 3
Запись от Storm23 размещена 11.04.2018 в 01:40
Показов 16543 Комментарии 2

После создания модели автомобиля и трека все готово для главного - создания ИИ на базе нейронной сети для управления машиной.

Нейронная сеть

Для управлением автомобилем, будем использовать полносвязную нейронную сеть с тремя слоями. Топология 6-6-6-3.
Число входных нейронов - 6, число выходных - 3.

На вход нейронной...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 2.
Neural Network Racing - Part 2
Запись от Storm23 размещена 10.04.2018 в 21:24
Показов 6985 Комментарии 0

Продолжаем.
После создания физической модели автомобиля, сделаем модель трека и сенсоры для нашей машинки.

Модель трека
Обычно, моделирование трека делают в 3D движках. Это делается потому, что в 3D движке типа Unity можно сделать стенки трека в виде коллайдеров и затем искать пересечение лучей сенсоров автомобиля...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 4.
Neural Network Racing
Запись от Storm23 размещена 10.04.2018 в 16:06
Показов 11538 Комментарии 0

В этой статье будем разбираться в нейронных сетях, генетических алгоритмах, физике движения автомобиля и Unity 3D. Попробуем это все слепить вместе и получить игру.

Идея
Идея заключается в том, чтобы использовать нейронную сеть для управления автомобилями в гоночной игре.
В результате хотелось бы получить гоночную аркаду, в которой...
Аватар для Storm23
Старый
Рейтинг: 4.67. Голосов: 6.
Создание виджетов для рабочего стола Windows в C#
Запись от Storm23 размещена 30.05.2017 в 13:59
Показов 30436 Комментарии 10
Метки c#, winforms, wpf

Создадим простое приложение, имитирующее виджет Windows. Окно виджета будет находится на рабочем столе, но под всеми остальными окнами. Виджет будет полупрозрачный и его можно двигать потянув за любой участок окна.

Для того, что бы окно постоянно было под всеми другими окнами, нужно менять Z-order окна на значение 1. Это можно сделать следующим кодом:
C#
1
SetWindowPos(Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
где Handle - хендл нашего...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 3.
Общие ошибки начинающих разработчиков
Запись от Storm23 размещена 12.04.2017 в 08:00
Показов 6735 Комментарии 13

Здесь приводится обзор наиболее частых ошибок начинающих (и не очень) программистов.
Эти ошибки не привязаны к какому либо конкретному языку программирования, а являются общими проблемами начинающих разработчиков ПО.

1. Отсутствие плана действий.

Основной принцип, позволяющий эффективно выполнить работу за минимальное время - это разработка четкого плана действий....
Аватар для Storm23
Старый
Рейтинг: 3.67. Голосов: 3.
Хелперы CheckInterval и Triggered
Запись от Storm23 размещена 28.03.2017 в 13:27
Показов 4858 Комментарии 3
Метки c#, gamedev

День добрый,
Хочу поделится двумя полезными хелперами, помогающими при разработке интерактивных игр.

CheckInterval

Часто бывает нужно выполнять некое действие но не чаще чем один раз за некоторый интервал времени.
Например, при стрельбе игрок не может стрелять чаще чем скорострельность оружия. Поэтому...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 1.
Сериализатор статических классов
Запись от Storm23 размещена 04.03.2017 в 02:02
Показов 2905 Комментарии 0
Метки c#

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

Расширение сериализует...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 5.
Задумал я сделать игрушку. День 6. HUD.
Запись от Storm23 размещена 01.04.2016 в 18:37
Показов 7402 Комментарии 7
Метки c#, crazy dev, games, hud, winforms

День 6. HUD.

На шестой день Бог создал человека. Поэтому и мы в этот день обязаны сделать что-то человеческое, а не через пень-колоду, как обычно.

Окей, будем потихоньку двигаться дальше. Если кто не в курсе, HUD - это Head-Up Display - информация выводимая поверх игрового мира. Обычно это карта, прицел, показатели здоровья, оружия и так далее.

Захотелось мне сделать HUD в стиле футуристик. Что-то вот типа такого:
Футуристик
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 2.
Задумал я сделать игрушку. Дни 4 и 5.
Запись от Storm23 размещена 28.03.2016 в 20:47
Показов 7104 Комментарии 4
Метки features, useful stuffs

День 4. Разные разности.

Четыре – некрасивая цифра, я ее не люблю. И делать я буду в этот день рутинные вещи. Они скучны, но они нужны. Без них не обойтись. И времени на них уходит обычно больше чем на все остальное. Поэтом здесь я буду выкладывать много фрагментов кода (который, кстати уже есть в исходнике предыдущего дня), что бы сэкономить время для последующих разработок.

Чем кстати полезны забеги...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 2.
Задумал я сделать игрушку. День 3.
Запись от Storm23 размещена 28.03.2016 в 02:57
Показов 4329 Комментарии 2

День 3. Космос.

Предыдущие дни здесь.

Итак, вдохновившись PowderToy, захотелось мне сделать что-то больше, красивое и эпичное. И конечно оно должно быть в 3d. Двумерные игры мне не нравятся. А тут еще на хабре прочел заметку про то как парень писал космосим. И выбор был сделан. Пишем космический шутер.

Конечно, я мог бы не париться, взять Unity3d и вперед по рельсам. Как...
Аватар для Storm23
Старый
Рейтинг: 3.67. Голосов: 3.
Задумал я сделать игрушку...
Запись от Storm23 размещена 26.03.2016 в 14:21
Показов 6414 Комментарии 3

В этой записи я буду писать много всякого бреда, отрывочных мыслей и бессвязных кусков кода. Это своеобразный дневник разработки игры. А какая разработка, такой и дневник... :[sarcasm]
Писать буду стараться каждый день, описывать разные стадии разработки. Не все решения доживут до финала.
Постараюсь также выкладывать промежуточные версии исходников и скриншоты текущего состояния программы.


День1. Powder Toy.

Натолкнулся я недавно вот...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 3.
Просмотр больших CSV файлов в режиме ленивой подгрузки
Запись от Storm23 размещена 07.01.2016 в 12:17
Показов 3604 Комментарии 0
Метки c#

Пример кода демонстрирует использование виртуального режима DataGridView, плюс специальный класс, кеширующий CSV файл. Кешируется только тот фрагмент, который просматривается пользователем.
C#
1
2
3
4
5
6
7
8
9
10
11
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication327
{
    public partial class Form1
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 4.
Простая тайловая игра (WinForms, GDI+)
Запись от Storm23 размещена 03.01.2016 в 18:24
Показов 16246 Комментарии 4
Метки c#, winforms

Простейшая игра с использованием тайловой модели мира.

Классы Game, GameState
C#
1
2
3
4
5
6
7
8
9
10
    public static class Game
    {
        public static Size TileSize = new Size(32, 32);
        public static GameState State { get; set; }
        public static PlayerController PlayerController { get; set; }
        public static ItemsController ItemsController { get; set; }
 
        public static void Init()
        {
            State = new GameState();
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 6.
Автоматическое выравнивание сканов документов
Запись от Storm23 размещена 01.11.2015 в 19:54
Показов 31870 Комментарии 12
Метки .net, c#

Автоматическое выравнивание сканов документов

Часто отсканированные или сфотографированные документы имеют перекос:

Нажмите на изображение для увеличения
Название: Exhibit-C-WF-00.jpg
Просмотров: 1158
Размер:	14.5 Кб
ID:	3416

От этого перекоса хотелось бы избавиться. Причем сделать это простым и максимально быстрым способом, без использования тяжелых библиотек типа OpenCV или AForge.NET.

Идея алгоритма

Разобьем исходное изображение на несколько вертикальных...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 5.
HowTo: Как сделать Undo, Redo
Запись от Storm23 размещена 26.10.2015 в 13:23
Показов 16023 Комментарии 0
Метки c#

Как сделать Undo, Redo

Для реализации стека отмены, нужно выполнить следующие пункты:

1) Создать интерфейс ICommand следующего вида:
C#
1
2
3
4
5
6
    public interface ICommand
    {
        string Name { get; }
        void Execute();
        void UnExecute();
    }
2) Создать команды, реализующие ICommand для каждого действия, изменяющего модель данных. Любые...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 2.
Простейшая 2D игра на GDI+
Запись от Storm23 размещена 10.10.2015 в 13:34
Показов 5717 Комментарии 1

Реализованы основные компоненты 2D игры: графика, обработка столкновений, управление с клавиатуры, анимированные спрайты, простейший AI, игровая механика.

Основные классы:
Коллайдер:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
    /// <summary>
    /// коллайдер
    /// </summary>
    class Collider
    {
        public void Update()
        {
            var items = Game.Instance.Items.ToList();
 
            //проверка
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 4.
Форма с произвольным дизайном заголовка и бордера
Запись от Storm23 размещена 25.06.2015 в 11:03
Показов 25899 Комментарии 8
Метки c#, winforms

Контрол позволяет создавать формы с произвольным оформлением заголовка и границы окна.
  • Оформление не зависит от темы Windows. Можно задавать произвольный цвет заголовка и бордера окна.
  • В заголовке окна можно размещать произвольные контролы.
  • Поддерживается перетаскивание и ресайз окна с помощью мышки. Возможно перетаскивание не только за заголовок окна, но и за любой участок форма.

Код контрола:
C#
1
2
3
//===============================
// (C) Storm23, 2015
//===============================
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 8.
Обертка над Bitmap для быстрого доступа к пикселам
Запись от Storm23 размещена 23.04.2015 в 11:59
Показов 51801 Комментарии 9
Метки c#

Враппер над Bitmap для быстрого чтения и изменения пикселов.
C#
1
2
3
    /// <summary>
    /// Обертка над Bitmap для быстрого чтения и изменения пикселов.
    /// Также, класс контролирует выход за пределы изображения: при чтении за границей изображения - возвращает DefaultColor, при записи за границей изображения -
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 4.
Простое создание плагинов в WinForms C#
Запись от Storm23 размещена 13.04.2015 в 00:51
Показов 19239 Комментарии 0
Метки c#, winforms

Сделаем простую систему динамических плагинов, без использования сторонних библиотек.

Пусть наши плагины должны иметь возможность добавлять свои контролы на главную форму вызывающего приложения.
Создадим новый проект типа Class Library. В нем объявим два интерфейса:
C#
1
2
3
4
5
6
7
8
    public interface IHost
    {
        void AddControlToMainForm(Control ctrl);
    }
 
    public interface IPlugin
    {
        string Name { get; }
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 2.
ProgressBar в стиле Metro
Запись от Storm23 размещена 24.03.2015 в 12:07
Показов 5119 Комментарии 4

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
 
namespace WindowsFormsApplication265
{
    public class ProgressIndicator : UserControl
    {
        private Timer tm;
        private int counter = 0;
 
        [DefaultValue(5)]
        public int ItemsCount { get; set; }
        [DefaultValue(5)]
        public
...
Аватар для Storm23
Старый
Решатель линейных уравнений, заданных в символьном виде
Запись от Storm23 размещена 18.03.2015 в 08:52
Показов 3094 Комментарии 0

Решатель линейных уравнений, заданных в символьном виде:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
 
namespace WindowsFormsApplication263
{
    public partial class MainForm : Form
    {
        private TextBox tbSource;
        private TextBox tbResult;
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 1.
ChatBox
Запись от Storm23 размещена 12.03.2015 в 22:57
Показов 2999 Комментарии 0

Панель для отображения сообщений чата.

C#
1
2
3
4
5
6
7
8
9
    public class ChatBox : UserControl
    {
        public List<ChatItem> Items { get; private set; }
        private int ItemPadding { get; set; }
 
        public ChatBox()
        {
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);
            Items = new List<ChatItem>();
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 2.
Как использовать кастомные контролы
Запись от Storm23 размещена 26.02.2015 в 22:05
Показов 18357 Комментарии 0

Если вам дали код контрола и вы не знаете что с ним делать, эта заметка для вас.

Для примера возьмем следующий код кастомного контрола:
C#
1
2
3
4
5
6
7
8
    public class VerticalLabel : UserControl
    {
        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        public new string Text
        {
            get { return base.Text; }
            set { base.Text = value; Invalidate(); }
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 2.
BitReader - класс для побитового чтения массива байт
Запись от Storm23 размещена 25.02.2015 в 11:22
Показов 10385 Комментарии 0

Код класса:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    /// <summary>
    /// Reads byte array as stream of bits
    /// </summary>
    public class BitReader
    {
        public int Position = 0;
        private byte[] source;
 
        public BitReader(byte[] source)
        {
            this.source = source;
        }
 
        public int Length { get { return source.Length*8; } }
 
        /// <summary>
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 1.
Контрол для отображения матрицы
Запись от Storm23 размещена 25.02.2015 в 11:08
Показов 14502 Комментарии 2

Контрол для отображения матрицы: кликабельный, с возможностью задания цвета каждой ячейки.

Код контрола:
C#
1
2
3
4
5
6
7
8
9
    /// <summary>
    /// Кликабельный контрол для отображения матриц
    /// </summary>
    public class MatrixGrid : UserControl
    {
        public Size GridSize { get; set; }
        public Point HoveredCell = new Point(-1, -1);
 
        public event EventHandler<CellNeededEventArgs>
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 3.
График со скроллингом
Запись от Storm23 размещена 24.02.2015 в 14:55
Показов 3957 Комментарии 1
Метки c#

Код компонента:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    /// <summary>
    /// График со скроллингом
    /// </summary>
    public class FastLineChart : UserControl
    {
        /// <summary>
        /// Отступы
        /// </summary>
        public int Indent { get; set; }
 
        public float MaxY { get; set; }
        public float MinY { get; set; }
 
        /// <summary>
...
Аватар для Storm23
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru