|
Post by Bluepixel on Dec 11, 2019 17:52:15 GMT -5
Hi there, I'm Bluepixel, as a fan of BASIC I eventually came across Liberty Basic and it seemed quite interesting. While I am a hobbyist programmer, I am planning to get into the Industry and create some commercial games or applications. So I wanted to see how Liberty Basic compares to other BASIC languages, Including the current one I'm using. Here are some questions I have: - Is it possible to create stand-alone EXE applications?
- In terms of Graphical capabilities, how does this compare?
- Would you recommend to use Liberty Basic for commercial apps/games?
- Can I create a basic 3D engine? (raycast/raytracing)
- Can I use GLSL Shaders?
- Can I use any Inline languages to mix in with my Liberty Basic?
- Does Liberty Basic support Dynamic Link Library and Header files? (.dll/.h)
- What would you recommend me to use Liberty Basic for?
- How does Liberty Basic compare to FreeBasic?
- How does Liberty Basic compare to GLBasic? (current one I'm using)
These are a lot of questions, sorry about that. But if anyone out there would like to take some time to do some research, and answer some of my questions than I would appreciate that a lot! Also if there are any cool features unique to Liberty Basic, please let me know! Cheers!
|
|
|
Post by Rod on Dec 11, 2019 19:01:10 GMT -5
Liberty is a nice BASIC who’s strength is allowing super easy GUI creation and program management. The graphics are easy as well and offer traditional 2D drawing. Forget voxels and 3D though you can access OpenGL.
You need to play with some sample software to get a feel for it. It has few limitations in terms of size and scope.
All in all it’s pretty cool for just programming. You can create .exe files that combine with its support .dlls to give a really easy distribution pack.
|
|
|
Post by sarossell on Dec 11, 2019 20:02:35 GMT -5
Welcome Bluepixel!
I'll try to answer each question in order as best I can.
Is it possible to create stand-alone EXE applications? -- Yes. Liberty BASIC can save a program in tokenized form which is an encrypted binary file. This file is paired with a runtime.exe and eight support files (DLLs and SLLs). By changing the name of the runtime.exe to your application name matching the tokenized file name, the 10 files comprise a safe application for distribution. These files can be packed together in a more appealing package using third-party installers or auto-exec packagers.
In terms of Graphical capabilities, how does this compare? -- What you can't do natively with Liberty BASIC, you can do by calling DLLs associated with OpenGL. I can't answer regarding 3D.
Would you recommend to use Liberty Basic for commercial apps/games? -- Absolutely. Liberty BASIC is robust and versatile with well over 300 commands or constants that can handle anything you might need in the real world.
Can I create a basic 3D engine? (raycast/raytracing) -- As I mentioned earlier, you got me on this one.
Can I use GLSL Shaders? -- Ditto. Not sure.
Can I use any Inline languages to mix in with my Liberty Basic? -- Well, sort of. There's no way to embed other code within Liberty BASIC, but you can run external batch files or apps. So, by running Perl or Python or a web browser, you can use other languages indirectly.
Does Liberty Basic support Dynamic Link Library and Header files? (.dll/.h) -- DLLs for sure. And very easily, I might add.
What would you recommend me to use Liberty Basic for? -- Name your poison. With large number functionality, DLL support, database integration, and port controls, you got scientific field and lab apps covered.Any and all business and educational software for sure. And games...just more logical than flashy.
How does Liberty Basic compare to FreeBasic? -- FreeBasic is somewhere between GLBasic and Liberty BASIC in terms of "seriousness". Not quite as flashy in the graphics department as GL, but has a full compiler. FreeBasic requires you to declare variable types though, which I hate.
How does Liberty Basic compare to GLBasic? (current one I'm using) -- GLBasic has it's uses and it's cross-platform compatibility is a nice touch. The next version of Liberty BASIC will include Linux, Mac and even the Raspberry Pi, but the current version (4.5.1) is PC only.
-- GLBasic is certainly more graphics and games oriented and has the ability to inline C/C++ for the really tricky stuff. It also has an eye on mobile devices. Liberty BASIC by comparison is more...serious. It can definitely be used to create games, but not intensely "flashy" ones.
-- Liberty BASIC also allows use of third-party code editors. I prefer to use the Sublime text editor. It allows me full control of my working environment for comfortable editing, debugging and running code with features like color themes, code folding, block indents, block comments, etc. As far as I recall, GLBasic has that blue nightmarish editor.
-- Most important for me is the fact that Liberty BASIC still manages to maintain syntax closest to original BASIC in spite of having over 300 commands or constants. I learned BASIC using the original Dartmouth IV on a teletype in 1981. (I'm an old fart). I lik it when BASIC is still actually the BASIC language and not some multi-generational evolved mish-mesh of "good" ideas. For example, a FOR..NEXT loop should be exactly that, not FOREACH..IN..LOCAL..AS..INTEGER. Yuck. (But that's just me yelling "Get off my lawn!")
-- Liberty BASIC also has the ability to handle massive numbers into the hundreds of digits long.
It's tough for me to find fault with Liberty BASIC if only because it's like a mighty redwood tree that has stood the test of time. Since the 1990's Liberty BASIC, under the caring and professional direction and development of Carl Gundel, has evolved and adapted to countless Windows versions while still maintaining the soul of the BASIC language. And soon that evolution will manifest with version 5.0 which will include cross-platform compatibility.
If I had to come up with anything negative at all to say about Liberty BASIC, it's that it's evolution and development has been at a more mature and methodical pace. You won't suffer four updates a month due to bug fixes with Liberty BASIC because time and effort is put in ahead of time to avoid that nonsense. Consequently, the time between updates may be longer than you would expect. I kind of like that, myself. But there are others who expect monthly builds for some reason.
FreeBASIC has been around 15 years and is only at version 1.06.0, which was release nine months ago. That bothers me a bit. I'd rather see it at version 4 or 5 by now.
GLBasic was originall called "The DiNGS Game Basic sequel", is currently at version 12.312, and hasn't seen an update in five years.
Liberty BASIC has been around for 27 years, is currently at version 4.5.1, and has been rock solid the entire time.
In the end, it really comes down to what you want to use a programming language for. Any of the three will work. In my opinion, if you can get it done with GLBasic, it might be prettier, but good luck getting support. FreeBASIC will get you there with decent support, documentation and slightly better graphics. Liberty BASIC will get you up and running quickly and easily with excellent support, decades of experienced programmers and sample code, and graphics sufficient to get things done.
Hope that helps!
:@)
|
|
|
Post by Bluepixel on Dec 12, 2019 5:42:24 GMT -5
@sarosell Wow.. Thanks a lot for the reply! With so much detail I will quickly be downloading the trial version, and next month the full version! And I must say, this community is very supportive and quick in answering your questions, I have used the GLBasic forums before, and while their answers are usefull 1/3 of the time, the other times the questions get answered indirect, resulting in a lot of posts, but still leaving the question unanswered. The GLBasic community is a great and friendly community, But sometimes these detailed answers are just what I'm looking for! Once again, thanks a lot for the detailed reply! I hope to become a part of your community soon!
|
|
|
Post by sarossell on Dec 12, 2019 6:16:53 GMT -5
|
|
ntech
New Member
Posts: 49
|
Post by ntech on Dec 13, 2019 10:21:16 GMT -5
As to making 3D games, yes, LibertyBasic can call OpenGL DLLs to achieve any sort of 3D rendering you may so desire. However, working directly with OpenGL is not easy, OpenGL is low-level, and to render 3D files you'll probably have to parse .obj, .mtl, and .png/.jpg yourself (then bind them to textures after populating a buffer with all the vertices, after accounting for vertex format).
|
|
|
Post by TaliaPerkins on Jan 17, 2020 15:50:09 GMT -5
Where are those specified, please? I've restored my main PC after a year long hiatus and am ready to resume an old project
|
|
|
Post by Rod on Jan 17, 2020 16:15:47 GMT -5
I think we are now up to 250mb of memory available. But you don’t need to keep everything in memory you have terrabytes of disc available. Give us an outline of your projects needs for a better response.
|
|
|
Post by sarossell on Jan 17, 2020 20:44:36 GMT -5
I think we are now up to 250mb of memory available. But you don’t need to keep everything in memory you have terrabytes of disc available. Give us an outline of your projects needs for a better response. Please forgive me if I'm mistaken, but I believe v.4.5.0 raised memory to 1 Gig.
|
|
|
Post by Chris Iverson on Jan 17, 2020 23:28:12 GMT -5
You're not mistaken, but 4.5.1 dropped the limit again due to it crashing on some systems, due to not being able to contiguously allocate 1GB of virtual memory. It's way larger than it was before 4.5, but it did get cut back down a bit.
|
|
|
Post by sarossell on Jan 18, 2020 5:02:59 GMT -5
You're not mistaken, but 4.5.1 dropped the limit again due to it crashing on some systems, due to not being able to contiguously allocate 1GB of virtual memory. It's way larger than it was before 4.5, but it did get cut back down a bit. Ah, after a little digging, it appears to have been set at 768 MB, yes?
|
|
|
Post by Rod on Jan 18, 2020 7:50:19 GMT -5
|
|
|
Post by sarossell on Jan 18, 2020 13:07:41 GMT -5
Using the following program, I adjusted the value n for the number of bytes to load until LB gave me an error. I was able to get up to 386 MB.
v.InFile$ = "Z:\Volumes\Data\Data Files\Parallels\Mint 19.pvm\Linux Mint 19-0.hdd\Linux Mint 19-0.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds" open v.InFile$ for binary as #InFile n = 1024*1024*386 a$ = input$(#InFile,n) print len(a$) print left$(a$,100) close #InFile end
|
|
|
Post by TaliaPerkins on Jan 18, 2020 14:41:38 GMT -5
Thank you all for your information.
My prior, now dead, PC had if I recall an i5 with 1TB HDD storage and 12GB of RAM, disk access would have taken a while.
The intended application asked about here was to create a physical model of hobby solid rocket motor combustion. The goal finite cell mesh had cubic cells in an array of 1024x1024x10240 cells. That's 10GB per mesh instance, total. Plan was to look at three slices of the mesh at a time, which would be 1024x1024x3, 3MB of data dealt with at a time, each center of the three slices being operated on looking at the 26 cells bordering it , reading 1MB and writing 1MB with each pass. Each slice would be its own file. Each A and B set of 10240 (20GB total) slices would alternate being the input and intermediate output. Final output would be GIFs showing grain regression against time, as well as propellant mass burnt per timeslice and a graph of thrust and with dry mass entered, integrated acceleration for a velocity and flight path.
The current PC to implement this is i7, 1TB SSD, and 64GB of RAM.
If the current LB implementation can deal with 256MB, I believe it will get it done.
|
|
|
Post by sarossell on Jan 18, 2020 15:44:23 GMT -5
I'd say so. Of course, I had to dump a portion of my childhood memories just to free up enough space in my brain to understand your last post.
|
|