SyntaxBomb - Indie Coders

General Category => Showcase => Topic started by: Ashmoor on August 07, 2020, 16:03:23

Title: Daydream Mosaics Released
Post by: Ashmoor on August 07, 2020, 16:03:23
After a long struggle, the first game I programmed myself has been released at gamehouse.com.  It's made in Blitzmax Vanilla and I ported it to MacOS using Blitzmax NG.

https://www.gamehouse.com/games/daydream-mosaics

Thanks to all the people who've been helping me along the way, especially Derron.
Title: Re: Daydream Mosaics Released
Post by: Derron on August 07, 2020, 16:17:34
I cannot remember to have helped (so much)? Maybe talking about someone else.


Great you shipped a game.

PS: umatrix blocks access to gamehouse, ublock blocks almost any content on the website ... ouch :D
Firefox (and chrome) do just drop a notice in the center, that the game requires Windows to run ...

My android phone browsers get "connection refused" messages ...

Windows 10 - Chrome: redirects to gamehouse.com website each time ... but it seems to work in "internet explorer"


Might you add some screenshots / youtube video .... stuff to your post? So we can have a look without above's issues?


bye
Ron
Title: Re: Daydream Mosaics Released
Post by: MikeHart on August 07, 2020, 16:18:59
Hi Ashmoor, great looking game you have there. No problems to reach your site with Chrome on Windows 10 Pro.
Title: Re: Daydream Mosaics Released
Post by: Derron on August 07, 2020, 16:25:20
As edited in: was able to watch the video with the "internet explorer" on Windows 10 ...

Looks pretty polished ... Only had one thing catching my eyes (in this quick glance): some buttons seem too "narrow" for the content ("Set Wallpaper" already covers the decoration element of the Button). Dunno if localization is planned (maybe in the "Deluxe" edition? :D) but if so: ensure buttons can be wider in certain cases.

And the Buttons "HINT" and "MENU" are All-Caps, while the other buttons are "normal cased" (with first char being Uppercase). The other buttons show the "nice font" while the upper-case almost look like some defaultfont :)
(Do not get it wrong - it is just a little nit picking on what I saw immediately when glancing through the video)


Good luck with sales and hopefully some encouraging user feedback.


bye
Ron
Title: Re: Daydream Mosaics Released
Post by: Steve Elliott on August 07, 2020, 16:27:48
Looks very pretty, congrats.
Title: Re: Daydream Mosaics Released
Post by: Ashmoor on August 07, 2020, 17:49:26
Here are some youtube videos:





@Derron "I cannot remember to have helped (so much)? Maybe talking about someone else."

You helped me many times, when I had problems with particles and with NG Banks and more.

"Only had one thing catching my eyes (in this quick glance): some buttons seem too "narrow" for the content ("Set Wallpaper" already covers the decoration element of the Button). Dunno if localization is planned (maybe in the "Deluxe" edition? :D) but if so: ensure buttons can be wider in certain cases."

You have a keen eye! :) All caps on the ingame interface is on purpose. As for the localization, you are right, a few buttons are too narrow so for next game I will have to implement a function for text scaling to make sure stuff does not overflow.

@MikeHeart thanks. Running through your book while learning Monkey helped quite a bit. So thanks again!

@Steve Elliott thanks!




Title: Re: Daydream Mosaics Released
Post by: Derron on August 07, 2020, 18:57:41
Some stuff from the closeups:
I think I told similar stuff to others already (think it was IWasAdam - who surely knows about fonts more than me): Fonts have a "baseline".
Think of this text line: "Letters not crossin' the baseline" - everything there ends above the "baseline". Letters like "gqpy" or uppercase letters like "Q" and characters like "/" are crossing the baseline.

Most users I came across "here" (and on blitzmax.com) who did not precreate the buttons (so button + text = single image) rely on centering their font via "TextHeight(mytext)".
This is not very pleasant to the eyes - except all characters on the button would cross the baseline. In your case it seems to be a manual "y" for the widgets (not auto-vertical-center) but dunno why - it looks a bit "too much towards the button top"). This can be desired ... but if not, this is how I approach it:

Check out the forum buttons here on syntaxbomb

(https://imgur.com/UqzwRCO.png)

See how all three buttons share "center" vertically -- when ignoring the "p" (which does cut the baseline).

In my game TVTower I use the approach to center based on some glyphs like "lmnBAC" or so - means you can estimate the letters "max height above baseline" while Ignoring stuff like "ÄÖÔ" and "qf/" etc. For "max char height" I use "gQ'_" - I do not use the Umlauts or "( )" which are a bit "over the top" in most cases.
This allows to have _nicely_ positioned text on widgets.

(https://imgur.com/dBfV7Qc.png)



Sorry if this "lengthy" post sounds like pointing out bad things in your project ... nah, do not get me wrong here! I just want to help you to even get better next time.



I really hope you will add some more "developer" details on how you progressed in development, on how assets there made (and what experience you gained there - contract work, own creations, ...).
also interesting is user feedback ... what people love, what bugs they found ... so all these little stories :D


Hope it does well for you (and your team?).


bye
Ron
Title: Re: Daydream Mosaics Released
Post by: MikeHart on August 07, 2020, 19:49:45
...
Title: Re: Daydream Mosaics Released
Post by: Steve Elliott on August 07, 2020, 20:06:06
.
.
.
Title: Re: Daydream Mosaics Released
Post by: Ashmoor on August 08, 2020, 04:13:32

"I think I told similar stuff to others already (think it was IWasAdam - who surely knows about fonts more than me): Fonts have a "baseline"."

Thanks, I already do what you said. I have a custom y center for buttons because my buttons have shadows most of the times and height/2 does not point to the propoer position. The y center is slightly lower than the actual visual center and I use "Stp" for getting text height, not the actual button caption. I do know a lot about typography so I tried avoiding the pitfalls you are talking about.

More about me/game dev

I have a masters degree in general design and have been making art for games for over 15 years. I've been working full time for Suricate Software on Jewel Match series since the original Jewel Match. Many of the games I've worked on have reached top 10 positions in the Big Fish Games charts and even 1st place at smaller websites like iWin or WildTangent.

I tried applying the lessons I learned while working with Suricate to Daydream Mosaics. I was prepared for localization and had all my texts in one place. Used virtual resolution for the wild amount of different screens out there. Did know the audience and had a release plan. My goal from the start was to make something work, ship it and iterate from there. I knew I could not make the game of my dreams so I tried to keep the scope within reach. I worked on it for two years, in my spare time and programmed everything from scratch. The core game mechanic was ready in about 3 months, it took the rest of the time to implement the UI, effects and other stuff as well as the content. My wife made the beautiful backdrops, I made the UI, logo and scripted the scenes. I also made the levels. We got music and sound effects from various sources, one of which was humble bundle!

I think the biggest struggle in today's game dev ecosystem is managing to put in the minimum "required" amount of stuff in a timely fashion. The market has pretty high standards, there are plenty of efficient tools and developers keep raising the bar. Subpar games make almost no money! If your game has about 30% the value of the top game in that genre/niche, it will not make 30% of the top game's revenue, it will probably make less than 1% of that. One has to be on par with top games and even then, stuff like brand power/awareness and fan base come into play. This is my opinion.

I struggled with lots of stuff and I had to learn math and programming practices. Thank god I ran through MikeHeart's book and I saw how a framework looks and started learning about callback functions and ECS and fixed rate logic and on and on. Spent a good amount of time on Khan Academy for math and developing the particle system. Spent a good amount of time looking into curves for animation ease in/out and bezier path motion. Another big part of my game was handling color "filters" because each level has a unique set of colors so I had to learn about pixel operations and how to change various aspects while preserving others. And another thing that is often overlooked in tutorials was interfacing with the system. Learning how to set a wallpaper in windows or MacOS or how to add an icon to my app took way more time than one expects and I still don't fully understand it.

Using external text files for setting up scenes is a great time saver because I can just press a key in the game and it will instantly refresh to show the updates instead of having to recompile the game.

I have come to terms with the fact that there will always be new stuff to learn and dealing with problems is part of the job. I still have a huge fear about code management and review. Many times I wanted to quit and thought I would not be able to overcome the next road block or that Blitzmax has no future and maybe I should switch to unity. You guys always replied to my questions and there were many valuable lessons that apply no matter what tools I use, so that kept me floating.


Here are some of the tools we used:
BLIde - I think it's a huge time saver and has made coding so much easier for me.
yEd - for logic diagrams - this saved me some time and kept bugs minimal
notePad++ - for scene scripting because it has custom syntax hilighting

Audacity - for audio editing

Photoshop, Vue, Daz Studio - for visual stuff
Title: Re: Daydream Mosaics Released
Post by: Derron on August 08, 2020, 07:12:00
Thanks for your reply. It contains a lot of interesting stuff and insights.



Buttons: I use the ninepatch approach for such widget graphics. You define dimensions of top left, top middle top right... Sprites with a black pixel line on the left...and one on the top.
Then I use black lines on the right and bottom to define content area.
So during design of the graphics you mark already the area to "center" in (ignoring the shadows etc).. It becomes the designer who decides where stuff happens, not the developer (alternatively you could define/config such stuff in some configuration file ... like with your levels)

(edit while on my desktop computer: added these pieces of my gui.png to let the visuals explain it a bit better than the text above)
(https://imgur.com/X0VWOq9.png)
Not obvious there? Ok check out this one there:
(https://imgur.com/NorLMF2.png)



Maybe for next game ;-)



Background graphics: if your wife wants to share some experience: let her write some sentences too. Tell her she did a great job and the backdrops on the screenshots look pretty vibrant and "full" of objects. Would be interesting to read what she did model, what "just" arrange ...and so on.


The logo contains some elements on the sides...done in Photoshop by you? Well done.
Also the slight animation...that it what I mean with polishing. People do not always recognize it but it makes things more "alive".


Hope it pays out.


Bye
Ron
Title: Re: Daydream Mosaics Released
Post by: Ashmoor on August 08, 2020, 22:18:28
"Buttons: I use the ninepatch approach for such widget graphics. "

I'm not sure I get this. So you have the corners which stay the same size, a horizontal fill that is repeated or scaled, a vertical fill that is repeated/scaled and a center part that is filling the button and you assign the content size in code and the button scales like that?

(https://i.ibb.co/7YtVNjp/UI.jpg) (https://imgbb.com/)

Regarding the art, I will come with more details. Yes, I digitally painted the logo details.
Title: Re: Daydream Mosaics Released
Post by: Derron on August 08, 2020, 22:38:59
Exactly.

You have nine "sub elements". They must not be equal sized amonst the rows or cols. The black lines on top and left define them. The lines on the right and bottom describe content borders (there no text is allowed) that way you can calculate the area im the final button/widget in which you draw your label.

So in you r image the white "cut lines" should be right on the start and end of the lines. If it was a height divided by three, then there would be no need for the black lines ;-).


These sprites could be then drawn at any size (bigger than the original size...or accept issues or overlaps). With the given sprite size and position you then could easily add content border left and top to your label position as offset. And the label dimension is widget size minus border sizes.

So:
LabelX = spriteX + spriteContentBorderLeft
LabelWidth = spriteW - spriteContentBorderLeft - spriteContentBorderRight.
Same for y and height.

It was (and is?) pretty common on android devices ... I took the idea from there.


My sprites also have an offset rect (defined in the xml). This is subtracted in calculations and also when rendering. This allows to eg add a glow to your widget (and sprite) without having to reposition it. But ensure to have enough space amongst buttons to avoid visual overlaps of these effects.

Bye
Ron
Title: Re: Daydream Mosaics Released
Post by: therevills on August 09, 2020, 00:55:53
Congrats on the release!  8)

Looks very much like a Jewel Match stylized game with the 3D backgrounds.
Title: Re: Daydream Mosaics Released
Post by: Ashmoor on August 11, 2020, 13:28:50
@therevills - Thanks! :)

@Derron

Here is some more info on the art side. Sometimes we start with a quick and rough concept that I paint. Adina (my wife) takes that concept to 3d. She uses Vue to set up the scene because Vue has great vegetation and general terrain libraries. There are trees that can be customized and plant ecosystems etc. She imports other 3d objects like the statues and flower pots. These mostly come from either free libraries or purchased daz studio assets but we can also model our own objects if we need stuff and are not pressed for time. The human statues in this scene are daz characters, posed and dressed in daz studio and textured in Vue.

The final step is a matte painting stage. We add real world photo elements (rocks, bark texture, forrest floor) and try to cover the shortcomings of 3d scenes. Tweak colors and contrast.


(https://i.ibb.co/y8tY2dJ/scene2-01-concept.jpg) (https://ibb.co/MRrGdZL)
(https://i.ibb.co/KLqNzb0/scene2-02-vue.jpg) (https://ibb.co/1dqsJ7v)
(https://i.ibb.co/2kBR6Sv/scene2-03-matte.jpg) (https://ibb.co/mc7dB09)

Title: Re: Daydream Mosaics Released
Post by: Derron on August 11, 2020, 16:41:51
Nice evolution of the background image.


I like such stuff - and the "stories" around it.



bye
Ron
Title: Re: Daydream Mosaics Released
Post by: iWasAdam on August 17, 2020, 14:56:56
how did you get on with the mac fullscreen/true fullscreen stuff?
Title: Re: Daydream Mosaics Released
Post by: Ashmoor on August 17, 2020, 16:37:03
"how did you get on with the mac fullscreen/true fullscreen stuff?"

Like in the example I posted here: https://www.syntaxbomb.com/index.php/topic,7971.0.html (https://www.syntaxbomb.com/index.php/topic,7971.0.html)