Не смущает что это будет или скрипт или байт-код, для которого нужна среда выполнения? Т. е. на комп понадобится устанавливать кроме самой программы еще и среду исполнения прнограммы, скажем виртуальную машину Java, которая весит десятки, а то и сотни, а может и тысячи мегабайт! Я не встречал нативных исполняемых файлов, которые ничего не требуют устанавливать для своей работы и запускаются на нескольких платформах.
Уж лучше кроссплатформенность на уровне исходного текста. В этом случае, возможно получение нативного исполняемого файла, который не требует устанавливать всякую фигню для своей работы и требует намного меньше ресурсов компа чем виртуальная среда исполнения скрипта/байт-кода. И к тому же, будет возможность полноценно работать с конкретной платформой.
Сообщение отредактировал PBPROG - Среда, 26 Декабря 2012, 14:51
Windоws x86 Windоws x64 Linuх x86 Linuх x64 MaсОS X x86 MaсОS X x64 MаcОS Х PоwеrPС AmigaOS.
Краткое описание PureBasic.
Цитата
PureBasic это современная, кроссплатформенная среда разработки программ и игр, а также драйверов режима ядра на языке бейсик, позволяющая создавать native-приложения для платформ: Windоws x86 Windоws x64 Linuх x86 Linuх x64 MaсОS X x86 MaсОS X x64 MаcОS Х PоwеrPС AmigaOS.
Для работы созданных программ не требуется устанавливать дополнительные пакеты, подобные .NET Framework или runtime библиотеки, что облегчает перенос программ на другие компьютеры. Нужно отметить что размер создаваемых программ сравнительно небольшой (от 2 КБ) и напрямую зависит от кода программы, благодаря оптимизирующему компилятору, добавляющему в исполняемый файл (в Windows это EXE или DLL) только код функций реально используемых в программе. В зависимости от опций компиляции, можно создавать как ASCII, так и Unicode приложения. Поскольку в процессе компиляции программ задействован ассемблер FASM, то это позволяет добавлять в код ассемблерные инструкции, макросы и директивы FASMа. В среде присутствует мощный отладчик, (как встроенный, так и автономный) позволяющий не только выполнять программы пошагово, но и просматривать в процессе выполнения программы содержимое переменных, массивов (динамических и ассоциативных), структур, связанных списков, памяти и т. д. Предусмотрена так же возможность отладки по сети. С помощью профилера можно определить какая часть программы требует больше всего ресурсов, что позволит оптимизировать код на максимальное быстродействие. Так же отладчик позволяет в процессе выполнения программы, наблюдать за содержимым регистров процессора и стеком и при необходимости, изменить их содержимое. Purifier позволит выявить такую ошибку, как чтение/запись за пределами переменных и памяти. Благодаря функции OnError, есть возможность связать откомпилированный исполняемый файл с номерами строк программы что позволит точно узнать в какой строке программы произошла ошибка, в случае ее возникновения.
В состав среды входит кроссплатформенная библиотека функций, содержащая более 1500 функций. Их описание можно найти в справке (нажать F1 при запущенной среде PureBasic) или в онлайн справке (она полностью на русском). Среди этих функций, имеются функции для работы с консолью, окнами и 2D, 3D графикой (движок OGRE). Поддерживается 32 битные изображения с альфа каналом. Функции библиотеки "Thread" позволяют легко создавать параллельные потоки из обычных процедур и функций, что особенно актуально для много процессорных систем. При использовании потоков в программе нужно в настройках компилятора, включить опцию "Создать приложение с безопасным потоком" Так же присутствуют функции для работы с базами данных, типа: Oracle, MySQL, Access, SQLite, PostgreSQL и другими. Имеется полный доступ к API функциям операционной системы.
Все это позволяет создавать программы и игры практически любой сложности, как если бы писали на языках C++, C#, Delphi или Visual Basic, но с гораздо меньшими усилиями. Да и к тому же, при необходимости, программу легко портировать на другую платформу, скажем, чтобы перенести программу с Windows на Linux, достаточно перекомпилировать исходный текст в соответствующем компиляторе.
Сообщение отредактировал PBPROG - Суббота, 22 Декабря 2012, 12:59
поскольку найти более-менее удобную среду программирования и вообще хоть какой-то игровой движок для Basic практически невозможно.
Вы не правы. Например у PureBasic нормальная IDE с прекрасным отладчиком. Из коробки к PureBasic прикручен 2D двиг и 3D двиг - Ogre. Есть врапперы для других, популярных движков. Так что повторюсь, вы не правы. Более того на PureBasic легко писать обычные приложения и дрова.
Сообщение отредактировал PBPROG - Четверг, 29 Ноября 2012, 21:00
я новичёк в геймдэве и я решил учить яп но я не знаю какой яп учить лучше для дальнейшего создания игр. подскажите пожалуйста.
Можешь попробовать PureBasic. http://gcup.ru/load/purebasic/3-1-0-1610 Среду программирования, можно скачать на официальном сайте. http://purebasic.com/download.php Язык не сложный и легко учится. У него есть встроенные 2D и 3D движки. При необходимости, можно подключить сторонние движки. Вообще это универсальный ЯП и подходит не только для создания игр, но и для создания приложений и даже драйверов. Последнее на многих ЯП реализовать невозможно. Поэтому выбрав PureBasic вы не только сможете разрабатывать игры, но и многое другое (приложения, библиотеки, драйверы и т. д.). Онлайн справка для ознакомления. http://purebasic.com/documentation/index.html На русском (для предыдущей версии и нет всех функций, текущей версии). http://purebasic.ru/manual.php?id=1104&lng=rus
Pure Basic - ActiveX компоненты придётся регистрировать ВСЁ РАВНО.
ActiveX нужно будет регистрировать только в том случае, если они явно используются в проекте. И в этом случае, их может зарегистрировать сама программа при ее запуске. Поэтому проблем нет.
хХ_Сибирь_Хх, вы реально не правы насчет бейсика. Я выше приводил в пример PureBasic, так он не уступает по возможностям другим языкам, которые вы считаете "нормальными".
Вот вы привели в пример пайтон (именно так пишется, а не питон как вы написали) и чем он лучше бейсика? Между прочим пайтон интерпретируемый, а бейсик (имею в виду PureBasic) компилируемый и с его помощью можно создавать более эффективные десктопные приложения чем используя пайтон. Боле того, с помощью PureBasic можно создать драйвер режима ядра OS, а сможете ли вы это сделать на пайтоне?
Ага и вы этому другому окажите "медвежью услугу". Включите логику - BitBlt работает без аппаратного ускорения видеокарты и при большом числе объектов начнет сильно тормозить несмотря на крутое видео!
Для начала вполне подойдет PureBasic. В версии 5.0 разработчики добавили много плюшек во встроенный 3D движок. Он кроссплатформенный - Windows/Linux/MacOS X и др.
Разница в том, что теперь процедура ничего не возвращает (т. е. работает как процедура, а не как функция) и не тратится время на копирование в регистры, возвращаемых данных. Хоть это требует не очень много времени, но учитывая что процедура DrawFractal() вызывается 1653637 раз (если отладчик не врет), это позволило сэкономить немного времени.
Добавлено (27.09.2012, 19:28) --------------------------------------------- Я немного проанализировал код и по моему он не оптимален с точки зрения тестирования. В процедуру по ссылке передаются параметры, но не возвращаются. Это дало возможность схитрить, например, использовав const в параметрах процедур кода на дельфи. Кстати, если убрать const, то дельфи оказывается в хвосте по скорости выполнения кода. А ведь часто некоторые данные нужно возвращать через аргументы процедур/функций. Поэтому предлагаю доработать тест, добавив в структуру Vector поле Color в котором будет хранится цвет точки, выводимой на экран. Заодно и массив точек передавать по ссылке процедурам.
If Abs(dx) < Abs(dy) k = dx / dy If *vP2\y > *vP1\y y = *vP1\y x = *vP1\x While y < *vP2\y xx=x : yy=y Map(yy, xx) = *vP1\Color x + k y + 1 Wend *vP2\Color - x Else y = *vP2\y x = *vP1\x While y < *vP1\y xx=x : yy=y Map(yy, xx) = *vP2\Color x + k y + 1 Wend *vP1\Color + x EndIf Else k = dy / dx If *vP2\x > *vP1\x x = *vP1\x y = *vP1\y While x < *vP2\x xx=x : yy=y Map(yy, xx) = *vP2\Color y + k x + 1 Wend *vP1\Color + y Else x = *vP2\x y = *vP1\y While x < *vP1\x xx=x : yy=y Map(yy, xx) = *vP1\Color y + k x + 1 Wend *vP2\Color - y EndIf EndIf
Select Msg Case #WM_CHAR DestroyWindow_(hWnd) PostQuitMessage_(0) : Result = 0 Case #WM_CLOSE DestroyWindow_(hWnd) Case #WM_DESTROY PostQuitMessage_(0) : Result = 0 Default Result = DefWindowProc_(hWnd, Msg, wParam, lParam) EndSelect
Похоже что с файлообменника уже удалили файлы, перезалью. http://depositfiles.com/files/vipw13pu3 Код немного оптимизировал чтобы добиться большего быстродействия.
If Abs(dx) < Abs(dy) k = dx / dy If *vP2\y > *vP1\y y = *vP1\y x = *vP1\x While y < *vP2\y xx=x : yy=y Map(yy, xx) = $50BB50 x + k y + 1 Wend Else y = *vP2\y x = *vP1\x While y < *vP1\y xx=x : yy=y Map(yy, xx) = $40FF30 x + k y + 1 Wend EndIf Else k = dy / dx If *vP2\x > *vP1\x x = *vP1\x y = *vP1\y While x < *vP2\x xx=x : yy=y Map(yy, xx) = $A0AF20 y + k x + 1 Wend Else x = *vP2\x y = *vP1\y While x < *vP1\x xx=x : yy=y Map(yy, xx) = $609F30 y + k x + 1 Wend EndIf EndIf
Select Msg Case #WM_CHAR DestroyWindow_(hWnd) PostQuitMessage_(0) : Result = 0 Case #WM_CLOSE DestroyWindow_(hWnd) Case #WM_DESTROY PostQuitMessage_(0) : Result = 0 Default Result = DefWindowProc_(hWnd, Msg, wParam, lParam) EndSelect
Я же написал, что в случае с PureBasic теряется универсальность процедуры\функции . Ты видно тоже сразу недопонимаешь. Взгляни внимательно на пример ниже.
Да все я понял с первого раза. Только или вы не так объясняете или не поняли мой пример выше. Смотрите этот пример. И где подтверждение ваших слов?
добавлен лишний вызов той же процедуры но с другим типом:
Вы что-то путаете. Как раз тип один и тот же - Integer.
Quote (trew)
Как ты это сможешь без танцев прикрутить к своей процедуре. Теперь надеюсь понятно о чем речь.
Не, непонятно потому что прикрутил без танцев с бубном.
Quote (trew)
P.S. Поэтому я и написал что в FB возможна передача по ссылке и значению , а в PB только по значению (неважно что это за значение указатель или просто любое число)
Если вы не знаете основ PureBasic то лучше промолчите. Выше привел примеры передачи переменной и связанного списка по ссылке.
Поправлю я. При сравнении стараются использовать идентичные коды, а здесь я вижу существенное различие. Вот как будет выглядеть второй код на FB, переведенный на PureBasic.