kthakore / frozen-bubble Goto Github PK
View Code? Open in Web Editor NEWMaking frozen bubble cross platform
Home Page: http://frozen-bubble.org
License: GNU General Public License v2.0
Making frozen bubble cross platform
Home Page: http://frozen-bubble.org
License: GNU General Public License v2.0
@@ -5460,82 +5467,91 @@
[...]
my $candy_init = sub {
if (defined($candy)) {
erase_image_from($imgbin{menu_logo}, $logox, $logoy, $back_start);
$candy = undef;
$imgbin{menu_logo} = add_image('menu/fblogo.png');
}
# calulating positions and creating new surfaces for logo animations
why did you remove that? candy switching is probably broken now (git blame tells you it is from 411670e). don't remove stuff you don't understand, ask git blame to tell you :)
Frozen Bubble has long been a poster child both Perl SDL, and yet it's never been installable from the CPAN.
This seems wrong, there's no real reason why it should be.
Port a late working version of FB1 into CPAN packaging format, and get it working. This will not only make a fun game available for everyone, but also act as a good Public Relations exercise, and prove that large popular games can be reliably distributed via the CPAN.
This diffs are simple and make FB friendlier on windows.
Currently the Makefile on FB 1.0 is not portable to other platforms.
@@ -4220,14 +4225,14 @@
if ($mylatitude && !$private) {
$index_selfspot >= 0 and print_spot($mylatitude, $mylongitude, 'free', $imgbin{netspot_self}[$index_selfspot], $back_selfspot);
$index_selfspot++;
if ($index_selfspot == @{$imgbin{netspot_self}}) {
if ($back_selfspot and $index_selfspot == @{$imgbin{netspot_self}}) {
===> I used && everywhere for logical "and" expressions, we should stick to one style
try to reduce cpu usage on end of network game, when waiting
(imported from TODO file)
it's broken (reported in my first email already)
Frozen Bubble requires SDL_Pango to run. The makefile needs pkg-config SDL_Pango to run. In windows we have to have it download the libraries and make a batch script in PATH that will give appropriate output to the file here.
http://github.com/kthakore/frozen-bubble/blob/master/c_stuff/Makefile.PL
bottom text in now aligned to the right:
http://zarb.org/~gc/t/back-nick-labels-broken.png
it should be only active for RTL languages (farsi for example)!
The files are used to tell Frozen Bubble where to build, but it is written for linux. We need a smarter way to detect this for perl distros regardless of platform.
http://github.com/kthakore/frozen-bubble/blob/master/Makefile
http://github.com/kthakore/frozen-bubble/blob/master/settings.mk
README now contains project history, replace with notes prior to downloading/installation
if( eval('use Compress::Bzip2; 1') ) {
isn't the perl idiom in such a case rather "eval { require Compress:Bzip2 };"?
In windows icons can only be a certain BMP type.
http://www.cpantesters.org/cpan/report/07104519-b19f-3f77-b713-d32bba55d77f
Note the mixture of slashes:
{{{C:\strawberry512RC0\cpan\build\Games-FrozenBubble-0.001_1-QatFx7\blib\arch/auto/Games/FrozenBubble/CStuff/CStuff.dll}}}
the error message is cyrillic and says: �е найден �казанн�й мод�л� (module not found)
The tester is named chorny on IRC and PAUSE
from j0s3ph gmail.com: MOTD, some server stats (total number of
games played, uptime)
(imported from TODO file)
after some time idle in main menu, an automatic demo is normally shown; on console the following line is printed (probably some messup in the file or missing file or whatever):
Incorrect line number 1 in savegame.
Color of launcher
(imported from PORT_TODO file)
the text rendering is not correct. compare side by side:
http://zarb.org/~gc/t/pango-rendering-fb-2.2.0.png
/ http://zarb.org/~gc/t/pango-rendering-fb-2.2.1_01.png
http://zarb.org/~gc/t/pango-rendering2-fb-2.2.0.png
/ http://zarb.org/~gc/t/pango-rendering2-fb-2.2.1_01.png
http://zarb.org/~gc/t/pango-rendering3-fb-2.2.0.png
/ http://zarb.org/~gc/t/pango-rendering3-fb-2.2.1_01.png
I'm suspecting the rendering is not done in RGBA mode (not alpha aware rendering)
in netgame lounge, the red selfspot:
http://zarb.org/~gc/t/selfspot.png
should be "growing" and "shrinking" but it's now blinking (and blinking strangely). compare with 2.2.0.
Confirm line 2811 to 2816.
Level %s in game
(imported from PORT_TODO file)
@@ -4659,32 +4664,32 @@
[...]
#- for RTL language, force beginning on the right, but non RTL content will appear wrongly so at least don't do for pure ASCII
if ($is_rtl && !is_only_ascii($text)) {
$text = "<U+202B><$mynick> $text";
$text = "?<$mynick> $text";
boo! bad bad style change
background of geolocalized nick labels are ugly in 2.2.1_01
http://www.frozen-bubble.org/data/fb2.2-geolocalized-nicks.png
/ http://zarb.org/~gc/t/back-nick-labels-broken.png
interesting tests coming to mind:
High score images
(imported from PORT_TODO file)
my $newlogosurface = SDL::Surface->new(SDL_SWSURFACE, $imgbin{menu_logo}->w * 1.1, $imgbin{menu_logo}->h * 1.1, 32, 0xFF000000, 0xFF0000, 0xFF00, 0xFF);
[...]
my $newlogosurface = SDL::Surface->new(SDL_ANYFORMAT, $imgbin{menu_logo}->w * 1.1, $imgbin{menu_logo}->h * 1.05, 32, 0xFF000000, 0xFF0000, 0xFF00, 0xFF);
we have to know what is the best for creating surfaces and use this for all.
$app->print useage in frozen bubble editor needs to be changed
(imported from PORT_TODO file)
convert troubleshooting/faq to POD
option to record the net chat messages
(imported from TODO file)
Add build action for server
(imported from PORT_TODO file)
add dbus notifications
(imported from TODO file)
@@ -4017,22 +4022,22 @@
}
sub save_back_spot {
put_image($$back, $x, $y);
===> is that last line change necessary? I don't see the point
put_image($back, $x, $y);
pop @update_rects;
Currently the makefile here
http://github.com/kthakore/frozen-bubble/blob/master/Makefile
requires the shell utilities of [ and ] to do the for loops for recursive building.
removing "if 0" makes that value not kept accross subroutines calls anymore (if 0 == "static" in C language for example)
Windows cannot use Fcntl macro F_GETFL
Your vendor has not defined Fcntl macro F_GETFL, used at
C:/strawberry/perl/site/lib/Games/FrozenBubble/Net.pm line 351.
+=head2 Fix your problems
+
+Most of the problems you can encounter with Frozen-Bubble don't require
+contacting us directly, and actually we can't fix most of them.
+
+First, please notice that we have developed this software on the
+GNU/Linux platform. There are ports to other operating systems, but we
+can't and don't want to support them. If you happen to be using
+Frozen-Bubble on FreeBSD, NetBSD, Windows or Mac OS X, please contact
+the authors of this "port" if you have trouble
+installing/running/whatever. Thank you.
That was created when we had really no connections with port authors. Now that you guys made the Windows etc ports, it might be worthwhile to list the contact info of these ports explicitely right after that section?
In most places, the FSF address is out of date. The copyright statement should look the same everywhere. Copy it from README @ f2065ce
Write an author test for this.
geolocate servers
(imported from TODO file)
find more changelogs (website News and Download section) for the ./Changes file
there's an issue in the build process. the server sources are built even if they're already built. for example, after a clean:
[gc@meuh /tmp/frozen-bubble] ./Build
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/fb-server.o server/fb-server.c
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/log.o server/log.c
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/tools.o server/tools.c
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/game.o server/game.c
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/net.o server/net.c
i586-mandriva-linux-gnu-gcc -fstack-protector -L/usr/local/lib -o server/fb-server server/fb-server.o server/log.o server/tools.o server/game.o server/net.o -lglib-2.0
Building Games-FrozenBubble
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -DXS_VERSION="2.202" -DVERSION="2.202" -fPIC -I/usr/include -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o lib/Games/FrozenBubble/CStuff.o lib/Games/FrozenBubble/CStuff.c
ExtUtils::Mkbootstrap::Mkbootstrap('blib/arch/auto/Games/FrozenBubble/CStuff/CStuff.bs')
i586-mandriva-linux-gnu-gcc -shared -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -L/usr/local/lib -o blib/arch/auto/Games/FrozenBubble/CStuff/CStuff.so lib/Games/FrozenBubble/CStuff.o -L/usr/lib -lSDL -lSDL_mixer -lSDL_Pango -L/usr/local/lib -L/usr/lib
[gc@meuh /tmp/frozen-bubble]
[gc@meuh /tmp/frozen-bubble]
[gc@meuh /tmp/frozen-bubble] ./Build
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/fb-server.o server/fb-server.c
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/log.o server/log.c
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/tools.o server/tools.c
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/game.o server/game.c
i586-mandriva-linux-gnu-gcc -I/usr/lib/perl5/5.10.1/i386-linux-thread-multi/CORE -fPIC -g -Wall -Werror -pipe -Iserver -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -o server/net.o server/net.c
i586-mandriva-linux-gnu-gcc -fstack-protector -L/usr/local/lib -o server/fb-server server/fb-server.o server/log.o server/tools.o server/game.o server/net.o -lglib-2.0
Building Games-FrozenBubble
[gc@meuh /tmp/frozen-bubble]
Work out if the SDL modules found in FB 1.0.0 fork are actually needed, or are defunct now.
overlook effect (the whitish thing in the background of selected menu item from "Start 1-player game menu") is missing.
from source code:
here's how it looks like in 2.2.0:
when starting a 2p game, there is a question "would you like to activate chain reaction". The input key typed by the enduser, used to be feedbacked (printed on screen) when game is loading, but is no longer.
Net Game -> Join Server -> Create Game -> wait for player -> Start game
rint_: main bin/frozen-bubble 4890 main::ANON 1 1538 Start game!
print_: main bin/frozen-bubble 4890 main::ANON 1 1538 Players in game: kthakore, somebody32, pAt2
print_: main bin/frozen-bubble 4219 main::smg_printstatus 1 1794 *** pAt2 joined the game!
print_: main bin/frozen-bubble 4219 main::smg_printstatus 1 1794 *** somebody32 joined the game!
print_: main bin/frozen-bubble 4219 main::smg_printstatus 1 1794 *** Game created - now you need to wait for players to join
print_: main bin/frozen-bubble 4219 main::smg_printstatus 1 1794 18:18 Gah my internet sux
print_: main bin/frozen-bubble 4219 main::smg_printstatus 1 1794 18:18 * xAngelx gives sam a pictal and amo
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb7ed78d0 (LWP 28700)]
0xb16c21a6 in Player_LoadGeneric_internal () from /usr/lib/libmikmod.so.2
(gdb) bt full
#0 0xb16c21a6 in Player_LoadGeneric_internal () from /usr/lib/libmikmod.so.2
No symbol table info available.
#1 0xb16c26bf in Player_LoadGeneric () from /usr/lib/libmikmod.so.2
No symbol table info available.
#2 0xb7b843f1 in MikMod_LoadSongRW ()
from /usr/local/share/perl/5.10.0/auto/share/dist/Alien-SDL/1.1_b85c4c18/lib/libSDL_mixer.so
No locals.
#3 0xb7b84438 in MOD_new_RW ()
from /usr/local/share/perl/5.10.0/auto/share/dist/Alien-SDL/1.1_b85c4c18/lib/libSDL_mixer.so
No locals.
#4 0xb7b8419a in MOD_new ()
from /usr/local/share/perl/5.10.0/auto/share/dist/Alien-SDL/1.1_b85c4c18/lib/libSDL_mixer.so
No locals.
#5 0xb7b80fab in Mix_LoadMUS ()
from /usr/local/share/perl/5.10.0/auto/share/dist/Alien-SDL/1.1_b85c4c18/lib/libSDL_mixer.so
No locals.
#6 0xb7b594eb in XS_SDL__Mixer__Music_load_MUS (my_perl=0x93ec008,
---Type to continue, or q to quit---
cv=0x98adbe8) at lib/SDL/Mixer/Music.xs:122
filename = 0x0
mixmusic =
sp =
ax =
#7 0x080b3c92 in Perl_pp_entersub ()
No symbol table info available.
#8 0x080b2069 in Perl_runops_standard ()
No symbol table info available.
#9 0x080b045c in perl_run ()
No symbol table info available.
#10 0x08063ebd in main ()
No symbol table info available.
(gdb)
There's no free-desktop desktop file in Frozen Bubble's package. When this file is used, Frozen Bubble shows up in the menus of any
freedesktop compliant window manager (e.g KDE/GNOME). It would be nice to add one to the tarball. Since there's none, most distributions add its own. If there was a freedesktop file in the tarball, translations of the menu items would be centralized too.
Here's the one used in the Pardus package (for an example): http://svn.pardus.org.tr/pardus/devel/applications/games/frozen-bubble/files/frozen-bubble.desktop
Doruk Fisek
(imported from TODO file)
move § ./lib/Games/FrozenBubble.pm#INSTALL into ./INSTALL
delete outdated information in ./INSTALL
PODify ./INSTALL
network game lounge: when user has been idle for a while (or on request) - make it possible to see whether switching server could be good?
(imported from TODO file)
Level Editor -> Save level
output in file /.frozen-bubble/levels/default-levelset failed: Permission denied
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.