Случай 1. Ну так ожог он, все-таки, удалил. А мать хотела как лучше.
Случай 2. Надо было к неврологу идти. У меня невролог сразу сказал что это не сердце, а остеохондроз грудного отдела. А направил к нему терапевт, раз на ЭКГ все хорошо.
Случай 3, 4. Врач, который делает снимки - должен делать только снимки. Смотреть снимки и ставить диагноз должен профилированный врач.
Случай 10. Мне ЛОР еще при первом осмотре сказал что искривленная носовая перегородка.
Хотелось бы чтобы вы различали библиотеку, фреймворк, движок и конструктор. Разница - огромная, по встроенным возможностям и тому как много и на насколько низком уровне придется программировать. У вас в статье все вперемешку.
Шутер нормально запускается, но падает через несколько секунд после старта.
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> SharpDX.SharpDXException: HRESU LT: [0x8878001E], Module: [Unknown], ApiCode: [Unknown/Unknown], Message: Unknow n at SharpDX.Result.CheckError() at SharpDX.DirectSound.DirectSoundBase.CreateSoundBuffer(SoundBufferDescripti on cDSBufferDescRef, IntPtr& dSBufferOut, ComObject unkOuterRef) at SharpDX.DirectSound.SecondarySoundBuffer..ctor(DirectSound dSound, SoundBu fferDescription bufferDescription) at Engine3D.AudioStream.Upload(Int32 sampleRate, Int32 align, Int32 channels, Byte[] data, Int32 size) in C:\Users\Богдан\source\repos\RPGIGDC\Engine3D\Audio \Audio.cs:line 95 at Engine3D.AudioStream.LoadWav(Stream strm) in C:\Users\Богдан\source\repos RPGIGDC\Engine3D\Audio\Audio.cs:line 129 at RPGIGDC.Crawler.Precache() in C:\Users\Богдан\source\repos\RPGIGDC\RPGIGDC \Monsters\Crawler.cs:line 27 at RPGIGDC.Crawler..ctor(World world) in C:\Users\Богдан\source\repos\RPGIGDC \RPGIGDC\Monsters\Crawler.cs:line 34 --- End of inner exception stack trace --- at System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo method, O bject[] args, SignatureStruct& signature, RuntimeType declaringType) at System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo method, Ob ject[] args, SignatureStruct signature, RuntimeType declaringType) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, B inder binder, Object[] parameters, CultureInfo culture) at System.Reflection.ConstructorInfo.Invoke(Object[] parameters) at RPGIGDC.Spawner.Update() in C:\Users\Богдан\source\repos\RPGIGDC\RPGIGDC\S pawner.cs:line 75 at RPGIGDC.World.Update() in C:\Users\Богдан\source\repos\RPGIGDC\RPGIGDC\Wor ld\World.cs:line 191 at RPGIGDC.GameMain.OnUpdate() in C:\Users\Богдан\source\repos\RPGIGDC\RPGIGD C\GameMain.cs:line 70 at Engine3D.Game.Run() in C:\Users\Богдан\source\repos\RPGIGDC\Engine3D\Game. cs:line 158 at RPGIGDC.Program.Main(String[] args) in C:\Users\Богдан\source\repos\RPGIGD C\RPGIGDC\Program.cs:line 23
Кажется, вы просто забыли добавить папку System в архив с игрой и нужные игре ресурсы просто отсутствуют.
Спасибо что сделали 32-разрядную сборку, которая запускается на XP. Если вы пишете в лог, то файл engine.log изначально должен отсутствовать чтобы создать его при запуске. Хорошо бы чтобы игра выводила сообщение об ошибке в виде MessageBox, а не только в консоль. Игра завершает работу если не смогла открыть файлы engine.log, Data\scripts\assembly.pdb, Data\scripts\assembly.dll на запись, если запускать без прав администратора. Все файлы, которые ваше приложение будет создавать/писать надо создавать в домашнем каталоге пользователя, в папке Application Data. Создавать их в той же папке, что и игра - привет из 98-года.
Игра кушает 30% проца, что многовато для такой скромной игры. 45 Мб памяти - нормально. После того как проехали трассу не понятно что нажимать чтобы начать заново. После закрывания окна:
at SharpDX.Result.CheckError() at SharpDX.Direct3D9.Device.Present(IntPtr sourceRectRef, IntPtr destRectRef, IntPtr hDestWindowOverride, IntPtr dirtyRegionRef) at SharpDX.Direct3D9.Device.Present() at Engine3D.Graphics.EndScene() at Engine3D.Game.Run() at MonoRace.Program.Main(String[] args)
Файл engine.log оказался пустой. Вы хотя бы делайте flush после каждой записи или после падения, чтобы в логе что-то оставалось, иначе какой смысл вести лог если в случае падения приложения в него ничего не запишется.
Не хватает еще какой-то надписи что игра загружается и хотя бы простецкого ProgressBar чтобы не показывать пустое окно первые несколько секунд.
Отлично, но надо приноровиться мыслить квадратами 3x3. Ставя мину, мы из всех клеток в квадрате 3x3 вычитаем единичку. Если всегда держать это в голове, то дальше как по маслу пойдет.
И всегда надо следить чтобы оставались ровные квадраты. Если где-то выпирают не 3, а 1-2 клетки, значит какая-то мина стоит неправильно.
Непонятно - зачем надо было загружать запароленные архивы? Разумеется, ни один сервис, не зная пароля, их не откроет (не будет же он перебирать пароль, который может быть каким угодно). Имя файла ничего не значит, его можно переименовать. Размер файла - можно удлинить до любого. Контрольная сумма - это просто математическая сумма всех слов, а в EXE полно неиспользуемых полей, так что контрольную сумму файла можно сделать какой угодно. Считай что облачное хранилище не знает ничего о содержимом запароленного архива, все что оно может сделать - запретить вообще загружать или скачивать такие архивы, но никак не проверить на вирусы.
Забыли сказать про главный недостаток - очень медленно. А время - деньги (во всяком случае, за электроэнергию), что для массового производства с большим выходом деталей не годится. Используется там где нужны очень точные размеры детали, слишком твердый материал или если другим инструментом не подлезешь. И еще - частота измеряется в Гц, а не мкс. Мкс - это период.
Ок, один пример есть.
Хотя в википедии написано что компания Chucklefish позже помогала в портировании.
И сколько таких игр, целиком сделаных в одиночку?
Существуют ли люди, которые в одиночку создали игры мирового уровня?
Нет, это вранье.
IceFrog сделал карту для Warcraft, Доту делала уже команда разработчиков.
Нотч сначала делал игру сам, потом нанял команду.
Про agar.io ничего не слышал и не интересовался.
Можно привести еще кучу примеров. Автор Braid сначала сделал прототип, потому купил графику и музыку. У автора Fez был еще программист и отдельный композитор. Super Meat Boy делало 3 человека.
Одному можно сделать прототип, который ляжет в основу другой игры. А вот полноценную игру, тем более мирового уровня — нет. Самая эффективная связка — программист + дизайнер + композитор (3 человека).
Все игры, целиком сделанные одним человеком, всегда страдают от одной и той же болячки — в игре хорошо только что-то одно (геймплей, графика, музыка), а все остальное — фигово. Поэтому и нет игр «мирового масштаба», сделанных одним человеком, этого добиваются только команды где каждый берет на себя определенный компонент игры.
Нет. Любой байт-код интерпретируется виртуальной машиной. Любая интерпретация кода = дополнительные тормоза.
Если нужна макс. производительность — используйте JIT-компиляцию. Но тогда теряется безопасность, если код выполняется в адресном пространстве браузера или производительность — если в отдельном.
Вы все равно никак не получите макс. безопасность, переносимость и производительность одновременно. Чем-то придется жертвовать, в случае браузеров — это однозначно производительность.
Это называется "тройное модульное резервирование". Для МК в космосе этот принцип реализуется аппаратно для ОЗУ.
Дальше можно не читать
Случай 1. Ну так ожог он, все-таки, удалил. А мать хотела как лучше.
Случай 2. Надо было к неврологу идти. У меня невролог сразу сказал что это не сердце, а остеохондроз грудного отдела. А направил к нему терапевт, раз на ЭКГ все хорошо.
Случай 3, 4. Врач, который делает снимки - должен делать только снимки.
Смотреть снимки и ставить диагноз должен профилированный врач.
Случай 10. Мне ЛОР еще при первом осмотре сказал что искривленная носовая перегородка.
Хотелось бы чтобы вы различали библиотеку, фреймворк, движок и конструктор.
Разница - огромная, по встроенным возможностям и тому как много и на насколько низком уровне придется программировать. У вас в статье все вперемешку.
Шутер нормально запускается, но падает через несколько секунд после старта.
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has
been thrown by the target of an invocation. ---> SharpDX.SharpDXException: HRESU
LT: [0x8878001E], Module: [Unknown], ApiCode: [Unknown/Unknown], Message: Unknow
n
at SharpDX.Result.CheckError()
at SharpDX.DirectSound.DirectSoundBase.CreateSoundBuffer(SoundBufferDescripti
on cDSBufferDescRef, IntPtr& dSBufferOut, ComObject unkOuterRef)
at SharpDX.DirectSound.SecondarySoundBuffer..ctor(DirectSound dSound, SoundBu
fferDescription bufferDescription)
at Engine3D.AudioStream.Upload(Int32 sampleRate, Int32 align, Int32 channels,
Byte[] data, Int32 size) in C:\Users\Богдан\source\repos\RPGIGDC\Engine3D\Audio
\Audio.cs:line 95
at Engine3D.AudioStream.LoadWav(Stream strm) in C:\Users\Богдан\source\repos
RPGIGDC\Engine3D\Audio\Audio.cs:line 129
at RPGIGDC.Crawler.Precache() in C:\Users\Богдан\source\repos\RPGIGDC\RPGIGDC
\Monsters\Crawler.cs:line 27
at RPGIGDC.Crawler..ctor(World world) in C:\Users\Богдан\source\repos\RPGIGDC
\RPGIGDC\Monsters\Crawler.cs:line 34
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo method, O
bject[] args, SignatureStruct& signature, RuntimeType declaringType)
at System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo method, Ob
ject[] args, SignatureStruct signature, RuntimeType declaringType)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, B
inder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.ConstructorInfo.Invoke(Object[] parameters)
at RPGIGDC.Spawner.Update() in C:\Users\Богдан\source\repos\RPGIGDC\RPGIGDC\S
pawner.cs:line 75
at RPGIGDC.World.Update() in C:\Users\Богдан\source\repos\RPGIGDC\RPGIGDC\Wor
ld\World.cs:line 191
at RPGIGDC.GameMain.OnUpdate() in C:\Users\Богдан\source\repos\RPGIGDC\RPGIGD
C\GameMain.cs:line 70
at Engine3D.Game.Run() in C:\Users\Богдан\source\repos\RPGIGDC\Engine3D\Game.
cs:line 158
at RPGIGDC.Program.Main(String[] args) in C:\Users\Богдан\source\repos\RPGIGD
C\RPGIGDC\Program.cs:line 23
Кажется, вы просто забыли добавить папку System в архив с игрой и нужные игре ресурсы просто отсутствуют.
Спасибо что сделали 32-разрядную сборку, которая запускается на XP.
Если вы пишете в лог, то файл engine.log изначально должен отсутствовать чтобы создать его при запуске.
Хорошо бы чтобы игра выводила сообщение об ошибке в виде MessageBox, а не только в консоль.
Игра завершает работу если не смогла открыть файлы engine.log, Data\scripts\assembly.pdb, Data\scripts\assembly.dll на запись, если запускать без прав администратора. Все файлы, которые ваше приложение будет создавать/писать надо создавать в домашнем каталоге пользователя, в папке Application Data. Создавать их в той же папке, что и игра - привет из 98-года.
Игра кушает 30% проца, что многовато для такой скромной игры. 45 Мб памяти - нормально.
После того как проехали трассу не понятно что нажимать чтобы начать заново.
После закрывания окна:
Unhandled Exception: SharpDX.SharpDXException: HRESULT: [0x80004005], Module: [G
eneral], ApiCode: [E_FAIL/Unspecified error], Message: Неопознанная ошибка
at SharpDX.Result.CheckError()
at SharpDX.Direct3D9.Device.Present(IntPtr sourceRectRef, IntPtr destRectRef,
IntPtr hDestWindowOverride, IntPtr dirtyRegionRef)
at SharpDX.Direct3D9.Device.Present()
at Engine3D.Graphics.EndScene()
at Engine3D.Game.Run()
at MonoRace.Program.Main(String[] args)
Файл engine.log оказался пустой. Вы хотя бы делайте flush после каждой записи или после падения, чтобы в логе что-то оставалось, иначе какой смысл вести лог если в случае падения приложения в него ничего не запишется.
Не хватает еще какой-то надписи что игра загружается и хотя бы простецкого ProgressBar чтобы не показывать пустое окно первые несколько секунд.
Отлично, но надо приноровиться мыслить квадратами 3x3.
Ставя мину, мы из всех клеток в квадрате 3x3 вычитаем единичку. Если всегда держать это в голове, то дальше как по маслу пойдет.
И всегда надо следить чтобы оставались ровные квадраты. Если где-то выпирают не 3, а 1-2 клетки, значит какая-то мина стоит неправильно.
Вот как раз из-за чуваков 2-ой культуры у нас на компьютерах все и тормозит.
Да ладно!
Непонятно - зачем надо было загружать запароленные архивы? Разумеется, ни один сервис, не зная пароля, их не откроет (не будет же он перебирать пароль, который может быть каким угодно).
Имя файла ничего не значит, его можно переименовать. Размер файла - можно удлинить до любого. Контрольная сумма - это просто математическая сумма всех слов, а в EXE полно неиспользуемых полей, так что контрольную сумму файла можно сделать какой угодно.
Считай что облачное хранилище не знает ничего о содержимом запароленного архива, все что оно может сделать - запретить вообще загружать или скачивать такие архивы, но никак не проверить на вирусы.
Забыли сказать про главный недостаток - очень медленно. А время - деньги (во всяком случае, за электроэнергию), что для массового производства с большим выходом деталей не годится.
Используется там где нужны очень точные размеры детали, слишком твердый материал или если другим инструментом не подлезешь.
И еще - частота измеряется в Гц, а не мкс. Мкс - это период.
А я и не говорю сохранять в тот же файл.
И что мешает прочитать только заголовок, а не весь файл, и кол-во кристаллов хранить там?
Хотя да, наиболее универсальный способ - если еще не посчитано кол-во кристаллов, то загрузить файл, посчитать и сохранить в другой файл.
Можно было добавить код сохранения кол-ва кристаллов в самом редакторе, во время сохранения уровня
Как раз про нее где-то читал, что одни элементы сделаны хорошо, а другие — плохо.
Хотя в википедии написано что компания Chucklefish позже помогала в портировании.
И сколько таких игр, целиком сделаных в одиночку?
Нет, это вранье.
IceFrog сделал карту для Warcraft, Доту делала уже команда разработчиков.
Нотч сначала делал игру сам, потом нанял команду.
Про agar.io ничего не слышал и не интересовался.
Можно привести еще кучу примеров. Автор Braid сначала сделал прототип, потому купил графику и музыку. У автора Fez был еще программист и отдельный композитор. Super Meat Boy делало 3 человека.
Одному можно сделать прототип, который ляжет в основу другой игры. А вот полноценную игру, тем более мирового уровня — нет. Самая эффективная связка — программист + дизайнер + композитор (3 человека).
Все игры, целиком сделанные одним человеком, всегда страдают от одной и той же болячки — в игре хорошо только что-то одно (геймплей, графика, музыка), а все остальное — фигово. Поэтому и нет игр «мирового масштаба», сделанных одним человеком, этого добиваются только команды где каждый берет на себя определенный компонент игры.
Если нужна макс. производительность — используйте JIT-компиляцию. Но тогда теряется безопасность, если код выполняется в адресном пространстве браузера или производительность — если в отдельном.
Вы все равно никак не получите макс. безопасность, переносимость и производительность одновременно. Чем-то придется жертвовать, в случае браузеров — это однозначно производительность.
Миссия провалена.