Visual Basic 6. Великий и Могучий компилятор Windows-приложений. Часть 2

Первую часть статьи можно прочесть здесь. Помимо придумывания своих форматов, я не забывал и о стандартах (хотя, конечно, это уже было не так интересно). Поэтому, я старался заинтересовать себя не столько сложностью, сколько количеством. Одно из моих творений, которое я, наверное, никогда бы не закончил — программа файлменеджер-просмотрщик-редактор-скриншотер-и-еще-куча-всякой-всячиныViewer. Не, ну правда — я пытался совместить в ней просто кучу всяких разных функций. Я даже переставал Проводником пользоваться вообще, и другими программами, кроме, наверное, антивируса и браузера (хотя и он там тоже был!), потому что в нее было встроено практически все, что мне было нужно.

Для описания одной лишь этой своей программы я даже статью решил отдельную написать, которую так и назвал — Viewer — одна программа, написанная на VB6, заменяет почти все остальные. Повторяться, пожалуй, лучше не буду, если интересно, почитайте о ней в той статье. Потому что возможностей у нее и правда много и лично у меня, при чтении той статьи, возникла бы масса вопросов — а как ты это сделал, а как — это? Спрашивайте, на что помню — отвечу)

Значит, продолжим. Как я уже упоминал в статье про Viewer, я нашел исходники альтернативного проводника с рабочим столом, пуском и панелью управления. Разумеется, он был, мягко говоря, не идеален, поэтому я расширял его возможности, исправлял ошибки ну и локализовал на русский язык, потому что он был англоязычным. И это тоже было очень интересно. Одно время, он стоял у меня вместо проводника, то есть изначально, после загрузки системы и надписи «Добро пожаловать» моей Windows XP, отображался рабочий стол, который допиливал я, а не Microsoft. Тоже интересный опыт. Правда ошибок там была куча, этот недопроводник сыпался от каждого чиха, поэтому долго он у меня не задержался, а ведь какие планы наполеоновские были… Была даже мысль свою операционную систему написать :) Но это так, больше из разряда шуток. Зато, я тогда познакомился с Kolibri OS и вообще семейством Menuet OS — это маленькие компактные операционные системы (размером чуть больше 50 мегабайт, если не ошибаюсь), в которых можно так же в интернет заходить (например) и еще некоторые штуки делать. Но, конечно, полноценной заменой Windows назвать сложно. Зато там была куча простеньких игр, типа тетриса и змейки :) Ну и программы вроде калькулятора)

А теперь напишу о самом главном. Как человек может называть себя программистом, если он не сделал НИ ОДНОЙ ИГРЫ :) Конечно, штук 20-30 делать я начинал, правда, толком ни одной до конца так и не дописал (потому что интересно было создавать сам игровой процесс, а клепать уровни — скука смертная. А за копипаст уровней расстреливать нужно, поэтому я не видел смысл делать по 5-10 одинаковых уровней, но где-то чуть быстрее, где-то чуть сложнее). Но в основном это, конечно, всякие пятнашки, лотерейные игровые автоматы, угадай число :) и подобные. Несколько бродилок делал, даже типа великого сантехника Марио сделал одну)

Кстати, тогда я начал заморачиваться физикой в играх, и даже вписал что-то из наработанного в эту игру (я ее назвал, кажется, Немарио :)), но бросил эту игру ради разработки собственного «физического движка» (так я его называл, по крайней мере:)). В ней я старался максимально правдоподобно осуществлять падение футбольного мяча на землю, то есть, мышкой можно было приподнять мяч над землей, и после того, как его отпустить, он должен был упасть на землю и отскочить от нее на определенную высоту, после чего опять упасть на землю и уже подскочить чуть ниже, и так продолжалось, пока мяч не остановится. В движок я пытался уместить все, что знал, даже с тетрадкой по физике, помню, сидел:), вписывал формулы всякие, то есть, учитывал вес мяча, высоту над землей (ну типа возможную силу притяжения) ускорение мяча считал на основе скорости свободного падения с учетом сопротивления воздуха и так далее.

Правда, довольно быстро понял, что пошла чистая физика и математика, которые я не очень любил, да и знаний уже моих стало маловато:) Даже то, что я решил 1 см воздуха считать чуть ли не километром (несмотря на то, что мяч тогда был бы как минимум километра 4 в диаметре), чтобы разница в высоте была хоть сколько-нибудь ощутимой, проект это не спасло) Хотя сейчас, по ходу написания статьи, я даже загорелся найти старые исходники и попробовать еще разок что-то более правдоподобное сделать) К слову сказать, мяч действительно падает на землю постоянно разное количество раз в зависимости от высоты и веса (вес мяча я в итоге вписывал прямо в форме), но не то, чтобы правдоподобно) Если воскрешу проект — то обязательно еще напишу о нем.

А сейчас вернемся к играм. За все время изучения программирования, я уяснил такую вещь — самые тяжелые тематики в нем — это написание драйверов и создание движков 3D-игр. Вот уж где действительно можно выплюнуть мозг через полчаса) И если с драйверами мы не подружились изначально, потому что на чистом Visual Basic их написать невозможно (он все-таки не под эти вещи заточен), а на других языках — это сущий кошмар (ядро пишется на Ассемблере, а дописывается в С++), то тяга к созданию трехмерных игр была сильнее любых сложностей. Правда, до определенного момента =))

На вижл бейсике я находил исходники игр, написанных под DirectX 7 и DirectX 8 и, скорее, все-таки, «пытался» написать что-то свое. Мой друг на специальных курсах в этот момент учился писать игры на Visual C++ под DirectX 9 и я видел, что суть такая же, но это правда «жесть» как сложно. Когда он создавал на директ иксе паука, который тупо движется по прямой (то есть мы даже не можем управлять им) и радовался этому как ребенок, я над ним ржал :D Хотя прекрасно представлял, насколько это сложно. Кстати, бумажку об окончании курсов по программированию 3D-игр ему дали, но он мог бы сходить с ней в туалет — потому что сам он ничего толком написать все равно не смог бы. Это правда сложно.

Так же и я — ничего из мира 3Д толком сделать не получалось . Пытался даже сделать что-то типа гонок, но быстро забил на это дело. Когда научил мир вращаться вокруг тебя по движению мышки (а если я правильно помню, на самом деле так и происходит в играх — «не камера» поворачивается, от лица которой мы наблюдаем мир, а сам мир вращается вокруг «камеры» — и таких тонкостей, о которых обычные пользователи 3д-миров не догадываются, на самом деле куча) — чуть не откинулся от счастья) Хотя, скорее всего, в самом Директ Икс это реализовано как-то проще — но я ведь этого не знал ! Поэтому и приходилось пользоваться тем, что знаю, и получались такие вот окольные пути решения.

Но, блин, целый месяц думать, как движок должен реагировать на движения мышки — это ни в какие ворота не лезет! Тут никакого энтузиазма не хватит! Поэтому я начал рассматривать варианты построения трехмерного мира без использования DirectX.

Но подобные решения оказались едва ли проще, а работали по вообще никому не понятным неведомым законам :) А свою игру, похожую хоть как-то на современные игры ААА-класса сделать ну очень хотелось) Молодой был, горячий:) И тут я понял — а в каком жанре у нас не обязательна трехмерность? Эврика! СТРАТЕГИИ! Да и со стороны жанр казался проще, чем те же самые шутеры. РЕШЕНО! Будем делать стратегию! Я кстати еще тогда подумал, что если в России делают столько стратегий, при этом, довольно высокого качества, сравнимого с мировым — это, например, «Блицкриг» или «В тылу врага», значит их точно делать проще) Это сейчас выходят всякие Сталкеры и Метро 2033, да и тот же самый Warface сделан в киевском отделении Crytek — а тогда качественных шутеров, сделанных на территории СНГ, прямо скажем, не было.

А какие стратегии самые лучшие? Конечно же, Total Annihilation и Dune. Значит на них и буду ориентироваться при создании своей собственной стратегии…. Эх, сколько же сил и времени на нее ушло! Но я правда доволен результатом! По сути, я сделал практически полноценный движок для стратегии, который и людям показать не стыдно, пусть даже двухмерный! И поэтому — я обязательно напишу о ней в отдельной статье. Ждем, товарищи! Я и для скачивания ее предоставлю, кому интересно, смогут ее опробовать самолично, она работает и на современных операционных системах, правда не всегда правильно) Но масштаб работ оценить позволяет.

Про стратегию на Visual Basic 6 подробнее здесь.

Возможно, Вы создавали на Visual Basic или другом языке программирования что-то сложнее? Пишите в комментариях, мне правда интересно! Да и посетителям, уверен, тоже!

Присоединяйтесь к нам Вконтакте, чтобы получить более оперативные ответы на свои вопросы, ПЕРВЫМИ читать новые статьи и обмениваться информацией с другими участниками группы!


Visual Basic 6. Великий и Могучий компилятор Windows-приложений. Часть 2
Комментариев: 9.


  1. Интересно было бы посмотреть на стратегию, буду ждать вашей следующей статьи. вобще мне нравиться когда авторы вспоминают что то из своей жизни , это придаёт статье какую то неведомую магию. И читать становиться еще интересней! Продолжайте прошу вас, хоть я и не программист но все равно интересно почитать !

    • Admin 23.06.2013 в 14:02 написал:

      Хорошо) А стратегия и правда крутая тема. Конечно, дело не в том, что это действительно прямо так круто, что на голову выше коммерческих игр. Просто если представить, что каждая плюшечка в игре, которая крутится, работает, моргает — все это делалось не один день и ночь — получается огромный труд. если бы я изначально знал, на что иду — скорее всего и не взялся бы) Хотя энтузиазма и вправду было хоть отбавляй) Я больше к тому, что любая игра, которую мы видим — это огромная куча сил, нервов и эмоций (а в целых компаниях разработчиков по другому никак — это я — сам себе утверждал, сам придумывал и закрывал глаза на что-то плохо работающее — а в компаниях стараются сделать по максимуму хорошо, насколько это возможно) Кстати, поэтому я и определил для себя, что не захочу работать разработчиком в крупной компании. И меня вполне устраивает маленькая компашка, в которой я сейчас работаю — практически, сам себе начальник. На самом деле, при особых условиях, работаешь еще больше чем если бы тебя кто-то гонял — потому что понимаешь, что именно от тебя зависит твой заработок. Когда компания разрастется — возможно я уйду. И вполне возможно, открою что-то свое (либо просто буду работать на себя) либо примкну к уже начинающей компании

  2. Даниил 29.06.2013 в 21:12 написал:

    Прикольная статья, сам занимаюсь программированием уже некоторое время. Из игр, самым запоминающимся проектом были шахматы с искусственным интеллектом (делал их в качестве экзамена по программированию). Шахматы не сказать, что сильно умные, но если не сильно вдумываться или играть на скорость, то проиграть можно запросто (тем более, что я не предусмотрел возврат ходов). Так получилось, что препод проиграв 2 раза подряд, сказал, что-то вроде: «М-м-м, прикольно!», но в следующей игре, он выиграл, поставив «детский мат»..

    Visual Basic, ИМХО, сильно устарел.. Есть ведь альтернатива, завязанная на платформе ,NET (Visual Basic .NET), так этот язык по-прежнему развивается и в нем, с появлением новых версий .NET Framework добавляются новые возможности, хотя мне больше по душе синтаксис C#.

    • Admin 29.06.2013 в 22:20 написал:

      Искусственный интеллект — это жесть. Я по-настоящему столкнулся с ним как раз при написании стратегии — исписал кучу бумаги, рассмотрел несколько серьезных вариантов, что должен делать бот на ход человека, как все это вообще упростить =), но толкового ничего так и не получилось) А в программировании шахмат — это, как я понимаю, больше математика?

    • Admin 29.06.2013 в 22:23 написал:

      А по поводу платформы .NET — у него с шестым бейсиком общего ненамного больше, чем у борландского си ++. Это практически полностью другой язык, с похожим названием

  3. Даниил 29.06.2013 в 23:19 написал:

    [quote]А в программировании шахмат — это, как я понимаю, больше математика?[/qoute]

    Математики почти не было.. Самым сложным оказалось определение ситуации: мат, шах, пат..
    Ведь нужно было проверить множество условий при которых наступает определенное состояние. Описание проверок было делом не сложным, но я изначально решил, что нужно решение выстроить таким образом, чтобы классы и методы можно было легко использовать и во многих других ситуациях. Проектирование решения заняло у меня довольно много времени (почти неделю).

    ИИ я добавил за несколько часов до сдачи экзамена, просто назначил каждой фигуре коэффициент: для пешек: 100, для коней и слонов: 300, для ладьей: 500, для ферзя: 900, так же добавил коэффициенты при достижении некоторых событий:
    шах: +10
    мат: +100000
    + добавил матрицы выгодных положений для каждой фигуры..
    Если пешка под атакой: -50
    Если слон или конь под атакой: -150
    Если ладья под атакой: -250
    Если ферзь под атакой: -450

    * Коэффициенты уже не помню, так что может в цифрах напутал :)

    В итоге, когда наступала очередь противника.. Выбирались вообще все возможные ходы, и для каждого хода расчитывался суммарный коэффициент (математика на уровне 5-го класса, больше её и не встретилось). Далее просто выбирался ход с максимальным коэффициентом. Благодаря продуманной архитектуре приложения, добавить простенький ИИ оказалось очень быстро и просто. Так что сейчас перед разработкой всегда сначала проектирую решение (с помощью языка UML), выделяю сущности, строю диаграммы — это помогает точно описать процессы, происходящие в приложении, а разработанный проект с хорошей архитектурой и развивать и изменять — одно удовольствие :)

    [quote]А по поводу платформы .NET — у него с шестым бейсиком общего ненамного больше, чем у борландского си ++.[/qoute]

    Ну да.. :)

    • Admin 29.06.2013 в 23:29 написал:

      Интересно послушать, как другие решают подобные задачи) А самому — это же скука смертная) А «физический движок» типа описанного мной не приходил в голову?)) Вообще, мне очень интересно моделировать природу и природные законы — чтобы в очередной раз убедиться, что человечество еще ооочень многого не знает) Но пока что убеждаюсь только в том, что я сам ничего не знаю в научных формулах)))

  4. Даниил 30.06.2013 в 00:43 написал:

    «А «физический движок» типа описанного мной не приходил в голову?)) Вообще, мне очень интересно моделировать природу и природные законы — чтобы в очередной раз убедиться, что человечество еще ооочень многого не знает)»

    Не, с геймдевом я больше не сталкивался, а с физ. движками и подавно :) Играю я редко и то только в казуальные игры, когда делать уж совсем нечего, наверное поэтому идея и не приходила в голову :) Правда ещё одна тема меня чуточку заинтересовала очень давно — это фрактальная графика.. Она меня бы и не заинтересовала, если б я не прогулял все занятия по компьютерной графике и по языку программирования VB.NET. Эти занятия вела один и тот же преподаватель и чтобы получить зачёт заставила меня написать приложение на VB.NET строящее все виды фракталов, которые наша группа строила в маткаде на протяжении всех занятий :) Честно сказать, тема интересная, делал даже с удовольствием и как мне кажется эта тема, при определенном развитии как формул фракталов, так и вычислительных систем плотно «осядет» в геймдеве. Ведь мало того, что фракталы можно использовать для генерации случайных «карт» (ландшафтов и т.п.), так некоторые фракталы очень сильно напоминают объекты окружающего мира (деревья, кусты, траву) и самое удивительное, что это описывается формулами (изменив коэффициенты, можно изменить степень прорисовки, цвет, размер и т.д.). Пожалуй именно такими будут графические движки будущего :) Что-то я от темы немного ушёл, ну что-то очень захотелось поделиться..

    Что-то мы с вами разобщались :) Всё никак не пойму, чем вы занимаетесь, у вас тут вроде и про Visual Basic и про SEO и какие-то общие компьютерные статьи..

    • Admin 30.06.2013 в 01:15 написал:

      На работе занимаюсь сайтами — продвижение и создание, немного ремонтом компов успеваю, а дома — в игры иногда играю и другими компьютерными вещами занимаюсь. Так и получается)

Добавить комментарий для Даниил Отменить ответ

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

Навигация