ADVERTISEMENT

MOVIEGOER: Lessons from MMFF 2025

Published Jan 8, 2026 08:35 am
People are saying lots of things for and against the recently held Metro Manila Film Festival 2025, the 51st edition of this long-held cultural tradition. While the 8 official entries are generally worth viewing, a few of them promising to become classics, it’s also being maligned as a flop-fest, box office-wise.
A reputable source tells me the film fest stands to make P700 million at the end of its two-week run. The targeted amount, however, pales in comparison to the gross receipts of previous festivals. MMFF has been extended to Jan. 14.
Here are some more notes and observations in wrapping up MMFF 2025:
Some people are saying Krystel Go’s win for Best Actress in I’m Perfect was a sympathy vote. I beg to disagree. I thought the newbie actress in her first film ever did more than justice to her character. She invested it with true-to-life nuances. You could sense she was totally committed to the role, that of a girl with Down Syndrome trying to live a normal life.
Was Angelica Panganiban of Unmarry robbed of the best actress award? It can’t be denied that the veteran actress rendered a truly moving performance, one that had just the right mix of vulnerability and candor, sympathy and empathy. Surely, she will bring home a trophy or three in other award bodies this 2026.
Exorbitant ticket prices are being blamed as a major reason why MMFF 2025 “flopped.” Mall cinemas charge between P400 and P500 per admission ticket, and even higher at so-called specialty cinemas like Directors’ Club. Such an elevated cost of watching movies is believed to have alienated the masses from watching the MMFF. Under the present economic circumstances, they can’t afford it. We may have forgotten that the success of previous MMFF editions was rooted mainly in the paying capacity and support of the masa, who came with their entire families, all the way to the extended ones.
It is said that the MMFF has become the domain of the middle class, the market that can now afford its exorbitant ticket prices.
Streaming sites like Netflix and Amazon are killing or have already killed the local film industry. Their easy accessibility to anyone with a mobile phone or any gadget has redirected people’s viewing habits from cinema to any place of their choice, at home especially. They’re also much cheaper and can be shared with every family member.
One suggestion that can possibly bring our movies closer to the masses and at the same time lower ticket prices is by screening MMFF films in plazas or public squares in the provinces. These screenings can charge minimal fees that are quite affordable to ordinary Filipinos. Such a move is similar to outreach programs being conducted by agencies of culture and arts.
A theater executive suggests the MMFF should encourage producers to submit more family-oriented films that can attract wider audiences. Preferred are films that have comedy and fantasy scenes in them. Truly entertaining films should make a comeback. Think Vic Sotto, according to the theater executive.
Still and all, like every Juan is saying, the government must support the film industry if it were to survive the dire situation it is in now.
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.