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

piradyne

  • Guest
PiraBASIC - Make.Games
« on: February 14, 2014, 05:10:48 PM »


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 and OOP 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.

My name is Jarrod Davis, I'm the proprietor of Piradyne Games. A small indie developer and publisher of games and game development solutions.

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #1 on: February 14, 2014, 05:11:12 PM »
A small Asteroids Demo 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...

 

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #2 on: February 14, 2014, 05:11:54 PM »
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.


Offline John

  • Forum Support / SB Dev
  • Posts: 1677
    • ScriptBasic Open Source Project
Re: PiraBASIC - Make.Games
« Reply #3 on: February 14, 2014, 05:26:11 PM »
Welcome Jarrod!

I tried your asteroid demo under Wine and it worked fine. (sound worked as well)

 

piradyne

  • Guest
Re: PiraBASIC - Make.Games
« Reply #4 on: February 14, 2014, 05:50:40 PM »
Hi, thanks. Oh that is good to know it works under Wine. Thanks for testing there.

Offline wangrenxin

  • BASIC Developer
  • Posts: 90
    • BASIC8
Re: PiraBASIC - Make.Games
« Reply #5 on: December 14, 2015, 12:18:16 AM »
Hi Jarrod,

Exciting to read your post, but unfortunately I'm not able to access anything of your website from China, neither download links, images nor inputing http://piradyne.com/ manually.

I'm just curious, is PiraBASIC a freeware or commercial? Is the compiler a totally new or based on an existing?

I'm considering to do almost the samething to MY-BASIC for Windows. I'm going to add some libs such as Thread, DB, Encryption, File, Audio, HTTP, Network, Text, Zip, and the most important pert: Game Engine (including physics, scene management, resource management, rendering system, component based entity system etc.); further more, I'd like to add some high level abstraction of game algorithms and AI behaviours to make it as quick as possible to build from prototype to a done game of some specific categories.

I know it's a big task, especially for indie developer. It's very good to see I'm not alone on the way. Best wishes!

Offline Cybermonkey342

  • BASIC Developer
  • Posts: 31
Re: PiraBASIC - Make.Games
« Reply #6 on: December 14, 2015, 08:31:00 AM »
I think the site isn't available anymore ... (http://downforeveryoneorjustme.com/http://piradyne.com/)

Offline John

  • Forum Support / SB Dev
  • Posts: 1677
    • ScriptBasic Open Source Project
Re: PiraBASIC - Make.Games
« Reply #7 on: December 14, 2015, 02:42:55 PM »

Offline wangrenxin

  • BASIC Developer
  • Posts: 90
    • BASIC8
Re: PiraBASIC - Make.Games
« Reply #8 on: December 15, 2015, 06:02:11 PM »
So that's not just me. I'd like to know how is PiraBASIC going. Am I alone again now :(

Offline John

  • Forum Support / SB Dev
  • Posts: 1677
    • ScriptBasic Open Source Project
Re: PiraBASIC - Make.Games
« Reply #9 on: December 15, 2015, 06:13:20 PM »
Quote
Am I alone again now.

Why aren't you working with Cybermonkey342 and his implementation of your BASIC?

Offline wangrenxin

  • BASIC Developer
  • Posts: 90
    • BASIC8
Re: PiraBASIC - Make.Games
« Reply #10 on: December 15, 2015, 07:32:19 PM »
I think it's different practice. Cybermonkey342's implementation uses BASIC as the main language including main loop, I guess. I'll use BASIC as a DSL which drives the native engine. For the moment I'm developing prototype-based OOP to MB, maybe I'll write a detail plan description after that to see whether I'm on an interesting way.

Offline Cybermonkey342

  • BASIC Developer
  • Posts: 31
Re: PiraBASIC - Make.Games
« Reply #11 on: December 16, 2015, 11:27:01 AM »
Yes, I want it more retro like. No OOP is required. Although user defined types would be nice to have in MY-BASIC.
OTOH I am actually rather lucky with the Pulsar2D library for FreeBASIC which gives me an easy to use 2D game programming framework (rather retro like).
Here's an example:
Code: [Select]
' shows how to load an image and turn that into a sprite

#include once "pulsar2d.bi"

using p2d

TYPE player
x as integer
y as integer
image as p2d.sprite
END TYPE

dim win as p2d.window
dim image as p2d.image
dim grass as p2d.sprite
dim key as integer
dim knight as player

win = openwindow ("Simple Sprite Example",-1,-1,800,600)
setactivewindow (win)
setframetimer (100)

image = loadimage ("media/sprite.bmp")
knight.image = createsprite (image)
freeimage (image)

image = loadimage ("media/grass.bmp")
grass = createsprite (image)
freeimage (image)

knight.x=windowwidth()/2
knight.y=windowheight()/2
textsize (2)

do
key=p2d.getkey()
clearwindow()

if keystate (SDL_SCANCODE_RIGHT) then
knight.x=knight.x+1
end if
if keystate (SDL_SCANCODE_LEFT) then
knight.x=knight.x-1
end if
if keystate (SDL_SCANCODE_UP) then
knight.y=knight.y-1
end if
if keystate (SDL_SCANCODE_DOWN) then
knight.y=knight.y+1
end if

for i as integer = 0 to windowwidth() step spritewidth (grass)
for j as integer = 0 to windowheight() step spriteheight (grass)
drawsprite (grass,i,j,1,1,0,false,false)
next
next

drawsprite (knight.image,knight.x,knight.y,1,1,0,false,false)

color (255,255,255,255)
drawtext ("Cursor keys to move knight, ESC to quit",0,0)

sync()
loop until key = SDL_SCANCODE_ESCAPE
freesprite (knight.image)
freesprite (grass)
closewindow (win)
closeapplication()

Offline John

  • Forum Support / SB Dev
  • Posts: 1677
    • ScriptBasic Open Source Project
Re: PiraBASIC - Make.Games
« Reply #12 on: December 16, 2015, 06:06:52 PM »
Why use FreeBASIC at all? Doesn't standard C libraries and gcc do what you need?

Offline Cybermonkey342

  • BASIC Developer
  • Posts: 31
Re: PiraBASIC - Make.Games
« Reply #13 on: December 17, 2015, 11:05:36 AM »
Why use FreeBASIC at all? Doesn't standard C libraries and gcc do what you need?
Yes that's right, although I still would need to port Pulsar2D to C.

Offline John

  • Forum Support / SB Dev
  • Posts: 1677
    • ScriptBasic Open Source Project
Re: PiraBASIC - Make.Games
« Reply #14 on: December 17, 2015, 11:08:31 AM »
Maybe you could use FreeBASIC just for your Pulsar2D library and use gcc for everything else.