Новые уроки
rshatalov - 2013-12-14 20:46:05
С момента публикации последнего урока прошло больше года (октябрь 2012-го). Сегодня опубликовал новый - начал переписывать раздел по С++.
Сайт немного меняет свою направленность. Теперь будут обсуждаться не только игры, но и программирование вообще.
А какие темы вы хотели бы видеть на сайте? У меня, конечно, есть своё видение, но интересует мнение читателей. Постараюсь прислушаться.
Answers:
Хотелось бы увидеть уроки по DirectX 11, так как текущие у Вас по 9, так как я понял (не считая последнего про direct2d)
2013-12-14 21:12:26
rshatalov
По DirectX 11 планирую одни из первых.
Неплохо было бы пройтись по шейдерам...
2013-12-20 11:33:39
Explain
Я начал изучение программирования с этого сайта, с раздела C++, до девятого урока всё супер понятно, но потом начинается слишком большой поток нового. Я миллиард раз всё перечитывал, в голове всё путается, у тебя очень хорошая методика, ты всё делаешь с читателем, но нужны много примеров, чтобы можно было понять в каких конкретно случаях будет лучше использовать классы. Вот объяснил ты урок про наследования и надо раз 10 впихнуть их в pseudo game со всеми объясениями. Надеюсь на улучшения, лучший сайт по программированию для новичков. :)
2013-12-20 13:16:32
rshatalov
> Explain
9-й урок - это "Классы"?
Я сейчас пришёл к пониманию, что уроки нужно разбивать теорию и практику. Т.е. в одном уроке идёт объяснение нового материала с несколькими примерами, в другом показывается применение. Т.е. все программы типа pseudo_game будут вынесены в отдельные уроки и расширены.
2013-12-20 16:28:56
Nik-Siller
Лично я прервал обучение на уроках с bmp так как дальше без них по моему делать нечего, а как с ними работать я так толком и не понял. Мне кажется нужно более подробно разобрать то, как считывать и перезаписывать эти файлы.
2013-12-20 16:29:36
infinity
интересно было бы, глубже взглянуть на WINAPI
2013-12-21 12:43:34
rshatalov
> Nik-Siller
Я планировал ещё буквально один урок с bmp. А вообще, bmp используется в арканоиде и других поздних программах - там много примеров. Но здесь я допустил ошибку. bmp нужен только один урок. А дальше нужно переходить на использование wic (windows imaging component). Можете смело продолжать. Только в старых уроках сложно разобраться с последовательностью. Исправлю в новых уроках, но это будет ещё не скоро.
2013-12-21 13:00:11
rshatalov
> infinity
Следующий урок как раз по GDI будет, а затем WINAPI - меню, контекстное меню, основные элементы. После этого directx11
2013-12-24 18:07:56
Nerion
И сразу по поводу первого урока: "картинки не влазят полностью или они просто обрезаны так?"
2013-12-24 19:31:54
rshatalov
Nerion, скорее, просто обрезаны так. Надо рамки поставить.
2013-12-25 20:24:42
Kaplya
Будет скорее пожелание: "Хочеться что бы более понятным языком описали как можно использовать язык программирования на разных платформах (unix, windows, мобильные операционные системы). Написание драйверов , может быть даже самой ОС, движков для игр. Интересует как из простого кода можно создать, что то законченое. К примеру мне до сих пор не совсем ясно что такое ядро системы/движка игры/Серверные ОСИ, как оно работате , и как его можно спроектировать самому." Вот как то так )
Ещё пароль забыл пытался восстановить , но ссылка пришёдшая на почту не помогла (Благо пароль вспомнил) и хотелось бы иметь возможность сменить ник на вашем сайте (этот уже не актуален).
2013-12-28 16:10:06
rshatalov
Kaplya, по unix будет, мобильные, вряд ли. По законченному, раньше планировал только игру. Сейчас бы дописать нормально основы C++/DirectX.
В пароле есть символы кроме цифр и букв?
2013-12-28 16:11:31
rshatalov
HYBOR, скелетная анимация даже пока не в ближайших планах - слишком много предварительного материала нужно.
2013-12-28 18:22:55
infinity
А когда планируются новые уроки???
2013-12-28 19:20:06
rshatalov
Сейчас наполовину готов урок по gdi. Хотелось бы раз в дней 10 по новому уроку.
Не знаю, возможно ли это в будушем осуществить, но неплохо было бы для новичков сделать возможным находить взаимосвязи между низкоуровневым языком программирования ( ассемблер ) и высокоуровневым, в нашем случае это С++. Понимаю, что рендеринг графики на низком уровне скрывают, но замечательно было бы осознавать, что стоит за синтаксисом. Это поможет и при оптимизации программ, зная низкоуровневые особенности. Кроме того, в Visual Studio есть встроенный ассемблер ( MASM ), т.е. можно комбинировать языки. К примеру, взять ту же функцию, где перемножались вектор и матрица в виртуальной камере, там матрица по ссылке передавалась, хотя внутри функции изменение её содержимого не предусматривалось, она просто участвовала в вычислениях, но передать по ссылке понадобилась для экономии памяти в стеке. Такое осуществить было бы просто прекрасно ! Спасибо, Роман, за то, что вы делаете, просто нет слов ! Аналогов вашим статьям не найти в интернете. Вы очень тщательно разбираете каждую деталь при построении программы, шаг за шагом, просто разжёвываете, просто прекрасно !!! )
2013-12-30 17:14:18
rshatalov
> HYBOR
Раньше игры писались с ассемблерными вставками - как раз математические операции.
Ассемблер обязательно нужен - просто для понимания, как всё работает. Я планировал уроки по ассемблеру вплоть до создания окна через winAPI вызовы. Но, доберусь до этого не скоро.
А чем вы занимаетесь, Роман ? Кем работаете ?
Не теряйте время на переделывание старого. Лучше пока есть возможность и время вливайте новое. А если что-то в старом не понятно человеку тогда уже менять что то.
Сам пытался изучать директ Х 11 - очень сложно поэтому и вернулся на этот ресурс чтобы все таки выучить хотябы dх9(больше инфы по нему). Хоть он стареет но все же сколько шедевров на нем создано .
Пока до конца все уроки еще не прошёл. Но могу сказать что бы я хотел увидеть :
1) Архитектура современных игр .(связка кода+api+звука+сети+ввода/вывода данных) чтоб иметь теоретическое представление как оно связано и работает друг с другом.
2) Win API . (если в старых уроках чего то не дописано т.к. люди которые начинают лезть в DIrect3D спотыкаются прежде всего об него и я в том числе ^_^ )
3) Dx 11. (Самое что займет больше всего усилий в обучении)
4) Реализация пункта 1. (примеры связок кода с++ с дх11 во чтонибуть примитивное но рабочее)
то.
2014-01-05 09:56:02
rshatalov
> HYBOR
Программистом
В идеале былобы создать какойнибуть маинкрафт. С точки зрения создание минимального пространства, сети, графики и взаимодействия с миром + всякие меню итд - это былобы идеально.
До этого я пытался работать с open gl высокоуровневой библеотекой glut. То , что я мог нарисовать поле 2мя for и обьект фиолетовым кубиком, либо сферой 1 строкой, позваляло сосредаточится на разработке самой игры а не графики (мне важнее что обьект умеет а не как он выглядит).
Создал 3д мир с полем - нарисовал кубик 1 строкой и дальше учил его всяким возможностям (передвигаться, стрелять, бегать за мышкой, поварачиваться итд. о бог мой сколько всего нужно было в этот кубик запихать ) т.е. я сосредотачивался не на том как улучшить вид кубика, или его окружения, а как научить кубик делать все что мне хотелось для настоящей хоть и с примитивной графикой игре.
Чтобы нарисовать 3 д поле и двигающийся стреляющий кубик ушло 400 строк кода. Где сама отрисовка этого заняла гдето 130.
Это все хорошо но в 1 момент я понял что лучше набрать познаний сразу в нужном направлении т.е DirectX.
И теперь пытаюсь с помощью DirectX воссоздать те мнимальные условия которые мнебы позволили продолжать заниматься самим обьектом, а не супер текстурами или эффектами итд.Великие познания самого дирет3д меня волнуют покачто мало (нужен минимал который потом уже можно улучшать если потребуется).
Надеюсь суть моего поста ясна )
Кратко - минимальный шаблон связки всех компонент современной игры который потом уже можно былобы развивать дальше в любую сторону (графика, возможности, сеть итд) на выбор.
Простите за очепятки)
2014-01-07 18:57:50
ra9ycj
Эх, нормально написанный майнкрафт.... Мечты.
Или это только мне кажется, напиши его на c++, и эффективность работы в разы повысится? :)
2014-01-07 20:21:19
ra9ycj
Блин, жаль нельзя сообщения подредактировать :)
Небольшой вопрос, вот винда 8.1, может подскажете, что надо поправить в примере из статьи http://shatalov.su/winapi/gdi_0 для того чтоб винда не пыталась коряво отмасштабировать окно?
Конечно в свойствах совместимости .exe можно поставить галочку, но может есть вариант указать это сразу в свойствах проекта/формы?
2014-01-08 20:29:19
rshatalov
Rey, это очень сложно. Прежде всего - огромные временные затраты. Код для урока по инициализации Direct3d 11 я писал 10 минут, объяснение этого кода - 2 вечера. У меня планы гораздо скромнее.
2014-01-08 20:30:38
rshatalov
ra9ycj, что значит "винда не пыталась коряво отмасштабировать окно"? Окно должно создаваться строго заданного размера.
Хотел много чего написать но скажу так- Думаю что все будет ок :)
2014-01-11 13:43:05
ra9ycj
rshatalov, да не, это чисто виндовые заморочки. разрешение 2560х1440, 27' монитор. просто так значки и т.п. мелковаты, ставлю масштаб на не на минимальный, а на 1 деление (цифр % нет, но вроде 25%). Так вот винда по дефолту пытается растянуть окно больше начального размера.
Примерно вот так дела:
http://saveimg.ru/show-image.php?id=ff6b42404f842328c5f53ebda22edc2a
http://saveimg.ru/show-image.php?id=35385abc02e3a7cf21dc5c304b55ea38
http://saveimg.ru/show-image.php?id=f4a010c697974f5f012f1313a69b534b
Вопрос в общем не критичен, но ведь оно не всё подряд так растягивает, есть программы где не пытается, даже без поставленной галочки. :(
2014-01-11 14:21:11
rshatalov
У меня стоит стандартный масштаб - никогда не задумывался. Вот так сразу на ум приходят координатные преобразования:
http://msdn.microsoft.com/en-us/library/dd183531(v=vs.85).aspx
Т.е. сначала вызвать SetGraphicsMode - Advanced, затем, заполнив XFORM, вызвать SetWorldTransform. Но это скорее подходит для содержимого окна. В твоём случае растягивается именно окно.
Ещё можно вызвать CreateWindowEx вместо CreateWindow и указать один из расширенных стилей окна - но там, насколько я помню, ничего подобного нет.
Здравствуйте, Роман. Хотелось бы увидеть уроки по временным промежуткам и управлением игровых таймеров. Пытался юзать таймеры из WinApi, но они неточные, как показала практика. К примеру, в ранних проектах я пользовался циклом обработки + Sleep(ms), чуть позже я нашел уже готовый класс таймера где-то в дебрях интернета и использую его по сей день, но хотелось бы узнать, как написать свой таймер и использовать его без чувства недопонимания. В примерах из Direct SDK там вообще нет класса таймера как такового, а производятся какие-то вычисления в главном лупе. В общем, хотелось бы побольше узнать об этом. Заранее благодарю!
2014-01-14 06:02:30
rshatalov
bee.j, да, sleep - не вариант. Тема очень важная. В планах отмечена уже давно.
2014-01-14 08:32:51
Kaplya
rshatalov по поводу битой ссылки восстановления пароля . Нет символов нет только латинские буквы маленькие и большие и одна цифра
где же гдеже они новые уроки)
2014-01-23 20:39:27
rshatalov
Rey, на главной. С начала года уже два. Я сам бы хотел быстрее...
Роман, хочется узнать, скоро ли будут новые уроки по dx11?
2014-02-03 08:20:22
rshatalov
> bee.j
Дописал по компиляции шейдеров. Следующий будет по графическому конвейеру.
2014-02-09 20:30:28
Alekcey
>rshatalov
Здравствуйте Роман. Прежде всего хочу выразить вам свою благодарность и признательность за ваши труды, поскольку когда то очень давно, я читал ваши уроки, перечитывал их, и собственно тогда получил массу знаний, которые я долго не мог найти на просторах интернета, они послужили весьма основательным и прочным фундаментом, для моих нынешних занятий, а потом было длительное время когда ваш сайт был недоступен, честно говоря я даже стал терять надежду что увижу его снова, а сегодня (вернее уже вчера поскольку за вчерашний день не успел дописать это сообщение) вдруг решил посмотреть (мало ли а вдруг), и вот оно (счастье привалило) =) в общем я искренне рад, что вы снова поднимаете сей непосильный многим труд.
(пришлось разбить на два сообщения -->
2014-02-09 20:30:59
Alekcey
--> продолжение)
Помимо благодарности, собственно о причинах данного сообщения... Я прочел выше по тексту, что вы планируете разделить теорию и практику, я очень хотел бы чтоб вы детально пересмотрели такое намерение болие пристально, поскольку за долгое время которое я проводил в разнообразных формах обучения, новым знаниям и умениям, в частности в сфере программирования, я в процессе своих скитаний, заметил такую закономерность и буквально прямую связь что если разбирать теорию и не отходя от кассы тут же закреплять практикой(желательно практики больший процент), то усвоение происходит буквально в разы быстрее, а особенно когда есть какой то полигон для экспериментов и наочность, для меня лично, практические задания для самостоятельной обработки в конце каждой статьи, по совершенствованию и дополнению кода который был разобран в ней, являлось особого рода тренировкой на десерт, и если бы я в тот момент отложил практику, то в голове мало что за держалось из прочитанного, как говориться (лучше один раз увидеть чем сто раз услышать)...
П.С. ещё раз спасибо за уроки (рад что вы вернулись), и извиняюсь если много оЧипятоко на пипячил в тексте =)
2014-03-01 14:42:58
Петренко Михаил
У вас в уроке опечатка:
unsigned long x;
insigned short y;
^
--опечатка -не "i",а "u".
2014-03-18 01:27:02
EgorBLS
А будут уроки по directx 12(когда выйдет)? Вроде на какой-то игровой выставке microsoft уже скоро должна показать 12 версию своего "творения".
Кудато пропал... Хоть бы написал куда и насколько =\
2014-04-08 11:48:08
Петренко Михаил
Надеюсь автор сайт не забросил.Если нет ,когда он выйдет с реконструкции?