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

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

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

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

Требуется разделить игру на движок и игровой контент (сюжет, геймплей, диалоги, задания для игрока, и так далее).
Контент будет содержать сложную логику, поэтому контент нужно представить не просто в виде текстовых файлов или БД. Для описания контента нужно...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 5.
Паттерн StateBus вместо MessageBus в Unity3D
Запись от Storm23 размещена 03.11.2018 в 13:49
Показов 12873 Комментарии 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
Показов 12991 Комментарии 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
Показов 17152 Комментарии 2

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

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

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

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

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

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

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

Идея
Идея заключается в том, чтобы использовать нейронную сеть для управления автомобилями в гоночной игре.
В результате хотелось бы получить гоночную аркаду, в которой...
Аватар для Storm23
Старый
Рейтинг: 4.67. Голосов: 6.
Создание виджетов для рабочего стола Windows в C#
Запись от Storm23 размещена 30.05.2017 в 13:59
Показов 31222 Комментарии 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
Показов 7087 Комментарии 13

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

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

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

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

CheckInterval

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

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

Расширение сериализует...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 5.
Задумал я сделать игрушку. День 6. HUD.
Запись от Storm23 размещена 01.04.2016 в 18:37
Показов 7646 Комментарии 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
Показов 7359 Комментарии 4
Метки features, useful stuffs

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

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

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

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

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

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

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

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


День1. Powder Toy.

Натолкнулся я недавно вот...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 3.
Просмотр больших CSV файлов в режиме ленивой подгрузки
Запись от Storm23 размещена 07.01.2016 в 12:17
Показов 3817 Комментарии 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
Показов 16569 Комментарии 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
Показов 32404 Комментарии 12
Метки .net, c#

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

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

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

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

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

Разобьем исходное изображение на несколько вертикальных...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 5.
HowTo: Как сделать Undo, Redo
Запись от Storm23 размещена 26.10.2015 в 13:23
Показов 16429 Комментарии 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
Показов 5899 Комментарии 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
Показов 26342 Комментарии 8
Метки c#, winforms

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

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

Враппер над Bitmap для быстрого чтения и изменения пикселов.
C#
1
2
3
    /// <summary>
    /// Обертка над Bitmap для быстрого чтения и изменения пикселов.
    /// Также, класс контролирует выход за пределы изображения: при чтении за границей изображения - возвращает DefaultColor, при записи за границей изображения -
...
Аватар для Storm23
Старый
Рейтинг: 5.00. Голосов: 4.
Простое создание плагинов в WinForms C#
Запись от Storm23 размещена 13.04.2015 в 00:51
Показов 19744 Комментарии 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
Показов 5471 Комментарии 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
Показов 3289 Комментарии 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
Показов 3157 Комментарии 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
Показов 18688 Комментарии 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
Показов 10650 Комментарии 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
Показов 14940 Комментарии 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
Показов 4163 Комментарии 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
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru