Author Topic: PiraBASIC - Make.Games  (Read 18347 times)

piradyne

  • Guest
PiraBASIC - Make.Games
« on: January 30, 2014, 01:55:59 AM »


Download: Direct Link
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.

Cybermonkey

  • Administrator
  • *****
  • Posts: 0
Re: PiraBASIC - Make.Games
« Reply #1 on: January 30, 2014, 11:02:43 AM »
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!

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #2 on: January 30, 2014, 01:57:00 PM »
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.

GEEK

  • Guest
Re: PiraBASIC - Make.Games
« Reply #3 on: January 30, 2014, 03:14:31 PM »
This is very interesting!
Good work man!
 8)

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #4 on: January 30, 2014, 04:38:22 PM »
@GEEK
Thanks!

Cybermonkey

  • Administrator
  • *****
  • Posts: 0
Re: PiraBASIC - Make.Games
« Reply #5 on: February 07, 2014, 10:55:35 AM »
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?

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #6 on: February 07, 2014, 02:05:25 PM »
It is based on a highly modified version of paxCompiler.

Guilect

  • Guest
Re: PiraBASIC - Make.Games
« Reply #7 on: February 08, 2014, 12:56:46 AM »
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

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #8 on: February 08, 2014, 04:24:57 PM »
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 does or how HelpNDoc 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.

GEEK

  • Guest
Re: PiraBASIC - Make.Games
« Reply #9 on: February 09, 2014, 01:11:24 AM »
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

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #10 on: February 09, 2014, 01:36:21 AM »
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.

 
« Last Edit: February 09, 2014, 01:43:03 AM by piradyne »

Aurel

  • Guest
Re: PiraBASIC - Make.Games
« Reply #11 on: February 09, 2014, 04:13:32 PM »
Quote
I can't find an easy way for making syntax highlighting

hmm...and what about scintilla it is very easy and is open.

GEEK

  • Guest
Re: PiraBASIC - Make.Games
« Reply #12 on: February 09, 2014, 04:49:07 PM »
@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
« Last Edit: February 09, 2014, 05:17:50 PM by GEEK »

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #13 on: February 09, 2014, 05:49:30 PM »
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.

Aurel

  • Guest
Re: PiraBASIC - Make.Games
« Reply #14 on: February 09, 2014, 08:26:33 PM »
Quote
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:
Code: [Select]
'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 )