Download Latest Version ag8jul24.7z (102.5 MB)
Email in envelope

Get an email when there's a new version of AdaGate

Home / 10dec2014_update
Name Modified Size InfoDownloads / Week
Parent folder
agsdl_10dec14.tar.gz 2014-12-09 229.9 MB
READMEag.txt 2014-12-09 12.9 kB
Totals: 2 Items   229.9 MB 0
AdaGate v 2.4 beta  10dec2014
=================================================================
What's new :
. both GNU/Linux and Mac OS-X binary executables included:
  adagate_osx, adagate_gnu;
. added level 5 epilog;
. reflective water in levels 2, 5;
. added GNU GPL statement to sources;
. code corrections/improvements;
. now allow key-left/key-right [in addition to mouse] rotations in epilog;
. added level 0 prolog;
. various corrections and improvements;
. now fully matches C++ version;
.................................................
. revised/restored background music that ends when wormhole becomes active;
. cleaned code, improved robustness;
..................... 30oct14 ...................................
. improved ZPM-barrel movement code;
. cleaned up libraries and added gnu-gpl statements where missing;
. equilibrated keyboard slew speed for computationally intensive fragment shaders;
............................. 3nov14 ........................................
. This update no longer requires mplayer, but uses instead a 
  very limited Ada interface to a few SFML-AUDIO functions.
..........................1.71 4nov14 ............................................
. updated OSX binary with statically-linked SFML 
  (so target Macs don't need SFML just to run AdaGate)
........................... 1.8 6nov14 ..........................................
. improved puzzle data structures to allow easy reconfiguring;
. inserted new puzzles with higher maze-like walls;  jump to enter;
. added user control of puzzle difficulty with optional command-line parm:
	1=easy, 2=default, 3=hard;
........................... 1.9 10nov14 ..........................................
. added kick sound;
. improved panning action using mouse or pad;
. prevented getting stuck near walls or ledges;
............................ 2.0 13nov14 .......................................
. improved sound system to handle 2 simultaneous sound loops in addition to other transient sounds;  eg. we now can hear music & water & portal guns;
. added auditory cues to signal ZPM solution and wormhole activation;
. made corrections to sound logic;  eg. wormhole hum quits if ZPM is knocked off of its receptacle;
. improved compilation scripts;
.......................... 2.1 18nov14 ................................
. added artifacts of an ancient mystery;  and a salute to an American heroine (level 0);
. improved level 0 skybox;
.......................... 2.2 26nov14 ................................................
. updated build scripts;  OSX-yosemite needed a workaround for GNAT to function;
. added gl_mirrored_repeat setting to libs/gl/gl.ads;
. significantly improved textures, especially sand;
.......................... 2.3 04dec14 ................................................
. discovered yosemite somehow prevents Ada from achieving highDPI (cpp is Ok);
. advise to Maverick people using Ada:  do NOT upgrade yet to yosemite!
. greatly reduced coding complexity and graphical burden for several textured objects;
  this now allows OSX binaries to run smoothly on older Macs.
. improved appearance of Electra, starfish, crab;
. corrected island waves so they don't follow the viewpoint;
. genericized several objects to simplify code;
. raised water level in epilog so it looks better;
. improved level 2 reflective water;
....................... 2.4 10dec14 ................................................
. discarded use of GLFW3 in favor of SDL2 because of a thin binding made available by
  Dan Vazquez <danva994@student.liu.se>;  see https://github.com/danva994/AdaSDL2
. Now, after this conversion to SDL2, highDPI works again even under Yosemite!
. improved water reflections in prolog;

==========================================
what is special about this project?
==========================================
Uses fully modern OpenGL methods in Ada using textures, shaders and uniforms that achieves version 3.3 core profile contexts in a way that is sufficiently mainstream that it easily compiles and runs on both GNU/Linux and Mac OS-X systems.  This project serves as a testbed for learning the complexities of modern OpenGL and GLSL.

Absolutely no coding efforts or compromises have been made to accomodate proprietary operating systems except for learning how to compile on OS-X.

It relies on a thin SDL2 binding from Dan Vazquez, a thin OpenGL binding from "Lumen", a PNG reader by Stephen Sanguine, and SFML-Audio.

If one defines "modern" OpenGL to mean version 3.3 or beyond, then this may be the most functionally advanced demonstration of "modern" OpenGL using Ada to be found.  The code itself is far from elegant, but serves as a working example, whose focus is learning OpenGL.  The Ada bindings used are thin, so the relationship to C++ methodology is quite transparent.  Developers should note that these Ada bindings are usable as a standalone library for most any OpenGL project.

==============================================================
AdaGate Game Introduction
==============================================================

AdaGate is a combination of Portal and Sokoban, written almost completely in Ada.

While exploring a remote south-seas island you make a startling historical discovery. But before you can report your findings, an operational stargate transports you into a curious sequence of dungeons. Your escape will depend upon the logical rearrangement of weird power cells, called Zero Point Modules [ZPMs], that can roll in only two directions.

You can shoot your portal guns at the dungeon walls to create a wormhole. But, in order to activate it, all of the ZPMs must be bumped into their sockets. Now, you can only PUSH the ZPMs. That means you will fail if you roll one into a corner or against a wall.

Escape each level and find your way back to a beautiful lake on the surface.

There are 4 levels, not counting the beach prolog (level 0) and lake epilog (level 5), and each game resumes at the level attained in the previous game.
 

-----------------------------------------------------------
-- controls
-----------------------------------------------------------
Pointing is by touch pad or mouse;

Movement is by arrow keys:
		<Up>
<Lt>	<Dn>	<Rt>

L-key,R-key, or  
L-Mouse,R-Mouse : shoot the two portal-guns

<space> = jump up/over short walls

<esc> = exit;  

To begin, at the command line type "adagate_gnu k <enter>",
where k=1,2,3 (1=easy,2=default,3=hard)
If you ever get stuck inside a short wall, simply jump out & forward.

------------------------------------------------------------



required for running:
-------------------------------------------
. graphics card & driver that supports OpenGL version 3.3 or later;
. GNU/Linux or a Mac running OS-X (even Yosemite);
. libopenal.so, libsndfile.so (see ./libs/) if using GNU/Linux,
. OpenAL framework if using OSX
. note that the delivered executables were statically linked
  to SDL2/sfml so you should not need them just to run.
. adagate_gnu is executable on GNU/Linux.
. adagate_osx is the executable for Mac OS-X.


Open Source libraries required for building:
-------------------------------------------
. Mac (Mavericks or Yosemite) or GNU/Linux
. a recent gnat compiler
. SDL2 libraries
. openal, sndfile, SFML libraries on GNU/Linux,
. OpenAL, SFML frameworks on OSX;
. libs directory contains Ada interface bindings
. see example scripts linux: lcmp.sh, dlcmp.sh;  osx: ocmp.sh
. Note that the Ada interface to SFML-AUDIO (snd4ada_hpp.ads) was created with the command:
  "g++ -c -fdump-ada-spec -C snd4ada.hpp"
  which references a minimalistic C++ utility snd4ada.


Running adagate:
-------------------------------------------
You'll need the "data" directory local to the executable.  It contains shaders, skyboxes, sound and texture data.  

"adagate_gnu K", where K=1..3 is an optional parameter that chooses the degree of difficulty [DOD] (1=easiest, 2=default, 3=hardest).

If you succeed at DOD= 2 or 3 then you are ready to try WorldCupSokerban!

By the way, you are, ideally, supposed to solve the sokoban puzzles without jumping back onto the walls.  If you do, somebody might say that you are cheating!  Conversely, if you jump into the puzzle at the wrong place, it might be impossible.
======================================================================
Open source developers are welcome to help improve or extend this game.

Feel free to send comments or suggestions:

<fastrgv@gmail.com>
October 2014


===========================================================================
===========================================================================

Build instructions for AdaGate:

Four [pre-compiled] binary executables are provided, two for gnu/linux and two for OS-X.  The static executables are intended to have minimal runtime requirements:  adagate_gnu_static and adagate_osx_static.  The other linux binary, adagate_gnu_dynamic, is intended to run in the presence of the directory "libs", which contains some dynamically loaded libraries that can be, but need not be present on a target system:  GL, OpenAL, SFML, SDL2, etc.  Finally, the mac binary adagate_osx_frameworks was produced in, and assumes the presence of frameworks for SDL2 and SFML.

No Makefile is provided, but several build scripts are offered.  They all require the installation of several libraries.  Suggestions for improving the build process are welcome.

-------------------------------------------------------
MacOSX:

ocmps.sh:  static build script for generating a portable executable that will run on most OS-X platforms whether or not they have non-standard libraries SDL2 or SFML installed.  I used this to build the executable that I deliver, named adagate_osx_static.  ocmpf.sh build the frameworks version.

------------------------------------------------------
GNU/Linux:  

lcmp.sh:  builds a portable executable that tries to minimize required libraries on a target machine.  I use this to build the static [gnu/linux] executable that I deliver, named adagate_gnu_static.

dlcmp.sh:  utilizes the relocatable libraries that I deliver in this bundle under ./libs/.  I use this to build the dynamic [gnu/linux] executable that I deliver, which should run in the presence of ./libs, whether or not your system has the libraries in it.  This was used to create the executable named adagate_gnu_dynamic.





==============================================================================
============ legal mumbo jumbo: ==============================================
==============================================================================


AdaGate itself is covered by the GNU GPL v3 as indicated in the sources:

--
-- Copyright (C) 2014  <fastrgv@gmail.com>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You may read the full text of the GNU General Public License
-- at <http://www.gnu.org/licenses/>.
--
========================================================================
Media Files for AdaGate:


General Note
============
The particular choices of sound, image, and shader files (*.fs) delivered are not essential to the function of the game and are easily replaced.  This software is primarily intended as a tutorial example of modern OpenGL methods.  The only requirements are that sounds be in WAV format, images be in PNG format, and shaders be updated to GLSL 330 specifications.  Skybox images have an additional constraint, they must also have a 90x90 degree field of view [for a correct perspective], and all 6 must have the same pixel dimensions.


SoundFiles (*.wav)
===========
...are all from freesound.org and are thus covered by the Creative Commons Attribution noncommercial license documented in the accompanying file creativeCommons.txt.  see also:
http://creativecommons.org/licenses/by-nc/3.0/legalcode/


ImageFiles 
==========
...for textures were freely [no copyright indications] available on google images.


ShaderFiles 
===========
Some fragment shader files used were downloaded from http://glslsandbox.com/ and put under ./data/ that are not labelled as GNU-GPL'd, namely:

clouds.fs, darkwater3.fs, starfield3.fs, volcano.fs

...these appear to contain comments from their authors so were left unchanged.


SkyBoxes 
========
Two were used from www.redsorceress.com/skybox.html.  They were modified, using gimp, to make the horizon lower for technical reasons.

Source: READMEag.txt, updated 2014-12-09