RetroBASIC
Retrogamecoding(.org) => Other Languages => Topic started by: piradyne on January 30, 2014, 01:55:59 AM
-
(http://piradyne.com/images/pirabasic.png)
Download: Direct Link (http://piradyne.com/temp/pirabasic-v1.r1.alpha-20140129.zip)
Version: 1.1.alpha
OVERVIEW
PiraBASIC™ Game Development System is a modern, modular, object oriented game programming language based on a modern version of BASIC®, a light-weight IDE (integrated development environment) and an advanced 2D game engine for Windows® PC. The engine uses Direct3D® for hardware accelerated rendering. It's robust, designed for easy use and suitable for making all types of 2D games and other graphic simulations. There is support for surfaces, textures, sprites, audio, streams, archives, configuration files, render targets, swap chains, databases and much more.
LANGUAGE FEATURES
- The language is modern, modular, object oriented and based on the easy to use BASIC programing language.
- Namespaces, structures, classes, inheritance and generic types.
- Static(shared) members, indexed properties, default parameters.
- Overloaded routines, operator overloading, delegates, exception handling, pointer types.
- Conditional compilation.
- Direct calling dll-defined routines.
- All calling conventions register, pascal, cdecl, stdcall, safecall are supported.
- DLMs (dynamic loadable modules)
IDE FEATURES
- Toggle Code Folding
- Line numbers
- Syntax Highlighting
- Project Options
- User Activation/Deactivation/Feedback from IDE (Help->Activation/Feedback)
- File operations: open, close, close all, save, save all, print/preview
- Edit operations: undo, redo, cut, copy, past, select all
- Search operations: find, find again, find/replace
- Compile/Compile & Run
- Param Hints (Shift+Ctrl+Space)
- Code Completion (Ctrl+Space)
- Code Templates (Ctrl+J)
- Char Popup (Ctrl+.)
- Sync Edit (Shift+Ctrl+J)
- Integrated CHM Help
- Editor Options (Options->Editor Options)
- FontStudio for textured font generation (Tools->FontStudio)
- Context sensitive Help (F1) in the editor (place the cursor on a keyword and press F1 or right click).
- EXE generation with version info and application icon
- Persistent editor state
GAME ENGINE FEATURES
- Intuitive, easy to use procedural API
- Uses Direct3D 9 for 2D hardware rendering.
- Uses 32bit surfaces and textures.
- Free scaling, rotation, alpha blending and other special effects.
- Windowed and full screen modes.
- Frame based timing support.
- Low-level INI file and high-level configuration file support.
- XML file support.
- Unified Streaming system (memory, file, EXE resources, zip archive).
- Can render to default application window or to a specified window handle.
- Advanced render target and swap chain support.
- Scalable textured fonts (includes a Unicode font editor tool).
- Graphic primitives (lines, circles, rects, points).
- Advanced polygon rendering (scale, rotate, control line segment visibility).
- Support for rendering large images (640x480, 800x600, 1024x768 for example).
- Advanced sprite management.
- PolyPoint™ collision system for fast precise collision detection.
- Mouse and keyboard input management.
- Unified audio system with support for WAV | MP3 | MID | OGG | MOD | IT | S3M | XM music formats.
- Comprehensive math routines (vectors, angles, line intersection, clipping).
- Log file support.
- SQL database support (MySQL local & remote | SQLite local only).
- High-level support for Actors, Entities and AI.
- Low-level system and common routines (dynamic DLL management, directory, EXE modification).
- CHM and HTML file support.
- Low-level (reliable UDP) networking.
- Support for textured light mapping.
This is a little side project I've been working on as a way to take a break (but still stay creative) from other current projects. If there is enough interest I plan to complete help file (a good portion of it is done already) and add the IDE and maybe continue development.
-
This looks really great. I wish it was crossplatform, though. May I ask which BASIC component you are using? (I guess it's done in Delphi?)
Keep up the great work!
-
Thanks.
It uses the same backend code generator as my other language products. This one uses a basic language front end with a syntax similar vb.net. The output can be cross-platform actually. If there is enough interest I will take it that direction.
-
This is very interesting!
Good work man!
8)
-
@GEEK
Thanks!
-
It uses the same backend code generator as my other language products. This one uses a basic language front end with a syntax similar vb.net. The output can be cross-platform actually. If there is enough interest I will take it that direction.
Is it coded by you or are you using an existing component e.g. paxCompiler or any other?
-
It is based on a highly modified version of paxCompiler.
-
Hello again Jared.
I remember back in 2011 I was a beta tester for one of your creations: PyroBASIC.
then
PyroGine
Simvector Games
SvBasic
SvPascal
SimVector Technologies
It appears that you have been honing your craft and have produced your best work so far.
I am always interested in BASIC programming languages.
However, I seem to have very little free time nowadays.
I would like to take your latest creation, PiraBASIC, for a spin.
Having the IDE for PiraBASIC would make using it quicker and more likely for all of us who just want to jump in and play with it for a bit.
Is it possible to release the IDE in its current state?
What is the license for PiraBASIC?
Cheers,
Guilect
-
Hey man, good to hear from you. How have you been?
Thanks for your interest. I will get a IDE in working order. It will be basic at first and I will slowly add the advanced features if there is enough interest.
The license will be: full version, all features free for non-commercial use. There will be no sort of DRM or activation etc. Just a small discrete notice in the corner of rendering screen. Like what fraps (http://fraps.com/) does or how HelpNDoc (http://www.helpndoc.com/) allows you to use the full version for personal use and add a small notice at the foot of each page. The commercial version will be very, very... I say again, very indie friendly. The license will help pay for the server bills, dev tools and continued development.
There will be a stable version and and alpha/beta version that is updated frequently. Like what how the guys are doing with Contruct2 (https://www.scirra.com/construct2).
-
you have my vote ;D
i'm trying to make my own ide for a self made scripting-language but the problem is
I can't find an easy way for making syntax highlighting :-\
maybe you can help me?
If you don't want to or have no time then I understand but a no you have and a yes you can get :P
-
Hi, cool thinks.
1. http://econtrol.ru/syntedit.html - for advanced features and what I used in my IDEs
2. http://tmssoftware.com/site/advmemo.asp - for a lighter weight editor component. It is easier to make a custom highlighter
3. The are both for Delphi and commercial.
EDIT: There is also TSynEdit which is free.
-
I can't find an easy way for making syntax highlighting
hmm...and what about scintilla it is very easy and is open.
-
@piradyne
thanks, I don't know so much about Delphi but I can try :)
hope these are free...
@Aurel
I know scintilla but it's not that simple at all :-\
searching for some kind of easy to use dll or something..
I'm very familiar with the AutoIT language (because it's based on the basic language)
thanks for the help!
geek
-
Oh I see... I develop in Delphi so all of those components are for Delphi and only the last one is freeware. AdvMemo is not as advanced as the EditorSDK but it is very easy to create a new highlighter.
I fixed a few bugs in the compiler and I want to get a new build out first with OOP and language examples and make sure I have a solid base and then start building on top of this foundation. What I do not want to do is add the latest and greatest new features and not fix existing bugs... arrrg. Don't you just hate when developers do this? I am suffering with an issue like this right now in one of my components I purchased and it's very difficult to get my stuff done when you have to work around bugs. So I made the decision early on that I would take it slow, get the foundation working good and slowly add features. So the feedback is very important. I will surely reward those that take the time and send in feedback. I will give you a free license if you want. Just talk to me and we can work something out.
-
I know scintilla but it's not that simple at all
you must be joking..right?
Did you ever look in every scintilla editor i have made?
scintilla is the easiest of any coloring controls....
something like this:
'Create Scintilla control ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
INT hlibsci,hsci,i
hlibsci = LoadLibrary "SciLexer.dll"
'print str(hlibsci)
INT rx,ry,rw,rh,ext,sci_style
rx=160: ry=80 : rw=466 : rh=340 : ext=0x200
sci_style = WS_CHILD|WS_VISIBLE|ES_SUNKEN
hsci = CreateWindowEx(ext,"Scintilla","",sci_style,rx,ry,rw,rh,win,sciID,0,0)
UpdateWindow hsci
'basic setings...
SENDMESSAGE(hsci, SCI_SETLEXER, SCLEX_OBASIC, 1)
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_DEFAULT,100)
'set sci backColor
'SENDMESSAGE(hsci, SCI_STYLESETBACK,32,RGB(252,248,220)) 'yellow
SENDMESSAGE(hsci, SCI_STYLESETBACK,32,0x00FFFFFF) 'white
SENDMESSAGE(hsci, SCI_STYLECLEARALL, 0, 1)
'set font
For i = 0 to 12
SENDMESSAGE (hsci, SCI_STYLESETFONT, i, "Courier New")
SENDMESSAGE (hsci, SCI_STYLESETSIZE, i, 10)
Next i
'set keyword colors
SENDMESSAGE(hsci, SCI_SETKEYWORDS, 3,scibrown) :'darkred
SENDMESSAGE(hsci, SCI_SETKEYWORDS, 1, sciblue ):'blue
'Margins ////////////////////////////////////////////////////////
'set number margin (for numnbers)
SendMessage(hsci, SCI_SETMARGINTYPEN, 0, SC_MARGIN_NUMBER)
SendMessage(hsci, SCI_SETMARGINWIDTHN, 0, 46)
'caret line
SENDMESSAGE hsci,SCI_SETCARETLINEBACK,RGB(235,235,255),0
'SENDMESSAGE hsci,SCI_SETCARETFORE,RGB(115,115,255),0
SENDMESSAGE hsci,SCI_SETCARETLINEVISIBLE,1,0
SetFocus win
'--------------------------------------------------------------------
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_LINECOMMENT,rgb(0,120,0))
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_BLOCKCOMMENT, rgb(0,120,0))
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_NUMBER,RGB(0,0,0))
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_KEYWORD,RGB(200,0,0))
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_TYPE,RGB(0,0,200)) :'keywords
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_SETID,rgb(160,0,0)):'orange/to dark blue
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_PREPROCESSOR,rgb(220,0,0))
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_STRING, 0x880088 )
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_OPERATOR,rgb(0,0,180))
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_IDENTIFIER, 0x000000 )
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_LABEL,rgb(0,0,0))
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_ASM, 0x555555 )
-
@piradyne,
ok, thanks for the help!
and that free licence sounds interesting ;)
@aurel,
you want me to understand all this? :
INT hlibsci,hsci,i
hlibsci = LoadLibrary "SciLexer.dll"
'print str(hlibsci)
INT rx,ry,rw,rh,ext,sci_style
rx=160: ry=80 : rw=466 : rh=340 : ext=0x200
sci_style = WS_CHILD|WS_VISIBLE|ES_SUNKEN
hsci = CreateWindowEx(ext,"Scintilla","",sci_style,rx,ry,rw,rh,win,sciID,0,0)
UpdateWindow hsci
SENDMESSAGE(hsci, SCI_SETLEXER, SCLEX_OBASIC, 1)
SENDMESSAGE(hsci, SCI_STYLESETFORE, SCE_OB_DEFAULT,100)
'set sci backColor
'SENDMESSAGE(hsci, SCI_STYLESETBACK,32,RGB(252,248,220)) 'yellow
SENDMESSAGE(hsci, SCI_STYLESETBACK,32,0x00FFFFFF) 'white
SENDMESSAGE(hsci, SCI_STYLECLEARALL, 0, 1)
For i = 0 to 12
SENDMESSAGE (hsci, SCI_STYLESETFONT, i, "Courier New")
SENDMESSAGE (hsci, SCI_STYLESETSIZE, i, 10)
Next i
............
-
Yes..
You say that you want editor for your own scripting language..right?
So if you know how to write scripting language you will probably understand how this work?
Anyway you can always visit my site or OxygenBasic site and download & compile
what you whish ..all is open source.
So you can modify ,change ,remove and simple tweak editor source to your needs...
-
I don't want to overtake this topic with my problems so I will answer in pm...
-
A small Asteroids Demo (http://piradyne.com/temp/pbabdemo.zip) made with PiraBASIC, fully implemented in OOP style showing some advanced features of PiraBASIC and the integrated game engine:
- Loading resources from a password protected ZIP archive
- Music streaming directly from password protected ZIP archive
- Music and sound effect playback
- PolyPoint collision detection (with auto trace)
- Parallax scrolling background
- Startup dialog (control basic engine features)
- Particle effects
- Keyboard & mouse input
- Texture & sprites
- Textured fonts
- And much more...
(http://piradyne.com/temp/pbabdemo.png)
-
COOL :)
-
Thanks!
Here is a peek at the IDE I'm working on. I was able to make good progress and it should be in the next release.
(http://piradyne.com/temp/pbds-1.2.alpha.png)
-
Personal i don't know if i would use the rules but it's Looking good :)
Can you maybe upload the part of the help file you already have?
Because I don't know how to start.. :P
-
Hi, check your PM.
-
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
1 - 12 bytes: TMoveArrayManager<System.Classes.TComponent> x 1, TMoveArrayManager<System.Classes.TCollectionItem> x 2, TIdStackWindows x 1, Unknown x 1
13 - 20 bytes: TLinks x 1, TNetBufs x 1, TIdHTTPProtocol x 1, UnicodeString x 9, Unknown x 1
21 - 28 bytes: TIconImage x 1, TMemoryStream x 1, TIdSMTPEnhancedCode x 2, TObjectList x 2, UnicodeString x 10
29 - 36 bytes: EAccessViolation x 1, TList<System.Classes.TComponent> x 1, TIdSASLEntries x 1, TIdReplySMTP x 2, TIdProxyConnectionInfo x 1, TList<System.Classes.TCollectionItem> x 2, TIdEntityRanges x 1, TIdReplyRFC x 2
45 - 52 bytes: TIdURI x 1
53 - 60 bytes: TPGUtils x 1, TIcon x 1
61 - 68 bytes: TPGDLL x 1, TPGLogFile x 1
69 - 76 bytes: TPGDisplayDevice x 1, TPGObjectList x 1
85 - 92 bytes: TTimer x 2, TStringList x 10, TPGAudioPlayer x 1, UnicodeString x 1
93 - 100 bytes: TPGNet x 1
101 - 108 bytes: TIdHeaderList x 8
117 - 124 bytes: Unknown x 1
125 - 132 bytes: TPGTimer x 1
133 - 140 bytes: TIdMetaHTTPEquiv x 1, UnicodeString x 1, Unknown x 1
141 - 148 bytes: TPGApplication x 1, UnicodeString x 1
173 - 188 bytes: UnicodeString x 1
189 - 204 bytes: TIdHTTPResponse x 1
221 - 236 bytes: TIdHTTPRequest x 1
349 - 380 bytes: TIdSMTP x 1
381 - 412 bytes: TIdHTTP x 1
877 - 956 bytes: TPGInput x 1
1053 - 1148 bytes: TNetCom x 1
The sizes of unexpected leaked medium and large blocks are: 41004, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 14380, 6444, 3116, 327660
---------------------------
OK
---------------------------
-
---------------------------
Application Error
---------------------------
Exception EAccessViolation in module atiumdva.dll at 00001445.
Access violation at address 6B201445 in module 'atiumdva.dll'. Read of address 00000004.
---------------------------
OK
---------------------------
-
Hi,
1. I have leak detection enabled during development so you will see these types of displays
2. All of that is because an exception occurred at some point so the test of the code that relates to those classes and components where not released.
3. So now the questions becomes where did the error occur. Can you tell me what you was trying to do that generated this error?
-
made a new project, typed some code and then closed the window..
when I closed it, the errors appeared.
-
Hi,
Well, for me to determine just what is going on I would need to know what code is trying to execute. For example, if you instantiate a class and did not free it, of if you try to free a the global application object which is disposed automatically, you can get these types of errors. So without seeing the code, I can not ascertain what is going wrong. You can PM me if you like.
Thanks
OR... if you create an console app (which is the default app type) and you force the console window close (by clicking the x button of the console window, not the main application window) rather than letting the app close down, you can get that spew of unreleased objects.
-
Where is "GEEK" with GREEN BRAIN ;D ;D ;D